debug-armo.S
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  *  linux/arch/arm/kernel/debug-armo.S
  3.  *
  4.  *  Copyright (C) 1999 Russell King
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License version 2 as
  8.  * published by the Free Software Foundation.
  9.  *
  10.  *  26-bit debugging code
  11.  */
  12. #include <linux/linkage.h>
  13. .macro addruart,rx
  14. mov rx, #0x03000000
  15. orr rx, rx, #0x00010000
  16. orr rx, rx, #0x00000fe0
  17. .endm
  18. .macro senduart,rd,rx
  19. strb rd, [rx]
  20. .endm
  21. .macro busyuart,rd,rx
  22. 1002: ldrb rd, [rx, #0x14]
  23. and rd, rd, #0x60
  24. teq rd, #0x60
  25. bne 1002b
  26. .endm
  27. .macro waituart,rd,rx
  28. 1001: ldrb rd, [rx, #0x18]
  29. tst rd, #0x10
  30. beq 1001b
  31. .endm
  32. .text
  33. /*
  34.  * Useful debugging routines
  35.  */
  36. ENTRY(printhex8)
  37. mov r1, #8
  38. b printhex
  39. ENTRY(printhex4)
  40. mov r1, #4
  41. b printhex
  42. ENTRY(printhex2)
  43. mov r1, #2
  44. printhex: ldr r2, =hexbuf
  45. add r3, r2, r1
  46. mov r1, #0
  47. strb r1, [r3]
  48. 1: and r1, r0, #15
  49. mov r0, r0, lsr #4
  50. cmp r1, #10
  51. addlt r1, r1, #'0'
  52. addge r1, r1, #'a' - 10
  53. strb r1, [r3, #-1]!
  54. teq r3, r2
  55. bne 1b
  56. mov r0, r2
  57. b printascii
  58. .ltorg
  59. ENTRY(printascii)
  60. addruart r3
  61. b 2f
  62. 1: waituart r2, r3
  63. senduart r1, r3
  64. busyuart r2, r3
  65. teq r1, #'n'
  66. moveq r1, #'r'
  67. beq 1b
  68. 2: teq r0, #0
  69. ldrneb r1, [r0], #1
  70. teqne r1, #0
  71. bne 1b
  72. mov pc, lr
  73. ENTRY(printch)
  74. addruart r3
  75. mov r1, r0
  76. mov r0, #0
  77. b 1b
  78. .bss
  79. hexbuf: .space 16