[PATCH 13/17] ARM: pl01x debug code endian fix
Ben Dooks
ben.dooks at codethink.co.uk
Fri Feb 8 18:17:43 EST 2013
The PL01X debug code needs to take into account which endian mode the
processor is running in. If it is big-endian, ensure the data is swapped
appropriately.
Note, we could do this slightly more efficiently if we have an macro to
do the necessary swap for the bits used by test.
Signed-off-by: Ben Dooks <ben.dooks at codethink.co.uk>
---
arch/arm/include/asm/hardware/debug-pl01x.S | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/arm/include/asm/hardware/debug-pl01x.S b/arch/arm/include/asm/hardware/debug-pl01x.S
index f9fd083..6f3a003 100644
--- a/arch/arm/include/asm/hardware/debug-pl01x.S
+++ b/arch/arm/include/asm/hardware/debug-pl01x.S
@@ -12,18 +12,26 @@
*/
#include <linux/amba/serial.h>
+#ifdef __ARMEB__
+#define ARM_BE(x...) x
+#else
+#define ARM_BE(x..)
+#endif
+
.macro senduart,rd,rx
strb \rd, [\rx, #UART01x_DR]
.endm
.macro waituart,rd,rx
1001: ldr \rd, [\rx, #UART01x_FR]
+ ARM_BE( rev \rd, \rd )
tst \rd, #UART01x_FR_TXFF
bne 1001b
.endm
.macro busyuart,rd,rx
1001: ldr \rd, [\rx, #UART01x_FR]
+ ARM_BE( rev \rd, \rd )
tst \rd, #UART01x_FR_BUSY
bne 1001b
.endm
--
1.7.10.4
More information about the linux-arm-kernel
mailing list