debug.S 635 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  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. THUMB( svc #0xab )
  22. mov pc, lr
  23. .align 2
  24. 1: .word _GLOBAL_OFFSET_TABLE_ - .
  25. .word semi_writec_buf(GOT)
  26. ENDPROC(putc)
  27. .bss
  28. .global semi_writec_buf
  29. .type semi_writec_buf, %object
  30. semi_writec_buf:
  31. .space 4
  32. .size semi_writec_buf, 4
  33. #endif