debug.S 801 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #include <linux/linkage.h>
  3. #include <asm/assembler.h>
  4. #ifndef CONFIG_DEBUG_SEMIHOSTING
  5. #include CONFIG_DEBUG_LL_INCLUDE
  6. ENTRY(putc)
  7. addruart r1, r2, r3
  8. #ifdef CONFIG_DEBUG_UART_FLOW_CONTROL
  9. waituartcts r3, r1
  10. #endif
  11. waituarttxrdy r3, r1
  12. senduart r0, r1
  13. busyuart r3, r1
  14. mov pc, lr
  15. ENDPROC(putc)
  16. #else
  17. ENTRY(putc)
  18. adr r1, 1f
  19. ldmia r1, {r2, r3}
  20. add r2, r2, r1
  21. ldr r1, [r2, r3]
  22. strb r0, [r1]
  23. mov r0, #0x03 @ SYS_WRITEC
  24. ARM( svc #0x123456 )
  25. #ifdef CONFIG_CPU_V7M
  26. THUMB( bkpt #0xab )
  27. #else
  28. THUMB( svc #0xab )
  29. #endif
  30. mov pc, lr
  31. .align 2
  32. 1: .word _GLOBAL_OFFSET_TABLE_ - .
  33. .word semi_writec_buf(GOT)
  34. ENDPROC(putc)
  35. .bss
  36. .global semi_writec_buf
  37. .type semi_writec_buf, %object
  38. semi_writec_buf:
  39. .space 4
  40. .size semi_writec_buf, 4
  41. #endif