trace.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /*
  2. * Common header file for blackfin family of processors.
  3. *
  4. */
  5. #ifndef _BLACKFIN_TRACE_
  6. #define _BLACKFIN_TRACE_
  7. /* Normally, we use ON, but you can't turn on software expansion until
  8. * interrupts subsystem is ready
  9. */
  10. #define BFIN_TRACE_INIT ((CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION << 4) | 0x03)
  11. #ifdef CONFIG_DEBUG_BFIN_HWTRACE_EXPAND
  12. #define BFIN_TRACE_ON (BFIN_TRACE_INIT | (CONFIG_DEBUG_BFIN_HWTRACE_EXPAND << 2))
  13. #else
  14. #define BFIN_TRACE_ON (BFIN_TRACE_INIT)
  15. #endif
  16. #ifndef __ASSEMBLY__
  17. extern unsigned long trace_buff_offset;
  18. extern unsigned long software_trace_buff[];
  19. /* Trace Macros for C files */
  20. #ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON
  21. #define trace_buffer_save(x) \
  22. do { \
  23. (x) = bfin_read_TBUFCTL(); \
  24. bfin_write_TBUFCTL((x) & ~TBUFEN); \
  25. } while (0)
  26. #define trace_buffer_restore(x) \
  27. do { \
  28. bfin_write_TBUFCTL((x)); \
  29. } while (0)
  30. #else /* DEBUG_BFIN_HWTRACE_ON */
  31. #define trace_buffer_save(x)
  32. #define trace_buffer_restore(x)
  33. #endif /* CONFIG_DEBUG_BFIN_HWTRACE_ON */
  34. #else
  35. /* Trace Macros for Assembly files */
  36. #ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON
  37. #define TRACE_BUFFER_START(preg, dreg) trace_buffer_start(preg, dreg)
  38. #define TRACE_BUFFER_STOP(preg, dreg) trace_buffer_stop(preg, dreg)
  39. #define trace_buffer_stop(preg, dreg) \
  40. preg.L = LO(TBUFCTL); \
  41. preg.H = HI(TBUFCTL); \
  42. dreg = 0x1; \
  43. [preg] = dreg;
  44. #define trace_buffer_start(preg, dreg) \
  45. preg.L = LO(TBUFCTL); \
  46. preg.H = HI(TBUFCTL); \
  47. dreg = BFIN_TRACE_ON; \
  48. [preg] = dreg;
  49. #define trace_buffer_init(preg, dreg) \
  50. preg.L = LO(TBUFCTL); \
  51. preg.H = HI(TBUFCTL); \
  52. dreg = BFIN_TRACE_INIT; \
  53. [preg] = dreg;
  54. #else /* CONFIG_DEBUG_BFIN_HWTRACE_ON */
  55. #define trace_buffer_stop(preg, dreg)
  56. #define trace_buffer_start(preg, dreg)
  57. #define trace_buffer_init(preg, dreg)
  58. #endif /* CONFIG_DEBUG_BFIN_HWTRACE_ON */
  59. #ifdef CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE
  60. # define DEBUG_START_HWTRACE(preg, dreg) trace_buffer_start(preg, dreg)
  61. # define DEBUG_STOP_HWTRACE(preg, dreg) trace_buffer_stop(preg, dreg)
  62. #else
  63. # define DEBUG_START_HWTRACE(preg, dreg)
  64. # define DEBUG_STOP_HWTRACE(preg, dreg)
  65. #endif
  66. #endif /* __ASSEMBLY__ */
  67. #endif /* _BLACKFIN_TRACE_ */