Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost
[cris-mirror.git] / arch / unicore32 / kernel / debug.S
blob029fd12f6ab03b44cc4e0662eb359b2513bd735b
1 /*
2  * linux/arch/unicore32/kernel/debug.S
3  *
4  * Code specific to PKUnity SoC and UniCore ISA
5  *
6  * Copyright (C) 2001-2010 GUAN Xue-tao
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License version 2 as
10  * published by the Free Software Foundation.
11  *
12  *  32-bit debugging code
13  */
14 #include <linux/linkage.h>
15 #include <asm/assembler.h>
17                 .text
20  * Some debugging routines (useful if you've got MM problems and
21  * printk isn't working).  For DEBUGGING ONLY!!!  Do not leave
22  * references to these in a production kernel!
23  */
24 #include "debug-macro.S"
27  * Useful debugging routines
28  */
29 ENTRY(printhex8)
30                 mov     r1, #8
31                 b       printhex
32 ENDPROC(printhex8)
34 ENTRY(printhex4)
35                 mov     r1, #4
36                 b       printhex
37 ENDPROC(printhex4)
39 ENTRY(printhex2)
40                 mov     r1, #2
41 printhex:       adr     r2, hexbuf
42                 add     r3, r2, r1
43                 mov     r1, #0
44                 stb     r1, [r3]
45 1:              and     r1, r0, #15
46                 mov     r0, r0 >> #4
47                 csub.a  r1, #10
48                 beg     2f
49                 add     r1, r1, #'0' - 'a' + 10
50 2:              add     r1, r1, #'a' - 10
51                 stb.w   r1, [r3+], #-1
52                 cxor.a  r3, r2
53                 bne     1b
54                 mov     r0, r2
55                 b       printascii
56 ENDPROC(printhex2)
58                 .ltorg
60 ENTRY(printascii)
61                 addruart r3
62                 b       2f
63 1:              waituart r2, r3
64                 senduart r1, r3
65                 busyuart r2, r3
66                 cxor.a  r1, #'\n'
67                 cmoveq  r1, #'\r'
68                 beq     1b
69 2:              cxor.a  r0, #0
70                 beq     3f
71                 ldb.w   r1, [r0]+, #1
72                 cxor.a  r1, #0
73                 bne     1b
74 3:              mov     pc, lr
75 ENDPROC(printascii)
77 ENTRY(printch)
78                 addruart r3
79                 mov     r1, r0
80                 mov     r0, #0
81                 b       1b
82 ENDPROC(printch)
84 hexbuf:         .space 16