[U-Boot] [PATCH 0/1] fix ARM DCC support for ARMv7 based cores (e.g. CortexA)

arm_dcc.c supported ARMv4 (ARM7) to ARMv6 (ARM11) correctly. All recent CortexA/ARMv7 based cores share the mrc/mcr coprocessor calls of ARMv6. Due to the missing #ifdef the ARM7/ARMv4 calls are used as soon as CONFIG_CPU_V7 is defined. This results in an undefined instruction exception.
Alexander Merkle (1): fix ARM DCC support for ARMv7 based cores (e.g. CortexA)
drivers/serial/arm_dcc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)

Signed-off-by: Alexander Merkle alexander.merkle@lauterbach.com ---
drivers/serial/arm_dcc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/serial/arm_dcc.c b/drivers/serial/arm_dcc.c index 5dfb02f..e777737 100644 --- a/drivers/serial/arm_dcc.c +++ b/drivers/serial/arm_dcc.c @@ -29,9 +29,9 @@ #include <common.h> #include <serial.h>
-#if defined(CONFIG_CPU_V6) +#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V7) /* - * ARMV6 + * ARMV6 & ARMV7 */ #define DCC_RBIT (1 << 30) #define DCC_WBIT (1 << 29)

Hello Alexander,
On Mon, 26 Jan 2015 14:13:16 +0100, Alexander Merkle alexander.merkle@lauterbach.com wrote:
arm_dcc.c supported ARMv4 (ARM7) to ARMv6 (ARM11) correctly. All recent CortexA/ARMv7 based cores share the mrc/mcr coprocessor calls of ARMv6. Due to the missing #ifdef the ARM7/ARMv4 calls are used as soon as CONFIG_CPU_V7 is defined. This results in an undefined instruction exception.
IIUC, the only board that uses ARM DCC serial is the Zynq, and it gets it to work by #define'ing CONFIG_CPU_V6 in its include config file despite being ARMv7. Am I right in assuming this #define was actually a hack to get around the issue you're fixing here, and that it can and should be removed from the Zinq include? If so, can you please post a v2 of your patch which does the removal too?
(BTW, no need for a cover letter when there's only one patch in the "series" IMO)
Amicalement,

Hello Alexander,
On Sun, 1 Feb 2015 10:02:47 +0100, Albert ARIBAUD albert.u.boot@aribaud.net wrote:
Hello Alexander,
On Mon, 26 Jan 2015 14:13:16 +0100, Alexander Merkle alexander.merkle@lauterbach.com wrote:
arm_dcc.c supported ARMv4 (ARM7) to ARMv6 (ARM11) correctly. All recent CortexA/ARMv7 based cores share the mrc/mcr coprocessor calls of ARMv6. Due to the missing #ifdef the ARM7/ARMv4 calls are used as soon as CONFIG_CPU_V7 is defined. This results in an undefined instruction exception.
IIUC, the only board that uses ARM DCC serial is the Zynq, and it gets it to work by #define'ing CONFIG_CPU_V6 in its include config file despite being ARMv7. Am I right in assuming this #define was actually a hack to get around the issue you're fixing here, and that it can and should be removed from the Zinq include? If so, can you please post a v2 of your patch which does the removal too?
(BTW, no need for a cover letter when there's only one patch in the "series" IMO)
Ping.
Amicalement,
participants (2)
-
Albert ARIBAUD
-
Alexander Merkle