[ARM] 3459/1: ixp23xx: fix debug serial macros for big-endian operation
authorLennert Buytenhek <buytenh@wantstofly.org>
Sun, 9 Apr 2006 21:20:57 +0000 (22:20 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 9 Apr 2006 21:20:57 +0000 (22:20 +0100)
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>
include/asm-arm/arch-ixp23xx/debug-macro.S

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