[U-Boot] [PATCH 1/2] arm: Add Kconfig symbols used for Linux asm compatibility

Rather than change asm files that come from Linux, add the symbols to Kconfig. Since one of the symbols is for thumb2 builds, make CPU_V7M always select them.
Signed-off-by: Phil Edworthy phil.edworthy@renesas.com --- arch/arm/Kconfig | 10 ++++++++++ arch/arm/lib/Makefile | 2 -- 2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 2a3a36e..2793651 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -19,6 +19,15 @@ config HAS_VBAR config HAS_THUMB2 bool
+# Used for compatibility with asm files copied from the kernel +config ARM_ASM_UNIFIED + bool + default y + +# Used for compatibility with asm files copied from the kernel +config THUMB2_KERNEL + bool + # If set, the workarounds for these ARM errata are applied early during U-Boot # startup. Note that in general these options force the workarounds to be # applied; no CPU-type/version detection exists, unlike the similar options in @@ -128,6 +137,7 @@ config CPU_V7 config CPU_V7M bool select HAS_THUMB2 + select THUMB2_KERNEL select SYS_CACHE_SHIFT_5
config CPU_PXA diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile index f162c14..6e1c436 100644 --- a/arch/arm/lib/Makefile +++ b/arch/arm/lib/Makefile @@ -72,8 +72,6 @@ ifneq (,$(findstring -mabi=aapcs-linux,$(PLATFORM_CPPFLAGS))) extra-y += eabi_compat.o endif
-asflags-y += -DCONFIG_ARM_ASM_UNIFIED - # some files can only build in ARM or THUMB2, not THUMB1
ifdef CONFIG_$(SPL_)SYS_THUMB_BUILD

The branch instruction only has an 11-bit relative target address, which is sometimes not enough.
Signed-off-by: Phil Edworthy phil.edworthy@renesas.com --- v3: - Move CONFIG_ARM_ASM_UNIFIED and CONFIG_THUMB2_KERNEL to Kconfig v2: - Use W(b) instead of ldr+mov. Using this macro requires CONFIG_ARM_ASM_UNIFIED and CONFIG_THUMB2_KERNEL to be defined. --- arch/arm/cpu/armv7m/start.S | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/arch/arm/cpu/armv7m/start.S b/arch/arm/cpu/armv7m/start.S index 49f2720..890c773 100644 --- a/arch/arm/cpu/armv7m/start.S +++ b/arch/arm/cpu/armv7m/start.S @@ -5,10 +5,12 @@ * SPDX-License-Identifier: GPL-2.0+ */
+#include <asm/assembler.h> + .globl reset .type reset, %function reset: - b _main + W(b) _main
.globl c_runtime_cpu_setup c_runtime_cpu_setup:

On Thu, Jun 01, 2017 at 07:33:29AM +0100, Phil Edworthy wrote:
The branch instruction only has an 11-bit relative target address, which is sometimes not enough.
Signed-off-by: Phil Edworthy phil.edworthy@renesas.com
Applied to u-boot/master, thanks!

On Thu, Jun 01, 2017 at 07:33:28AM +0100, Phil Edworthy wrote:
Rather than change asm files that come from Linux, add the symbols to Kconfig. Since one of the symbols is for thumb2 builds, make CPU_V7M always select them.
Signed-off-by: Phil Edworthy phil.edworthy@renesas.com
Applied to u-boot/master, thanks!

Hi Albert/Tom,
-----Original Message----- From: Phil Edworthy [mailto:phil.edworthy@renesas.com] Sent: Wednesday, May 31, 2017 11:33 PM To: Albert Aribaud albert.u.boot@aribaud.net Cc: Tom Rini trini@konsulko.com; Vikas MANOCHA vikas.manocha@st.com; Kamil Lulko kamil.lulko@gmail.com; u- boot@lists.denx.de; Phil Edworthy phil.edworthy@renesas.com Subject: [PATCH 1/2] arm: Add Kconfig symbols used for Linux asm compatibility
Rather than change asm files that come from Linux, add the symbols to Kconfig. Since one of the symbols is for thumb2 builds, make CPU_V7M always select them.
Signed-off-by: Phil Edworthy phil.edworthy@renesas.com
arch/arm/Kconfig | 10 ++++++++++ arch/arm/lib/Makefile | 2 -- 2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 2a3a36e..2793651 100644 --- a/arch/arm/Kconfigl +++ b/arch/arm/Kconfig @@ -19,6 +19,15 @@ config HAS_VBAR config HAS_THUMB2 bool
+# Used for compatibility with asm files copied from the kernel config +ARM_ASM_UNIFIED
- bool
- default y
Is every arm arch (arm720, arm926 etc) assembly code written for unified ? Otherwise we might have run-time side effects.
Cheers, Vikas
+# Used for compatibility with asm files copied from the kernel config +THUMB2_KERNEL
- bool
# If set, the workarounds for these ARM errata are applied early during U-Boot # startup. Note that in general these options force the workarounds to be # applied; no CPU-type/version detection exists, unlike the similar options in @@ -128,6 +137,7 @@ config CPU_V7 config CPU_V7M bool select HAS_THUMB2
- select THUMB2_KERNEL select SYS_CACHE_SHIFT_5
config CPU_PXA diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile index f162c14..6e1c436 100644 --- a/arch/arm/lib/Makefile +++ b/arch/arm/lib/Makefile @@ -72,8 +72,6 @@ ifneq (,$(findstring -mabi=aapcs-linux,$(PLATFORM_CPPFLAGS))) extra-y += eabi_compat.o endif
-asflags-y += -DCONFIG_ARM_ASM_UNIFIED
# some files can only build in ARM or THUMB2, not THUMB1
ifdef CONFIG_$(SPL_)SYS_THUMB_BUILD
2.7.4

