1 /* 2 * Common header file for blackfin family of processors. 3 * 4 */ 5 6 #ifndef _BLACKFIN_TRACE_ 7 #define _BLACKFIN_TRACE_ 8 9 /* Normally, we use ON, but you can't turn on software expansion until 10 * interrupts subsystem is ready 11 */ 12 13 #define BFIN_TRACE_INIT ((CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION << 4) | 0x03) 14 #ifdef CONFIG_DEBUG_BFIN_HWTRACE_EXPAND 15 #define BFIN_TRACE_ON (BFIN_TRACE_INIT | (CONFIG_DEBUG_BFIN_HWTRACE_EXPAND << 2)) 16 #else 17 #define BFIN_TRACE_ON (BFIN_TRACE_INIT) 18 #endif 19 20 #ifndef __ASSEMBLY__ 21 extern unsigned long trace_buff_offset; 22 extern unsigned long software_trace_buff[]; 23 24 /* Trace Macros for C files */ 25 26 #ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON 27 28 #define trace_buffer_save(x) \ 29 do { \ 30 (x) = bfin_read_TBUFCTL(); \ 31 bfin_write_TBUFCTL((x) & ~TBUFEN); \ 32 } while (0) 33 34 #define trace_buffer_restore(x) \ 35 do { \ 36 bfin_write_TBUFCTL((x)); \ 37 } while (0) 38 #else /* DEBUG_BFIN_HWTRACE_ON */ 39 40 #define trace_buffer_save(x) 41 #define trace_buffer_restore(x) 42 #endif /* CONFIG_DEBUG_BFIN_HWTRACE_ON */ 43 44 #else 45 /* Trace Macros for Assembly files */ 46 47 #ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON 48 49 #define trace_buffer_stop(preg, dreg) \ 50 preg.L = LO(TBUFCTL); \ 51 preg.H = HI(TBUFCTL); \ 52 dreg = 0x1; \ 53 [preg] = dreg; 54 55 #define trace_buffer_init(preg, dreg) \ 56 preg.L = LO(TBUFCTL); \ 57 preg.H = HI(TBUFCTL); \ 58 dreg = BFIN_TRACE_INIT; \ 59 [preg] = dreg; 60 61 #define trace_buffer_save(preg, dreg) \ 62 preg.L = LO(TBUFCTL); \ 63 preg.H = HI(TBUFCTL); \ 64 dreg = [preg]; \ 65 [--sp] = dreg; \ 66 dreg = 0x1; \ 67 [preg] = dreg; 68 69 #define trace_buffer_restore(preg, dreg) \ 70 preg.L = LO(TBUFCTL); \ 71 preg.H = HI(TBUFCTL); \ 72 dreg = [sp++]; \ 73 [preg] = dreg; 74 75 #else /* CONFIG_DEBUG_BFIN_HWTRACE_ON */ 76 77 #define trace_buffer_stop(preg, dreg) 78 #define trace_buffer_init(preg, dreg) 79 #define trace_buffer_save(preg, dreg) 80 #define trace_buffer_restore(preg, dreg) 81 82 #endif /* CONFIG_DEBUG_BFIN_HWTRACE_ON */ 83 84 #ifdef CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE 85 # define DEBUG_HWTRACE_SAVE(preg, dreg) trace_buffer_save(preg, dreg) 86 # define DEBUG_HWTRACE_RESTORE(preg, dreg) trace_buffer_restore(preg, dreg) 87 #else 88 # define DEBUG_HWTRACE_SAVE(preg, dreg) 89 # define DEBUG_HWTRACE_RESTORE(preg, dreg) 90 #endif 91 92 #endif /* __ASSEMBLY__ */ 93 94 #endif /* _BLACKFIN_TRACE_ */ 95