ARM: 8703/1: debug.S: move hexbuf to a writable section
authorNicolas Pitre <nicolas.pitre@linaro.org>
Fri, 6 Oct 2017 18:36:58 +0000 (19:36 +0100)
committerRussell King <rmk+kernel@armlinux.org.uk>
Thu, 12 Oct 2017 10:26:21 +0000 (11:26 +0100)
This was located in .text which is meant to be read-only. And in the XIP
case this shortcut simply doesn't work and may trigger a Flash controller
mode switch and crash the kernel. Move it to the .bss area.

Signed-off-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
arch/arm/kernel/debug.S

index ea9646cc2a0ed7eba2fa4f7f7638c0802642edcc..423f4432586d079317e82eabd3347b6e4df08709 100644 (file)
@@ -55,7 +55,9 @@ ENDPROC(printhex4)
 
 ENTRY(printhex2)
                mov     r1, #2
-printhex:      adr     r2, hexbuf
+printhex:      adr     r2, hexbuf_rel
+               ldr     r3, [r2]
+               add     r2, r2, r3
                add     r3, r2, r1
                mov     r1, #0
                strb    r1, [r3]
@@ -71,7 +73,11 @@ printhex:    adr     r2, hexbuf
                b       printascii
 ENDPROC(printhex2)
 
-hexbuf:                .space 16
+               .pushsection .bss
+hexbuf_addr:   .space 16
+               .popsection
+               .align
+hexbuf_rel:    .long   hexbuf_addr - .
 
                .ltorg
 
@@ -120,7 +126,9 @@ ENTRY(printascii)
 ENDPROC(printascii)
 
 ENTRY(printch)
-               adr     r1, hexbuf
+               adr     r1, hexbuf_rel
+               ldr     r2, [r1]
+               add     r1, r1, r2
                strb    r0, [r1]
                mov     r0, #0x03               @ SYS_WRITEC
        ARM(    svc     #0x123456       )