debug.S 692 B

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