]>
Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
3b4af9bc SG |
2 | #include <linux/linkage.h> |
3 | #include <asm/assembler.h> | |
4 | ||
27523679 NP |
5 | #ifndef CONFIG_DEBUG_SEMIHOSTING |
6 | ||
3b4af9bc SG |
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) | |
27523679 NP |
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 ) | |
ee3eaee6 NP |
27 | #ifdef CONFIG_CPU_V7M |
28 | THUMB( bkpt #0xab ) | |
29 | #else | |
27523679 | 30 | THUMB( svc #0xab ) |
ee3eaee6 | 31 | #endif |
27523679 NP |
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 |