[PATCH 2/4] omap: Make uncompress code and DEBUG_LL code generic
Russell King - ARM Linux
linux at arm.linux.org.uk
Sat Jan 16 14:33:13 EST 2010
On Sat, Jan 16, 2010 at 11:18:20AM -0800, Tony Lindgren wrote:
> * Russell King - ARM Linux <linux at arm.linux.org.uk> [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
...
?
More information about the linux-arm-kernel
mailing list