Browse Source

[ARM] 3459/1: ixp23xx: fix debug serial macros for big-endian operation

Patch from Lennert Buytenhek

The debug-8250 macros do byte accesses, which means that if we're in
big-endian mode, we need to logically OR the UART address with 3, as
the LSB byte lane (where UART data and status is transferred) has the
highest byte address in the word when we are in big-endian mode.

It's unclear why this problem didn't surface earlier.

Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Lennert Buytenhek 19 years ago
parent
commit
9323557975
1 changed files with 3 additions and 0 deletions
  1. 3 0
      include/asm-arm/arch-ixp23xx/debug-macro.S

+ 3 - 0
include/asm-arm/arch-ixp23xx/debug-macro.S

@@ -17,6 +17,9 @@
 		tst	\rx, #1				@ mmu enabled?
 		tst	\rx, #1				@ mmu enabled?
 		ldreq	\rx, =IXP23XX_PERIPHERAL_PHYS 	@ physical
 		ldreq	\rx, =IXP23XX_PERIPHERAL_PHYS 	@ physical
 		ldrne	\rx, =IXP23XX_PERIPHERAL_VIRT	@ virtual
 		ldrne	\rx, =IXP23XX_PERIPHERAL_VIRT	@ virtual
+#ifdef __ARMEB__
+		orr	\rx, \rx, #0x00000003
+#endif
 		.endm
 		.endm
 
 
 #define UART_SHIFT	2
 #define UART_SHIFT	2