debug-macro.S
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /* linux/include/asm-arm/arch-s3c2410/debug-macro.S
  2.  *
  3.  * Debugging macro include header
  4.  *
  5.  *  Copyright (C) 1994-1999 Russell King
  6.  *  Copyright (C) 2005 Simtec Electronics
  7.  *
  8.  *  Moved from linux/arch/arm/kernel/debug.S by Ben Dooks
  9.  *
  10.  * This program is free software; you can redistribute it and/or modify
  11.  * it under the terms of the GNU General Public License version 2 as
  12.  * published by the Free Software Foundation.
  13.  *
  14.  * Modifications:
  15.  *     10-Mar-2005 LCVR  Changed S3C2410_VA to S3C24XX_VA
  16. */
  17. #include <asm/arch/map.h>
  18. #include <asm/arch/regs-serial.h>
  19. #include <asm/arch/regs-gpio.h>
  20. #define S3C2410_UART1_OFF (0x4000)
  21. #define SHIFT_2440TXF (14-9)
  22. .macro addruart, rx
  23. mrc p15, 0, rx, c1, c0
  24. tst rx, #1
  25. ldreq rx, = S3C2410_PA_UART
  26. ldrne rx, = S3C24XX_VA_UART
  27. #if CONFIG_DEBUG_S3C2410_UART != 0
  28. add rx, rx, #(S3C2410_UART1_OFF * CONFIG_DEBUG_S3C2410_UART)
  29. #endif
  30. .endm
  31. .macro senduart,rd,rx
  32. str rd, [rx, # S3C2410_UTXH ]
  33. .endm
  34. .macro busyuart, rd, rx
  35. ldr rd, [ rx, # S3C2410_UFCON ]
  36. tst rd, #S3C2410_UFCON_FIFOMODE @ fifo enabled?
  37. beq 1001f @
  38. @ FIFO enabled...
  39. 1003:
  40. mrc p15, 0, rd, c1, c0
  41. tst rd, #1
  42. addeq rd, rx, #(S3C2410_PA_GPIO - S3C2410_PA_UART)
  43. addne rd, rx, #(S3C24XX_VA_GPIO - S3C24XX_VA_UART)
  44. bic rd, rd, #0xff000
  45. ldr rd, [ rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0) ]
  46. and rd, rd, #0x00ff0000
  47. teq rd, #0x00440000 @ is it 2440?
  48. ldr rd, [ rx, # S3C2410_UFSTAT ]
  49. moveq rd, rd, lsr #SHIFT_2440TXF
  50. tst rd, #S3C2410_UFSTAT_TXFULL
  51. bne 1003b
  52. b 1002f
  53. 1001:
  54. @ busy waiting for non fifo
  55. ldr rd, [ rx, # S3C2410_UTRSTAT ]
  56. tst rd, #S3C2410_UTRSTAT_TXFE
  57. beq 1001b
  58. 1002: @ exit busyuart
  59. .endm
  60. .macro waituart,rd,rx
  61. ldr rd, [ rx, # S3C2410_UFCON ]
  62. tst rd, #S3C2410_UFCON_FIFOMODE @ fifo enabled?
  63. beq 1001f @
  64. @ FIFO enabled...
  65. 1003:
  66. mrc p15, 0, rd, c1, c0
  67. tst rd, #1
  68. addeq rd, rx, #(S3C2410_PA_GPIO - S3C2410_PA_UART)
  69. addne rd, rx, #(S3C24XX_VA_GPIO - S3C24XX_VA_UART)
  70. bic rd, rd, #0xff000
  71. ldr rd, [ rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0) ]
  72. and rd, rd, #0x00ff0000
  73. teq rd, #0x00440000 @ is it 2440?
  74. ldr rd, [ rx, # S3C2410_UFSTAT ]
  75. andne rd, rd, #S3C2410_UFSTAT_TXMASK
  76. andeq rd, rd, #S3C2440_UFSTAT_TXMASK
  77. teq rd, #0
  78. bne 1003b
  79. b 1002f
  80. 1001:
  81. @ idle waiting for non fifo
  82. ldr rd, [ rx, # S3C2410_UTRSTAT ]
  83. tst rd, #S3C2410_UTRSTAT_TXFE
  84. beq 1001b
  85. 1002: @ exit busyuart
  86. .endm