2007-06-21 16:34:08 +08:00
/*
* Common header file for blackfin family of processors .
*
*/
# ifndef _BLACKFIN_TRACE_
# define _BLACKFIN_TRACE_
2007-07-25 11:03:28 +08:00
/* Normally, we use ON, but you can't turn on software expansion until
* interrupts subsystem is ready
*/
# define BFIN_TRACE_INIT ((CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION << 4) | 0x03)
# ifdef CONFIG_DEBUG_BFIN_HWTRACE_EXPAND
# define BFIN_TRACE_ON (BFIN_TRACE_INIT | (CONFIG_DEBUG_BFIN_HWTRACE_EXPAND << 2))
# else
# define BFIN_TRACE_ON (BFIN_TRACE_INIT)
# endif
2007-06-21 16:34:08 +08:00
# ifndef __ASSEMBLY__
2007-07-25 11:03:28 +08:00
extern unsigned long trace_buff_offset ;
extern unsigned long software_trace_buff [ ] ;
2007-06-21 16:34:08 +08:00
/* Trace Macros for C files */
2007-07-25 11:03:28 +08:00
# ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON
2007-06-21 16:34:08 +08:00
# define trace_buffer_save(x) \
2007-07-25 11:03:28 +08:00
do { \
( x ) = bfin_read_TBUFCTL ( ) ; \
bfin_write_TBUFCTL ( ( x ) & ~ TBUFEN ) ; \
} while ( 0 )
2007-06-21 16:34:08 +08:00
# define trace_buffer_restore(x) \
2007-07-25 11:03:28 +08:00
do { \
bfin_write_TBUFCTL ( ( x ) ) ; \
} while ( 0 )
# else /* DEBUG_BFIN_HWTRACE_ON */
# define trace_buffer_save(x)
# define trace_buffer_restore(x)
# endif /* CONFIG_DEBUG_BFIN_HWTRACE_ON */
2007-06-21 16:34:08 +08:00
# else
/* Trace Macros for Assembly files */
2007-07-25 11:03:28 +08:00
# ifdef CONFIG_DEBUG_BFIN_HWTRACE_ON
2007-06-21 16:34:08 +08:00
# define trace_buffer_stop(preg, dreg) \
preg . L = LO ( TBUFCTL ) ; \
preg . H = HI ( TBUFCTL ) ; \
dreg = 0x1 ; \
[ preg ] = dreg ;
2007-07-25 11:03:28 +08:00
# define trace_buffer_init(preg, dreg) \
preg . L = LO ( TBUFCTL ) ; \
preg . H = HI ( TBUFCTL ) ; \
dreg = BFIN_TRACE_INIT ; \
2007-06-21 16:34:08 +08:00
[ preg ] = dreg ;
2008-02-02 15:47:24 +08:00
# define trace_buffer_save(preg, dreg) \
preg . L = LO ( TBUFCTL ) ; \
preg . H = HI ( TBUFCTL ) ; \
dreg = [ preg ] ; \
2008-04-23 07:17:34 +08:00
[ - - sp ] = dreg ; \
2008-02-02 15:47:24 +08:00
dreg = 0x1 ; \
[ preg ] = dreg ;
# define trace_buffer_restore(preg, dreg) \
preg . L = LO ( TBUFCTL ) ; \
preg . H = HI ( TBUFCTL ) ; \
2008-04-23 07:17:34 +08:00
dreg = [ sp + + ] ; \
2008-02-02 15:47:24 +08:00
[ preg ] = dreg ;
2007-07-25 11:03:28 +08:00
# else /* CONFIG_DEBUG_BFIN_HWTRACE_ON */
# define trace_buffer_stop(preg, dreg)
# define trace_buffer_init(preg, dreg)
2008-02-02 15:47:24 +08:00
# define trace_buffer_save(preg, dreg)
# define trace_buffer_restore(preg, dreg)
2007-07-25 11:03:28 +08:00
# endif /* CONFIG_DEBUG_BFIN_HWTRACE_ON */
2007-06-21 16:34:08 +08:00
# ifdef CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE
2008-02-02 15:47:24 +08:00
# define DEBUG_HWTRACE_SAVE(preg, dreg) trace_buffer_save(preg, dreg)
# define DEBUG_HWTRACE_RESTORE(preg, dreg) trace_buffer_restore(preg, dreg)
2007-06-21 16:34:08 +08:00
# else
2008-02-02 15:47:24 +08:00
# define DEBUG_HWTRACE_SAVE(preg, dreg)
# define DEBUG_HWTRACE_RESTORE(preg, dreg)
2007-06-21 16:34:08 +08:00
# endif
# endif /* __ASSEMBLY__ */
# endif /* _BLACKFIN_TRACE_ */