linux/arch/unicore32/kernel/debug.S
<<
>>
Prefs
   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>
  16
  17                .text
  18
  19/*
  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"
  25
  26/*
  27 * Useful debugging routines
  28 */
  29ENTRY(printhex8)
  30                mov     r1, #8
  31                b       printhex
  32ENDPROC(printhex8)
  33
  34ENTRY(printhex4)
  35                mov     r1, #4
  36                b       printhex
  37ENDPROC(printhex4)
  38
  39ENTRY(printhex2)
  40                mov     r1, #2
  41printhex:       adr     r2, hexbuf
  42                add     r3, r2, r1
  43                mov     r1, #0
  44                stb     r1, [r3]
  451:              and     r1, r0, #15
  46                mov     r0, r0 >> #4
  47                csub.a  r1, #10
  48                beg     2f
  49                add     r1, r1, #'0' - 'a' + 10
  502:              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
  56ENDPROC(printhex2)
  57
  58                .ltorg
  59
  60ENTRY(printascii)
  61                addruart r3
  62                b       2f
  631:              waituart r2, r3
  64                senduart r1, r3
  65                busyuart r2, r3
  66                cxor.a  r1, #'\n'
  67                cmoveq  r1, #'\r'
  68                beq     1b
  692:              cxor.a  r0, #0
  70                beq     3f
  71                ldb.w   r1, [r0]+, #1
  72                cxor.a  r1, #0
  73                bne     1b
  743:              mov     pc, lr
  75ENDPROC(printascii)
  76
  77ENTRY(printch)
  78                addruart r3
  79                mov     r1, r0
  80                mov     r0, #0
  81                b       1b
  82ENDPROC(printch)
  83
  84hexbuf:         .space 16
  85
  86