1
2
3
4
5
6
7
8
9
10
11
12#include <linux/linkage.h>
13#include <asm/assembler.h>
14
15 .text
16
17
18
19
20
21
22
23
24
25#endif
26
27#ifdef CONFIG_MMU
28 .macro addruart_current, rx, tmp1, tmp2
29 addruart \tmp1, \tmp2, \rx
30 mrc p15, 0, \rx, c1, c0
31 tst \rx,
32 moveq \rx, \tmp1
33 movne \rx, \tmp2
34 .endm
35
36#else
37 .macro addruart_current, rx, tmp1, tmp2
38 addruart \rx, \tmp1
39 .endm
40
41#endif
42
43
44
45
46ENTRY(printhex8)
47 mov r1,
48 b printhex
49ENDPROC(printhex8)
50
51ENTRY(printhex4)
52 mov r1,
53 b printhex
54ENDPROC(printhex4)
55
56ENTRY(printhex2)
57 mov r1,
58printhex: adr r2, hexbuf
59 add r3, r2, r1
60 mov r1,
61 strb r1, [r3]
621: and r1, r0,
63 mov r0, r0, lsr
64 cmp r1,
65 addlt r1, r1,
66 addge r1, r1,
67 strb r1, [r3,
68 teq r3, r2
69 bne 1b
70 mov r0, r2
71 b printascii
72ENDPROC(printhex2)
73
74hexbuf: .space 16
75
76 .ltorg
77
78#ifndef CONFIG_DEBUG_SEMIHOSTING
79
80ENTRY(printascii)
81 addruart_current r3, r1, r2
82 b 2f
831: waituart r2, r3
84 senduart r1, r3
85 busyuart r2, r3
86 teq r1,
87 moveq r1,
88 beq 1b
892: teq r0,
90 ldrneb r1, [r0],
91 teqne r1,
92 bne 1b
93 mov pc, lr
94ENDPROC(printascii)
95
96ENTRY(printch)
97 addruart_current r3, r1, r2
98 mov r1, r0
99 mov r0,
100 b 1b
101ENDPROC(printch)
102
103#ifdef CONFIG_MMU
104ENTRY(debug_ll_addr)
105 addruart r2, r3, ip
106 str r2, [r0]
107 str r3, [r1]
108 mov pc, lr
109ENDPROC(debug_ll_addr)
110#endif
111
112#else
113
114ENTRY(printascii)
115 mov r1, r0
116 mov r0,
117 ARM( svc
118 THUMB( svc
119 mov pc, lr
120ENDPROC(printascii)
121
122ENTRY(printch)
123 adr r1, hexbuf
124 strb r0, [r1]
125 mov r0,
126 ARM( svc
127 THUMB( svc
128 mov pc, lr
129ENDPROC(printch)
130
131ENTRY(debug_ll_addr)
132 mov r2,
133 str r2, [r0]
134 str r2, [r1]
135 mov pc, lr
136ENDPROC(debug_ll_addr)
137
138#endif
139