[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