debug-macro.S 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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