On Sat, Jan 16, 2010 at 11:18:20AM -0800, Tony Lindgren wrote: > * Russell King - ARM Linux <linux@xxxxxxxxxxxxxxxx> [100116 01:33]: > > On Fri, Jan 15, 2010 at 05:35:15PM -0800, Tony Lindgren wrote: > > > diff --git a/arch/arm/mach-omap1/include/mach/debug-macro.S b/arch/arm/mach-omap1/include/mach/debug-macro.S > > > index 23e4724..0174858 100644 > > > --- a/arch/arm/mach-omap1/include/mach/debug-macro.S > > > +++ b/arch/arm/mach-omap1/include/mach/debug-macro.S > > > @@ -15,18 +15,71 @@ > > > > > > #include <plat/serial.h> > > > > > > +omap_uart_phys: .word 0x0 > > > +omap_uart_virt: .word 0x0 > > > > I assume that you have no plans for XIP kernel support on OMAP, since > > these will be placed in the .text section, and is therefore read-only > > on XIP kernels. > > Did not think of that.. Maybe some addruart_premable solution here would. > Or adding \tmp register for addruart and just do the detection for each > character. How does doing it per-character help? The code is: ENTRY(printascii) addruart r3 b 2f 1: waituart r2, r3 senduart r1, r3 busyuart r2, r3 teq r1, #'\n' moveq r1, #'\r' beq 1b 2: teq r0, #0 ldrneb r1, [r0], #1 teqne r1, #0 bne 1b mov pc, lr Your wait/send/busy macros are just using the already provided base address which comes via r3 from addruart. That much is fine. I'm at a loss to understand why you think moving the address-getting functionality out of addruart into the individual wait/send/busy macros is going to help in any way. Why not do something like this: .pushsection .data omap_uart_phys: .word 0 omap_uart_virt: .word 0 .popsection .macro addruart, rx ... + ldreq \rx, =omap_uart_phys @ physical base address + ldrne \rx, =omap_uart_virt @ virtual base ldr \rx, [\rx] + cmp \rx, #0 @ is port configured? + bne 99f @ already configured ... ? -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html