trace.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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_stop(preg, dreg) \
  38. preg.L = LO(TBUFCTL); \
  39. preg.H = HI(TBUFCTL); \
  40. dreg = 0x1; \
  41. [preg] = dreg;
  42. #define trace_buffer_init(preg, dreg) \
  43. preg.L = LO(TBUFCTL); \
  44. preg.H = HI(TBUFCTL); \
  45. dreg = BFIN_TRACE_INIT; \
  46. [preg] = dreg;
  47. #define trace_buffer_save(preg, dreg) \
  48. preg.L = LO(TBUFCTL); \
  49. preg.H = HI(TBUFCTL); \
  50. dreg = [preg]; \
  51. [--sp] = dreg; \
  52. dreg = 0x1; \
  53. [preg] = dreg;
  54. #define trace_buffer_restore(preg, dreg) \
  55. preg.L = LO(TBUFCTL); \
  56. preg.H = HI(TBUFCTL); \
  57. dreg = [sp++]; \
  58. [preg] = dreg;
  59. #else /* CONFIG_DEBUG_BFIN_HWTRACE_ON */
  60. #define trace_buffer_stop(preg, dreg)
  61. #define trace_buffer_init(preg, dreg)
  62. #define trace_buffer_save(preg, dreg)
  63. #define trace_buffer_restore(preg, dreg)
  64. #endif /* CONFIG_DEBUG_BFIN_HWTRACE_ON */
  65. #ifdef CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE
  66. # define DEBUG_HWTRACE_SAVE(preg, dreg) trace_buffer_save(preg, dreg)
  67. # define DEBUG_HWTRACE_RESTORE(preg, dreg) trace_buffer_restore(preg, dreg)
  68. #else
  69. # define DEBUG_HWTRACE_SAVE(preg, dreg)
  70. # define DEBUG_HWTRACE_RESTORE(preg, dreg)
  71. #endif
  72. #endif /* __ASSEMBLY__ */
  73. #endif /* _BLACKFIN_TRACE_ */