xref: /linux/arch/arm/boot/compressed/debug.S (revision 275236797916924103e133e3d7a7ea777c951273)
13b4af9bcSShawn Guo#include <linux/linkage.h>
23b4af9bcSShawn Guo#include <asm/assembler.h>
33b4af9bcSShawn Guo
4*27523679SNicolas Pitre#ifndef CONFIG_DEBUG_SEMIHOSTING
5*27523679SNicolas Pitre
63b4af9bcSShawn Guo#include CONFIG_DEBUG_LL_INCLUDE
73b4af9bcSShawn Guo
83b4af9bcSShawn GuoENTRY(putc)
93b4af9bcSShawn Guo	addruart r1, r2, r3
103b4af9bcSShawn Guo	waituart r3, r1
113b4af9bcSShawn Guo	senduart r0, r1
123b4af9bcSShawn Guo	busyuart r3, r1
133b4af9bcSShawn Guo	mov	 pc, lr
143b4af9bcSShawn GuoENDPROC(putc)
15*27523679SNicolas Pitre
16*27523679SNicolas Pitre#else
17*27523679SNicolas Pitre
18*27523679SNicolas PitreENTRY(putc)
19*27523679SNicolas Pitre	adr	r1, 1f
20*27523679SNicolas Pitre	ldmia	r1, {r2, r3}
21*27523679SNicolas Pitre	add	r2, r2, r1
22*27523679SNicolas Pitre	ldr	r1, [r2, r3]
23*27523679SNicolas Pitre	strb	r0, [r1]
24*27523679SNicolas Pitre	mov	r0, #0x03		@ SYS_WRITEC
25*27523679SNicolas Pitre   ARM(	svc	#0x123456	)
26*27523679SNicolas Pitre THUMB(	svc	#0xab		)
27*27523679SNicolas Pitre	mov	pc, lr
28*27523679SNicolas Pitre	.align	2
29*27523679SNicolas Pitre1:	.word	_GLOBAL_OFFSET_TABLE_ - .
30*27523679SNicolas Pitre	.word	semi_writec_buf(GOT)
31*27523679SNicolas PitreENDPROC(putc)
32*27523679SNicolas Pitre
33*27523679SNicolas Pitre	.bss
34*27523679SNicolas Pitre	.global	semi_writec_buf
35*27523679SNicolas Pitre	.type   semi_writec_buf, %object
36*27523679SNicolas Pitresemi_writec_buf:
37*27523679SNicolas Pitre	.space	4
38*27523679SNicolas Pitre	.size	semi_writec_buf, 4
39*27523679SNicolas Pitre
40*27523679SNicolas Pitre#endif
41