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 9ENTRY(putc) 10 addruart r1, r2, r3 11 waituartcts r3, r1 12 waituarttxrdy r3, r1 13 senduart r0, r1 14 busyuart r3, r1 15 mov pc, lr 16ENDPROC(putc) 17 18#else 19 20ENTRY(putc) 21 adr r1, 1f 22 ldmia r1, {r2, r3} 23 add r2, r2, r1 24 ldr r1, [r2, r3] 25 strb r0, [r1] 26 mov r0, #0x03 @ SYS_WRITEC 27 ARM( svc #0x123456 ) 28#ifdef CONFIG_CPU_V7M 29 THUMB( bkpt #0xab ) 30#else 31 THUMB( svc #0xab ) 32#endif 33 mov pc, lr 34 .align 2 351: .word _GLOBAL_OFFSET_TABLE_ - . 36 .word semi_writec_buf(GOT) 37ENDPROC(putc) 38 39 .bss 40 .global semi_writec_buf 41 .type semi_writec_buf, %object 42semi_writec_buf: 43 .space 4 44 .size semi_writec_buf, 4 45 46#endif 47