|
@@ -1024,8 +1024,89 @@ config DEBUG_HUNT_FOR_ZERO
|
|
|
Enabling this option will take up an extra entry in CPLB table.
|
|
|
Otherwise, there is no extra overhead.
|
|
|
|
|
|
+config DEBUG_BFIN_HWTRACE_ON
|
|
|
+ bool "Turn on Blackfin's Hardware Trace"
|
|
|
+ default y
|
|
|
+ help
|
|
|
+ All Blackfins include a Trace Unit which stores a history of the last
|
|
|
+ 16 changes in program flow taken by the program sequencer. The history
|
|
|
+ allows the user to recreate the program sequencer’s recent path. This
|
|
|
+ can be handy when an application dies - we print out the execution
|
|
|
+ path of how it got to the offending instruction.
|
|
|
+
|
|
|
+ By turning this off, you may save a tiny amount of power.
|
|
|
+
|
|
|
+choice
|
|
|
+ prompt "Omit loop Tracing"
|
|
|
+ default DEBUG_BFIN_HWTRACE_COMPRESSION_OFF
|
|
|
+ depends on DEBUG_BFIN_HWTRACE_ON
|
|
|
+ help
|
|
|
+ The trace buffer can be configured to omit recording of changes in
|
|
|
+ program flow that match either the last entry or one of the last
|
|
|
+ two entries. Omitting one of these entries from the record prevents
|
|
|
+ the trace buffer from overflowing because of any sort of loop (for, do
|
|
|
+ while, etc) in the program.
|
|
|
+
|
|
|
+ Because zero-overhead Hardware loops are not recorded in the trace buffer,
|
|
|
+ this feature can be used to prevent trace overflow from loops that
|
|
|
+ are nested four deep.
|
|
|
+
|
|
|
+config DEBUG_BFIN_HWTRACE_COMPRESSION_OFF
|
|
|
+ bool "Trace all Loops"
|
|
|
+ help
|
|
|
+ The trace buffer records all changes of flow
|
|
|
+
|
|
|
+config DEBUG_BFIN_HWTRACE_COMPRESSION_ONE
|
|
|
+ bool "Compress single-level loops"
|
|
|
+ help
|
|
|
+ The trace buffer does not record single loops - helpful if trace
|
|
|
+ is spinning on a while or do loop.
|
|
|
+
|
|
|
+config DEBUG_BFIN_HWTRACE_COMPRESSION_TWO
|
|
|
+ bool "Compress two-level loops"
|
|
|
+ help
|
|
|
+ The trace buffer does not record loops two levels deep. Helpful if
|
|
|
+ the trace is spinning in a nested loop
|
|
|
+
|
|
|
+endchoice
|
|
|
+
|
|
|
+config DEBUG_BFIN_HWTRACE_COMPRESSION
|
|
|
+ int
|
|
|
+ depends on DEBUG_BFIN_HWTRACE_ON
|
|
|
+ default 0 if DEBUG_BFIN_HWTRACE_COMPRESSION_OFF
|
|
|
+ default 1 if DEBUG_BFIN_HWTRACE_COMPRESSION_ONE
|
|
|
+ default 2 if DEBUG_BFIN_HWTRACE_COMPRESSION_TWO
|
|
|
+
|
|
|
+
|
|
|
+config DEBUG_BFIN_HWTRACE_EXPAND
|
|
|
+ bool "Expand Trace Buffer greater than 16 entries"
|
|
|
+ depends on DEBUG_BFIN_HWTRACE_ON
|
|
|
+ default n
|
|
|
+ help
|
|
|
+ By selecting this option, every time the 16 hardware entries in
|
|
|
+ the Blackfin's HW Trace buffer are full, the kernel will move them
|
|
|
+ into a software buffer, for dumping when there is an issue. This
|
|
|
+ has a great impact on performance, (an interrupt every 16 change of
|
|
|
+ flows) and should normally be turned off, except in those nasty
|
|
|
+ debugging sessions
|
|
|
+
|
|
|
+config DEBUG_BFIN_HWTRACE_EXPAND_LEN
|
|
|
+ int "Size of Trace buffer (in power of 2k)"
|
|
|
+ range 0 4
|
|
|
+ depends on DEBUG_BFIN_HWTRACE_EXPAND
|
|
|
+ default 1
|
|
|
+ help
|
|
|
+ This sets the size of the software buffer that the trace information
|
|
|
+ is kept in.
|
|
|
+ 0 for (2^0) 1k, or 256 entries,
|
|
|
+ 1 for (2^1) 2k, or 512 entries,
|
|
|
+ 2 for (2^2) 4k, or 1024 entries,
|
|
|
+ 3 for (2^3) 8k, or 2048 entries,
|
|
|
+ 4 for (2^4) 16k, or 4096 entries
|
|
|
+
|
|
|
config DEBUG_BFIN_NO_KERN_HWTRACE
|
|
|
bool "Trace user apps (turn off hwtrace in kernel)"
|
|
|
+ depends on DEBUG_BFIN_HWTRACE_ON
|
|
|
default n
|
|
|
help
|
|
|
Some pieces of the kernel contain a lot of flow changes which can
|