123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /* SPDX-License-Identifier: GPL-2.0 */
- #include <linux/linkage.h>
- #include <asm/assembler.h>
- #ifndef CONFIG_DEBUG_SEMIHOSTING
- #include CONFIG_DEBUG_LL_INCLUDE
- ENTRY(putc)
- addruart r1, r2, r3
- #ifdef CONFIG_DEBUG_UART_FLOW_CONTROL
- waituartcts r3, r1
- #endif
- waituarttxrdy r3, r1
- senduart r0, r1
- busyuart r3, r1
- mov pc, lr
- ENDPROC(putc)
- #else
- ENTRY(putc)
- adr r1, 1f
- ldmia r1, {r2, r3}
- add r2, r2, r1
- ldr r1, [r2, r3]
- strb r0, [r1]
- mov r0, #0x03 @ SYS_WRITEC
- ARM( svc #0x123456 )
- #ifdef CONFIG_CPU_V7M
- THUMB( bkpt #0xab )
- #else
- THUMB( svc #0xab )
- #endif
- mov pc, lr
- .align 2
- 1: .word _GLOBAL_OFFSET_TABLE_ - .
- .word semi_writec_buf(GOT)
- ENDPROC(putc)
- .bss
- .global semi_writec_buf
- .type semi_writec_buf, %object
- semi_writec_buf:
- .space 4
- .size semi_writec_buf, 4
- #endif
|