8250.S 1002 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * arch/arm/include/debug/8250.S
  4. *
  5. * Copyright (C) 1994-2013 Russell King
  6. */
  7. #include <linux/serial_reg.h>
  8. .macro addruart, rp, rv, tmp
  9. ldr \rp, =CONFIG_DEBUG_UART_PHYS
  10. ldr \rv, =CONFIG_DEBUG_UART_VIRT
  11. .endm
  12. #ifdef CONFIG_DEBUG_UART_8250_WORD
  13. .macro store, rd, rx:vararg
  14. str \rd, \rx
  15. .endm
  16. .macro load, rd, rx:vararg
  17. ldr \rd, \rx
  18. .endm
  19. #else
  20. .macro store, rd, rx:vararg
  21. strb \rd, \rx
  22. .endm
  23. .macro load, rd, rx:vararg
  24. ldrb \rd, \rx
  25. .endm
  26. #endif
  27. #define UART_SHIFT CONFIG_DEBUG_UART_8250_SHIFT
  28. .macro senduart,rd,rx
  29. store \rd, [\rx, #UART_TX << UART_SHIFT]
  30. .endm
  31. .macro busyuart,rd,rx
  32. 1002: load \rd, [\rx, #UART_LSR << UART_SHIFT]
  33. and \rd, \rd, #UART_LSR_TEMT | UART_LSR_THRE
  34. teq \rd, #UART_LSR_TEMT | UART_LSR_THRE
  35. bne 1002b
  36. .endm
  37. .macro waituart,rd,rx
  38. #ifdef CONFIG_DEBUG_UART_8250_FLOW_CONTROL
  39. 1001: load \rd, [\rx, #UART_MSR << UART_SHIFT]
  40. tst \rd, #UART_MSR_CTS
  41. beq 1001b
  42. #endif
  43. .endm