c.ebreak
Breakpoint exception.
This instruction is defined by:
Synopsis
The C.EBREAK instruction is used by debuggers to cause control to be transferred back to a debugging environment. Unless overridden by an external debug environment, C.EBREAK raises a breakpoint exception and performs no other operation.
As described in the C Standard Extension for Compressed Instructions, the c.ebreak instruction performs the same operation as the EBREAK instruction. |
EBREAK causes the receiving privilege mode’s epc register to be set to the address of the EBREAK instruction itself, not the address of the following instruction. As EBREAK causes a synchronous exception, it is not considered to retire, and should not increment the minstret CSR.
Execution
-
Pruned, XLEN == 64
-
Original
raise_precise(ExceptionCode::Breakpoint, mode(), $pc);
if (implemented?(ExtensionName::C) && (CSR[misa].C == 1'b0)) {
raise(ExceptionCode::IllegalInstruction, mode(), $encoding);
}
if (TRAP_ON_EBREAK) {
raise_precise(ExceptionCode::Breakpoint, mode(), $pc);
} else {
eei_ebreak();
}