Slot Inst | 6 3 | 6 2 | 6 1 | 6 0 | 5 9 | 5 8 | 5 7 | 5 6 | 5 5 | 5 4 | 5 3 | 5 2 | 5 1 | 5 0 | 4 9 | 4 8 | 4 7 | 4 6 | 4 5 | 4 4 | 4 3 | 4 2 | 4 1 | 4 0 | 3 9 | 3 8 | 3 7 | 3 6 | 3 5 | 3 4 | 3 3 | 3 2 | 3 1 | 3 0 | 2 9 | 2 8 | 2 7 | 2 6 | 2 5 | 2 4 | 2 3 | 2 2 | 2 1 | 2 0 | 1 9 | 1 8 | 1 7 | 1 6 | 1 5 | 1 4 | 1 3 | 1 2 | 1 1 | 1 0 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Format x24 - 24 bit(s) | 0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BREAK | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||||||||||||||||||||||||||||||||||||||||||||
s | 3 | 2 | 1 | 0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
t | 3 | 2 | 1 | 0 |
BREAK 0..15, 0..15
extern void XT_BREAK(immediate imms, immediate immt);
(please consult the Xtensa ® Instruction Set Architecture Reference Manual for any cross references and additional information)
This instruction simply raises an exception when it is executed and PS.INTLEVEL
<
DEBUGLEVEL
. The high-priority vector for DEBUGLEVEL
is used. The DEBUGCAUSE
register is written as part of raising the exception to indicate that BREAK
raised the debug exception. The address of the BREAK
instruction is stored in EPC[DEBUGLEVEL]
. The s
and t
fields of the instruction word are not used by the processor; they are available for use by the software. When PS.INTLEVEL
>=
DEBUGLEVEL
, BREAK
is a no-op.
The BREAK
instruction typically calls a debugger when program execution reaches a certain point (a "breakpoint"). The instruction at the breakpoint is replaced with the BREAK
instruction. To continue execution after a breakpoint is reached, the debugger must re-write the BREAK
to the original instruction, single-step by one instruction, and then put back the BREAK
instruction again.
Writing instructions requires special consideration. See the ISYNC
instruction for more information.
When it is not possible to write the instruction memory (for example, for ROM code), the IBREAKA
feature provides breakpoint capabilities (see Debug Option).
Software can also use BREAK
to indicate an error condition that requires the programmer's attention. The s
and t
fields may encode information about the situation.
BREAK
is a 24-bit instruction. The BREAK.N
density-option instruction performs a similar operation in a 16-bit encoding.
if PS.INTLEVEL < DEBUGLEVEL then EPC[DEBUGLEVEL] ← PC EPS[DEBUGLEVEL] ← PS DEBUGCAUSE ← 001000 nextPC ← InterruptVector[DEBUGLEVEL] PS.EXCM ← 1 PS.INTLEVEL ← DEBUGLEVEL endif
In | Out |
---|---|
PSEXCM Mstage , PSINTLEVEL Mstage
|