From: Ard Biesheuvel <ardb@kernel.org> To: Geert Uytterhoeven <geert+renesas@glider.be> Cc: "Russell King" <linux@armlinux.org.uk>, "Nicolas Pitre" <nico@fluxnic.net>, "Marek Szyprowski" <m.szyprowski@samsung.com>, "Dmitry Osipenko" <digetx@gmail.com>, "Linus Walleij" <linus.walleij@linaro.org>, "Arnd Bergmann" <arnd@arndb.de>, "Eric Miao" <eric.miao@nvidia.com>, "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>, "Lukasz Stelmach" <l.stelmach@samsung.com>, "Stephen Boyd" <sboyd@kernel.org>, "Chris Brandt" <chris.brandt@renesas.com>, "Linux ARM" <linux-arm-kernel@lists.infradead.org>, Linux-Renesas <linux-renesas-soc@vger.kernel.org>, "Linux Kernel Mailing List" <linux-kernel@vger.kernel.org> Subject: Re: [PATCH v10 1/3] ARM: uncompress: Add be32tocpu macro Date: Thu, 3 Dec 2020 13:49:49 +0100 [thread overview] Message-ID: <CAMj1kXEKdRGQXFh9qMgrWcZnoW5s8Bj5TaKqStU=w1qJ-Nu9zA@mail.gmail.com> (raw) In-Reply-To: <20201203121916.2870975-2-geert+renesas@glider.be> Hallo Geert, On Thu, 3 Dec 2020 at 13:19, Geert Uytterhoeven <geert+renesas@glider.be> wrote: > > DTB stores all values as 32-bit big-endian integers. > Add a macro to convert such values to native CPU endianness, to reduce > duplication. > > Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> > --- > v10: > - New. > --- > arch/arm/boot/compressed/head.S | 26 ++++++++++++-------------- > 1 file changed, 12 insertions(+), 14 deletions(-) > > diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S > index 835ce64f1674c9a2..aabdc544c03aafdc 100644 > --- a/arch/arm/boot/compressed/head.S > +++ b/arch/arm/boot/compressed/head.S > @@ -165,6 +165,16 @@ > orr \res, \res, \tmp1, lsl #24 > .endm > > + .macro be32tocpu, val, tmp > +#ifndef __ARMEB__ > + /* convert to little endian */ > + eor \tmp, \val, \val, ror #16 > + bic \tmp, \tmp, #0x00ff0000 > + mov \val, \val, ror #8 > + eor \val, \val, \tmp, lsr #8 > +#endif > + .endm > + Thanks for cleaning this up. This patch is fine as is. Reviewed-by: Ard Biesheuvel <ardb@kernel.org> However, I would like to note that, since we are touching this code, we might do it properly. (Given the v10, feel free to ignore or defer to a later time) - put this into asm/assembler.h so other .S files can use it - use rev instructions when supported - factor out the difference between xx_to cpu and bswap I.e., .macro bswap32, val, tmp .if __LINUX_ARM_ARCH__ >= 6 rev \val, \val .else eor \tmp, \val, \val, ror #16 bic \tmp, \tmp, #0x00ff0000 mov \val, \val, ror #8 eor \val, \val, \tmp, lsr #8 .endif .endm .macro be32tocpu, val, tmp #ifndef __ARMEB__ bswap32 \val, \tmp #endif .endm .macro le32tocpu, val, tmp #ifdef __ARMEB__ bswap32 \val, \tmp #endif .endm This would allow us to reuse this macro in arch/arm/crypto/aes-cipher-core.S, and replace the __rev macro it defines. > .section ".start", "ax" > /* > * sort out different calling conventions > @@ -345,13 +355,7 @@ restart: adr r0, LC1 > > /* Get the initial DTB size */ > ldr r5, [r6, #4] > -#ifndef __ARMEB__ > - /* convert to little endian */ > - eor r1, r5, r5, ror #16 > - bic r1, r1, #0x00ff0000 > - mov r5, r5, ror #8 > - eor r5, r5, r1, lsr #8 > -#endif > + be32tocpu r5, r1 > dbgadtb r6, r5 > /* 50% DTB growth should be good enough */ > add r5, r5, r5, lsr #1 > @@ -403,13 +407,7 @@ restart: adr r0, LC1 > > /* Get the current DTB size */ > ldr r5, [r6, #4] > -#ifndef __ARMEB__ > - /* convert r5 (dtb size) to little endian */ > - eor r1, r5, r5, ror #16 > - bic r1, r1, #0x00ff0000 > - mov r5, r5, ror #8 > - eor r5, r5, r1, lsr #8 > -#endif > + be32tocpu r5, r1 > > /* preserve 64-bit alignment */ > add r5, r5, #7 > -- > 2.25.1 >
WARNING: multiple messages have this Message-ID (diff)
From: Ard Biesheuvel <ardb@kernel.org> To: Geert Uytterhoeven <geert+renesas@glider.be> Cc: "Arnd Bergmann" <arnd@arndb.de>, "Nicolas Pitre" <nico@fluxnic.net>, "Stephen Boyd" <sboyd@kernel.org>, "Linus Walleij" <linus.walleij@linaro.org>, "Lukasz Stelmach" <l.stelmach@samsung.com>, "Russell King" <linux@armlinux.org.uk>, "Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>, Linux-Renesas <linux-renesas-soc@vger.kernel.org>, "Chris Brandt" <chris.brandt@renesas.com>, "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>, "Eric Miao" <eric.miao@nvidia.com>, "Dmitry Osipenko" <digetx@gmail.com>, "Linux ARM" <linux-arm-kernel@lists.infradead.org>, "Marek Szyprowski" <m.szyprowski@samsung.com> Subject: Re: [PATCH v10 1/3] ARM: uncompress: Add be32tocpu macro Date: Thu, 3 Dec 2020 13:49:49 +0100 [thread overview] Message-ID: <CAMj1kXEKdRGQXFh9qMgrWcZnoW5s8Bj5TaKqStU=w1qJ-Nu9zA@mail.gmail.com> (raw) In-Reply-To: <20201203121916.2870975-2-geert+renesas@glider.be> Hallo Geert, On Thu, 3 Dec 2020 at 13:19, Geert Uytterhoeven <geert+renesas@glider.be> wrote: > > DTB stores all values as 32-bit big-endian integers. > Add a macro to convert such values to native CPU endianness, to reduce > duplication. > > Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> > --- > v10: > - New. > --- > arch/arm/boot/compressed/head.S | 26 ++++++++++++-------------- > 1 file changed, 12 insertions(+), 14 deletions(-) > > diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S > index 835ce64f1674c9a2..aabdc544c03aafdc 100644 > --- a/arch/arm/boot/compressed/head.S > +++ b/arch/arm/boot/compressed/head.S > @@ -165,6 +165,16 @@ > orr \res, \res, \tmp1, lsl #24 > .endm > > + .macro be32tocpu, val, tmp > +#ifndef __ARMEB__ > + /* convert to little endian */ > + eor \tmp, \val, \val, ror #16 > + bic \tmp, \tmp, #0x00ff0000 > + mov \val, \val, ror #8 > + eor \val, \val, \tmp, lsr #8 > +#endif > + .endm > + Thanks for cleaning this up. This patch is fine as is. Reviewed-by: Ard Biesheuvel <ardb@kernel.org> However, I would like to note that, since we are touching this code, we might do it properly. (Given the v10, feel free to ignore or defer to a later time) - put this into asm/assembler.h so other .S files can use it - use rev instructions when supported - factor out the difference between xx_to cpu and bswap I.e., .macro bswap32, val, tmp .if __LINUX_ARM_ARCH__ >= 6 rev \val, \val .else eor \tmp, \val, \val, ror #16 bic \tmp, \tmp, #0x00ff0000 mov \val, \val, ror #8 eor \val, \val, \tmp, lsr #8 .endif .endm .macro be32tocpu, val, tmp #ifndef __ARMEB__ bswap32 \val, \tmp #endif .endm .macro le32tocpu, val, tmp #ifdef __ARMEB__ bswap32 \val, \tmp #endif .endm This would allow us to reuse this macro in arch/arm/crypto/aes-cipher-core.S, and replace the __rev macro it defines. > .section ".start", "ax" > /* > * sort out different calling conventions > @@ -345,13 +355,7 @@ restart: adr r0, LC1 > > /* Get the initial DTB size */ > ldr r5, [r6, #4] > -#ifndef __ARMEB__ > - /* convert to little endian */ > - eor r1, r5, r5, ror #16 > - bic r1, r1, #0x00ff0000 > - mov r5, r5, ror #8 > - eor r5, r5, r1, lsr #8 > -#endif > + be32tocpu r5, r1 > dbgadtb r6, r5 > /* 50% DTB growth should be good enough */ > add r5, r5, r5, lsr #1 > @@ -403,13 +407,7 @@ restart: adr r0, LC1 > > /* Get the current DTB size */ > ldr r5, [r6, #4] > -#ifndef __ARMEB__ > - /* convert r5 (dtb size) to little endian */ > - eor r1, r5, r5, ror #16 > - bic r1, r1, #0x00ff0000 > - mov r5, r5, ror #8 > - eor r5, r5, r1, lsr #8 > -#endif > + be32tocpu r5, r1 > > /* preserve 64-bit alignment */ > add r5, r5, #7 > -- > 2.25.1 > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-12-03 12:50 UTC|newest] Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-12-03 12:19 [PATCH v10 0/3] ARM: uncompress: Validate start of physical memory against passed DTB Geert Uytterhoeven 2020-12-03 12:19 ` Geert Uytterhoeven 2020-12-03 12:19 ` [PATCH v10 1/3] ARM: uncompress: Add be32tocpu macro Geert Uytterhoeven 2020-12-03 12:19 ` Geert Uytterhoeven 2020-12-03 12:49 ` Ard Biesheuvel [this message] 2020-12-03 12:49 ` Ard Biesheuvel 2020-12-04 9:43 ` Geert Uytterhoeven 2020-12-04 9:43 ` Geert Uytterhoeven 2020-12-03 16:26 ` Nicolas Pitre 2020-12-03 16:26 ` Nicolas Pitre 2020-12-03 12:19 ` [PATCH v10 2/3] ARM: uncompress: Add OF_DT_MAGIC macro Geert Uytterhoeven 2020-12-03 12:19 ` Geert Uytterhoeven 2020-12-03 12:50 ` Ard Biesheuvel 2020-12-03 12:50 ` Ard Biesheuvel 2020-12-03 16:27 ` Nicolas Pitre 2020-12-03 16:27 ` Nicolas Pitre 2020-12-04 9:43 ` Geert Uytterhoeven 2020-12-04 9:43 ` Geert Uytterhoeven 2020-12-03 12:19 ` [PATCH v10 3/3] ARM: uncompress: Validate start of physical memory against passed DTB Geert Uytterhoeven 2020-12-03 12:19 ` Geert Uytterhoeven 2020-12-03 13:14 ` Ard Biesheuvel 2020-12-03 13:14 ` Ard Biesheuvel 2020-12-03 14:04 ` Russell King - ARM Linux admin 2020-12-03 14:04 ` Russell King - ARM Linux admin 2020-12-03 14:29 ` Geert Uytterhoeven 2020-12-03 14:29 ` Geert Uytterhoeven 2020-12-03 16:34 ` Nicolas Pitre 2020-12-03 16:34 ` Nicolas Pitre
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to='CAMj1kXEKdRGQXFh9qMgrWcZnoW5s8Bj5TaKqStU=w1qJ-Nu9zA@mail.gmail.com' \ --to=ardb@kernel.org \ --cc=arnd@arndb.de \ --cc=chris.brandt@renesas.com \ --cc=digetx@gmail.com \ --cc=eric.miao@nvidia.com \ --cc=geert+renesas@glider.be \ --cc=l.stelmach@samsung.com \ --cc=linus.walleij@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-renesas-soc@vger.kernel.org \ --cc=linux@armlinux.org.uk \ --cc=m.szyprowski@samsung.com \ --cc=nico@fluxnic.net \ --cc=sboyd@kernel.org \ --cc=u.kleine-koenig@pengutronix.de \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.