[PATCH 2/4] omap: Make uncompress code and DEBUG_LL code generic

Pandita, Vikram vikram.pandita at ti.com
Mon Jan 18 20:50:20 EST 2010



>-----Original Message-----
>From: linux-omap-owner at vger.kernel.org [mailto:linux-omap-owner at vger.kernel.org] On Behalf Of Tony
>Lindgren
>Sent: Saturday, January 16, 2010 2:00 PM
>To: Russell King - ARM Linux
>Cc: linux-arm-kernel at lists.infradead.org; linux-omap at vger.kernel.org
>Subject: Re: [PATCH 2/4] omap: Make uncompress code and DEBUG_LL code generic
>
>* Russell King - ARM Linux <linux at arm.linux.org.uk> [100116 11:31]:
>> 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.
>
>Sorry, I meant doing the detection each time addruart is run, not
>for each character.
>
>> Why not do something like this:
>>
>> 		.pushsection .data
>> omap_uart_phys:	.word 0
>> omap_uart_virt:	.word 0

Also We may need a:
	 omap_uart_shift: .word 0 
Since shift also varies depending on different omap boards (external debug board shift=1, internal omap has shift=2)

Bingo..I think this was the key solution to the problem.
I had posted long ago similar kind of implementation [1] 
and I wish rmk had given this nice idea then :)

[1] http://marc.info/?l=linux-omap&m=125269221820632&w=2
	See this part: 
	+		.align
	+		.type   __phy_uart_addr, #object
	+__phy_uart_addr:       .word   0xFF
	+		.type   __virt_uart_addr, #object
	+__virt_uart_addr:       .word   0xFF


>> 		.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
>> ...
>>
>> ?
>
>Sounds good to me. Will play with them and post refreshed patches.
>
>Regards,
>
>Tony
>--
>To unsubscribe from this list: send the line "unsubscribe linux-omap" in
>the body of a message to majordomo at vger.kernel.org
>More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the linux-arm-kernel mailing list