GUI: Fix Tomato RAF theme for all builds. Compilation typo.
[tomato.git] / release / src-rt-6.x.4708 / linux / linux-2.6.36 / arch / arm / kernel / debug.S
blob3897bda7480b4109364b7f8ed2bdfa45b534c759
1 /* Modified by Broadcom Corp. Portions Copyright (c) Broadcom Corp, 2012. */
2 /*
3  *  linux/arch/arm/kernel/debug.S
4  *
5  *  Copyright (C) 1994-1999 Russell King
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License version 2 as
9  * published by the Free Software Foundation.
10  *
11  *  32-bit debugging code
12  */
13 #include <linux/linkage.h>
14 #include <asm/memory.h>
16                 .text
19  * Some debugging routines (useful if you've got MM problems and
20  * printk isn't working).  For DEBUGGING ONLY!!!  Do not leave
21  * references to these in a production kernel!
22  */
24 #if defined(CONFIG_DEBUG_ICEDCC)
25                 @@ debug using ARM EmbeddedICE DCC channel
27 #if defined(CONFIG_CPU_V6)
29                 .macro  addruart, rx, tmp
30                 .endm
32                 .macro  senduart, rd, rx
33                 mcr     p14, 0, \rd, c0, c5, 0
34                 .endm
36                 .macro  busyuart, rd, rx
37 1001:
38                 mrc     p14, 0, \rx, c0, c1, 0
39                 tst     \rx, #0x20000000
40                 beq     1001b
41                 .endm
43                 .macro  waituart, rd, rx
44                 mov     \rd, #0x2000000
45 1001:
46                 subs    \rd, \rd, #1
47                 bmi     1002f
48                 mrc     p14, 0, \rx, c0, c1, 0
49                 tst     \rx, #0x20000000
50                 bne     1001b
51 1002:
52                 .endm
54 #elif defined(CONFIG_CPU_V7)
56                 .macro  addruart, rx, tmp
57                 .endm
59                 .macro  senduart, rd, rx
60                 mcr     p14, 0, \rd, c0, c5, 0
61                 .endm
63                 .macro  busyuart, rd, rx
64 busy:           mrc     p14, 0, pc, c0, c1, 0
65                 bcs     busy
66                 .endm
68                 .macro  waituart, rd, rx
69 wait:           mrc     p14, 0, pc, c0, c1, 0
70                 bcs     wait
72                 .endm
74 #elif defined(CONFIG_CPU_XSCALE)
76                 .macro  addruart, rx, tmp
77                 .endm
79                 .macro  senduart, rd, rx
80                 mcr     p14, 0, \rd, c8, c0, 0
81                 .endm
83                 .macro  busyuart, rd, rx
84 1001:
85                 mrc     p14, 0, \rx, c14, c0, 0
86                 tst     \rx, #0x10000000
87                 beq     1001b
88                 .endm
90                 .macro  waituart, rd, rx
91                 mov     \rd, #0x10000000
92 1001:
93                 subs    \rd, \rd, #1
94                 bmi     1002f
95                 mrc     p14, 0, \rx, c14, c0, 0
96                 tst     \rx, #0x10000000
97                 bne     1001b
98 1002:
99                 .endm
101 #else
103                 .macro  addruart, rx, tmp
104                 .endm
106                 .macro  senduart, rd, rx
107                 mcr     p14, 0, \rd, c1, c0, 0
108                 .endm
110                 .macro  busyuart, rd, rx
111 1001:
112                 mrc     p14, 0, \rx, c0, c0, 0
113                 tst     \rx, #2
114                 beq     1001b
116                 .endm
118                 .macro  waituart, rd, rx
119                 mov     \rd, #0x2000000
120 1001:
121                 subs    \rd, \rd, #1
122                 bmi     1002f
123                 mrc     p14, 0, \rx, c0, c0, 0
124                 tst     \rx, #2
125                 bne     1001b
126 1002:
127                 .endm
129 #endif  /* CONFIG_CPU_V6 */
131 #else
132 #include <mach/debug-macro.S>
133 #endif  /* CONFIG_DEBUG_ICEDCC */
136  * Useful debugging routines
137  */
138 ENTRY(printhex8)
139                 mov     r1, #8
140                 b       printhex
141 ENDPROC(printhex8)
143 ENTRY(printhex4)
144                 mov     r1, #4
145                 b       printhex
146 ENDPROC(printhex4)
148 ENTRY(printhex2)
149                 mov     r1, #2
150 printhex:       
151                 mrc     p15, 0, r2, c1, c0      @ read SysCtrl
152                 tst     r2, #1                  @ MMU enabled?
153                 ldrne   r2, =hexbuf             @ =1 virtual
154                 ldreq   r2, =__virt_to_phys(hexbuf) @ =0 physical
155                 add     r3, r2, r1
156                 mov     r1, #0
157                 strb    r1, [r3]
158 1:              and     r1, r0, #15
159                 mov     r0, r0, lsr #4
160                 cmp     r1, #10
161                 addlt   r1, r1, #'0'
162                 addge   r1, r1, #'a' - 10
163                 strb    r1, [r3, #-1]!
164                 teq     r3, r2
165                 bne     1b
166                 mov     r0, r2
167                 b       printascii
168 ENDPROC(printhex2)
170                 .ltorg
172 ENTRY(printascii)
173                 addruart r3, r1
174                 b       2f
175 1:              waituart r2, r3
176                 senduart r1, r3
177                 busyuart r2, r3
178                 teq     r1, #'\n'
179                 moveq   r1, #'\r'
180                 beq     1b
181 2:              teq     r0, #0
182                 ldrneb  r1, [r0], #1
183                 teqne   r1, #0
184                 bne     1b
185                 mov     pc, lr
186 ENDPROC(printascii)
188 ENTRY(printch)
189                 addruart r3, r1
190                 mov     r1, r0
191                 mov     r0, #0
192                 b       1b
193 ENDPROC(printch)
195                 .bss
196 hexbuf:         .space 16