ARM: 8703/1: debug.S: move hexbuf to a writable section
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>
This commit is contained in:
committed by
Russell King
parent
c772568788
commit
e11d1314d8
@ -55,7 +55,9 @@ ENDPROC(printhex4)
|
|||||||
|
|
||||||
ENTRY(printhex2)
|
ENTRY(printhex2)
|
||||||
mov r1, #2
|
mov r1, #2
|
||||||
printhex: adr r2, hexbuf
|
printhex: adr r2, hexbuf_rel
|
||||||
|
ldr r3, [r2]
|
||||||
|
add r2, r2, r3
|
||||||
add r3, r2, r1
|
add r3, r2, r1
|
||||||
mov r1, #0
|
mov r1, #0
|
||||||
strb r1, [r3]
|
strb r1, [r3]
|
||||||
@ -71,7 +73,11 @@ printhex: adr r2, hexbuf
|
|||||||
b printascii
|
b printascii
|
||||||
ENDPROC(printhex2)
|
ENDPROC(printhex2)
|
||||||
|
|
||||||
hexbuf: .space 16
|
.pushsection .bss
|
||||||
|
hexbuf_addr: .space 16
|
||||||
|
.popsection
|
||||||
|
.align
|
||||||
|
hexbuf_rel: .long hexbuf_addr - .
|
||||||
|
|
||||||
.ltorg
|
.ltorg
|
||||||
|
|
||||||
@ -120,7 +126,9 @@ ENTRY(printascii)
|
|||||||
ENDPROC(printascii)
|
ENDPROC(printascii)
|
||||||
|
|
||||||
ENTRY(printch)
|
ENTRY(printch)
|
||||||
adr r1, hexbuf
|
adr r1, hexbuf_rel
|
||||||
|
ldr r2, [r1]
|
||||||
|
add r1, r1, r2
|
||||||
strb r0, [r1]
|
strb r0, [r1]
|
||||||
mov r0, #0x03 @ SYS_WRITEC
|
mov r0, #0x03 @ SYS_WRITEC
|
||||||
ARM( svc #0x123456 )
|
ARM( svc #0x123456 )
|
||||||
|
Reference in New Issue
Block a user