[PATCH 3/3] ARM: early_printk: use printascii() rather than printch()
Nicolas Pitre
nicolas.pitre at linaro.org
Tue Oct 31 10:48:01 PDT 2017
On Tue, 31 Oct 2017, Russell King - ARM Linux wrote:
> On Tue, Oct 31, 2017 at 01:06:35PM -0400, Nicolas Pitre wrote:
> > That's easy to veryfy with this patch:
>
> Unfortunately not that easy, this patch breaks printch.
Right, missed that.
New patch below:
diff --git a/arch/arm/kernel/debug.S b/arch/arm/kernel/debug.S
index ea9646cc2a..0d1cef4b6e 100644
--- a/arch/arm/kernel/debug.S
+++ b/arch/arm/kernel/debug.S
@@ -79,25 +79,28 @@ hexbuf: .space 16
ENTRY(printascii)
addruart_current r3, r1, r2
- b 2f
-1: waituart r2, r3
- senduart r1, r3
- busyuart r2, r3
- teq r1, #'\n'
- moveq r1, #'\r'
- beq 1b
-2: teq r0, #0
+1: teq r0, #0
ldrneb r1, [r0], #1
teqne r1, #0
- bne 1b
- ret lr
+ reteq lr
+ teq r1, #'\n'
+ bne 2f
+ mov r1, '\r'
+ waituart r2, r3
+ senduart r1, r3
+ busyuart r2, r3
+ mov r1, '\n'
+2: waituart r2, r3
+ senduart r1, r3
+ busyuart r2, r3
+ b 1b
ENDPROC(printascii)
ENTRY(printch)
addruart_current r3, r1, r2
mov r1, r0
mov r0, #0
- b 1b
+ b 2b
ENDPROC(printch)
#ifdef CONFIG_MMU
>
> > diff --git a/arch/arm/kernel/debug.S b/arch/arm/kernel/debug.S
> > index ea9646cc2a..40023a4871 100644
> > --- a/arch/arm/kernel/debug.S
> > +++ b/arch/arm/kernel/debug.S
> > @@ -79,18 +79,21 @@ hexbuf: .space 16
> >
>
> The new code is:
>
> > ENTRY(printascii)
> > addruart_current r3, r1, r2
> > +1: teq r0, #0
> > ldrneb r1, [r0], #1
> > teqne r1, #0
> > + reteq lr
> > + teq r1, #'\n'
> > + bne 2f
> > + mov r1, '\r'
> > + waituart r2, r3
> > + senduart r1, r3
> > + busyuart r2, r3
> > + mov r1, '\n'
> > +2: waituart r2, r3
> > + senduart r1, r3
> > + busyuart r2, r3
> > + b 1b
> > ENDPROC(printascii)
>
> and printch jumps to the 1: label with r0 = 0 and r1 = character. Your
> change has the effect that the "reteq" will always be taken when called
> by printch.
>
> --
> RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
> FTTC broadband for 0.8mile line in suburbia: sync at 8.8Mbps down 630kbps up
> According to speedtest.net: 8.21Mbps down 510kbps up
>
More information about the linux-arm-kernel
mailing list