c.ebreak

Breakpoint exception.

This instruction is defined by:

Encoding

svg

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.

Access

M

HS

U

VS

VU

Always

Always

Always

Always

Always

Decode Variables

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();
}

Exceptions

This instruction may result in the following synchronous exceptions:

  • Breakpoint