On Fri, Jun 09, 2017 at 12:07:40AM +0000, Vikas MANOCHA wrote:
Hi Albert/Tom,
-----Original Message----- From: Phil Edworthy [mailto:phil.edworthy@renesas.com] Sent: Wednesday, May 31, 2017 11:33 PM To: Albert Aribaud albert.u.boot@aribaud.net Cc: Tom Rini trini@konsulko.com; Vikas MANOCHA vikas.manocha@st.com; Kamil Lulko kamil.lulko@gmail.com; u- boot@lists.denx.de; Phil Edworthy phil.edworthy@renesas.com Subject: [PATCH 1/2] arm: Add Kconfig symbols used for Linux asm compatibility
Rather than change asm files that come from Linux, add the symbols to Kconfig. Since one of the symbols is for thumb2 builds, make CPU_V7M always select them.
Signed-off-by: Phil Edworthy phil.edworthy@renesas.com
arch/arm/Kconfig | 10 ++++++++++ arch/arm/lib/Makefile | 2 -- 2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 2a3a36e..2793651 100644 --- a/arch/arm/Kconfigl +++ b/arch/arm/Kconfig @@ -19,6 +19,15 @@ config HAS_VBAR config HAS_THUMB2 bool
+# Used for compatibility with asm files copied from the kernel config +ARM_ASM_UNIFIED
- bool
- default y
Is every arm arch (arm720, arm926 etc) assembly code written for unified ? Otherwise we might have run-time side effects.
I could be missing something, but this is only used by <asm/assembler.h> and in turn only by arch/arm/lib/*.S, where we already had been defining this.

Hi Tom,
-----Original Message----- From: Tom Rini [mailto:trini@konsulko.com] Sent: Thursday, June 08, 2017 5:12 PM To: Vikas MANOCHA vikas.manocha@st.com Cc: Phil Edworthy phil.edworthy@renesas.com; Albert Aribaud albert.u.boot@aribaud.net; Kamil Lulko kamil.lulko@gmail.com; u-boot@lists.denx.de Subject: Re: [PATCH 1/2] arm: Add Kconfig symbols used for Linux asm compatibility
On Fri, Jun 09, 2017 at 12:07:40AM +0000, Vikas MANOCHA wrote:
Hi Albert/Tom,
-----Original Message----- From: Phil Edworthy [mailto:phil.edworthy@renesas.com] Sent: Wednesday, May 31, 2017 11:33 PM To: Albert Aribaud albert.u.boot@aribaud.net Cc: Tom Rini trini@konsulko.com; Vikas MANOCHA vikas.manocha@st.com; Kamil Lulko kamil.lulko@gmail.com; u- boot@lists.denx.de; Phil Edworthy phil.edworthy@renesas.com Subject: [PATCH 1/2] arm: Add Kconfig symbols used for Linux asm compatibility
Rather than change asm files that come from Linux, add the symbols to Kconfig. Since one of the symbols is for thumb2 builds, make CPU_V7M always select them.
Signed-off-by: Phil Edworthy phil.edworthy@renesas.com
arch/arm/Kconfig | 10 ++++++++++ arch/arm/lib/Makefile | 2 -- 2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 2a3a36e..2793651 100644 --- a/arch/arm/Kconfigl +++ b/arch/arm/Kconfig @@ -19,6 +19,15 @@ config HAS_VBAR config HAS_THUMB2 bool
+# Used for compatibility with asm files copied from the kernel +config ARM_ASM_UNIFIED
- bool
- default y
Is every arm arch (arm720, arm926 etc) assembly code written for unified ? Otherwise we might have run-time side effects.
I could be missing something, but this is only used by <asm/assembler.h> and in turn only by arch/arm/lib/*.S, where we already had been defining this.
Yes, you are right. I was under the impression that asm/assembler.h is being used by all arm archs everywhere like startup code, cache mgt etc.
Cheers, Vikas
-- Tom
participants (3)
-
Phil Edworthy
-
Tom Rini
-
Vikas MANOCHA