GNU Linux-libre 4.19.264-gnu1
[releases.git] / arch / arm / boot / compressed / debug.S
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #include <linux/linkage.h>
3 #include <asm/assembler.h>
4
5 #ifndef CONFIG_DEBUG_SEMIHOSTING
6
7 #include CONFIG_DEBUG_LL_INCLUDE
8
9 ENTRY(putc)
10         addruart r1, r2, r3
11         waituart r3, r1
12         senduart r0, r1
13         busyuart r3, r1
14         mov      pc, lr
15 ENDPROC(putc)
16
17 #else
18
19 ENTRY(putc)
20         adr     r1, 1f
21         ldmia   r1, {r2, r3}
22         add     r2, r2, r1
23         ldr     r1, [r2, r3]
24         strb    r0, [r1]
25         mov     r0, #0x03               @ SYS_WRITEC
26    ARM( svc     #0x123456       )
27 #ifdef CONFIG_CPU_V7M
28  THUMB( bkpt    #0xab           )
29 #else
30  THUMB( svc     #0xab           )
31 #endif
32         mov     pc, lr
33         .align  2
34 1:      .word   _GLOBAL_OFFSET_TABLE_ - .
35         .word   semi_writec_buf(GOT)
36 ENDPROC(putc)
37
38         .bss
39         .global semi_writec_buf
40         .type   semi_writec_buf, %object
41 semi_writec_buf:
42         .space  4
43         .size   semi_writec_buf, 4
44
45 #endif