pub trait SystemInstructionHandler<Reg, Regs, Memory, PC>where
Reg: Register,{
// Required method
fn handle_ecall(
&mut self,
regs: &mut Regs,
memory: &mut Memory,
program_counter: &mut PC,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type>>;
// Provided methods
fn handle_fence(&mut self, pred: u8, succ: u8) { ... }
fn handle_fence_tso(&mut self) { ... }
fn handle_ebreak(
&mut self,
regs: &mut Regs,
memory: &mut Memory,
program_counter: &mut PC,
instruction_size: u8,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type>> { ... }
}Expand description
Custom handler for system instructions ecall and ebreak
Required Methods§
Sourcefn handle_ecall(
&mut self,
regs: &mut Regs,
memory: &mut Memory,
program_counter: &mut PC,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type>>
fn handle_ecall( &mut self, regs: &mut Regs, memory: &mut Memory, program_counter: &mut PC, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type>>
Handle an ecall instruction
Provided Methods§
Sourcefn handle_fence(&mut self, pred: u8, succ: u8)
fn handle_fence(&mut self, pred: u8, succ: u8)
Handle a fence instruction
Sourcefn handle_fence_tso(&mut self)
fn handle_fence_tso(&mut self)
Handle a fence.tso instruction
Sourcefn handle_ebreak(
&mut self,
regs: &mut Regs,
memory: &mut Memory,
program_counter: &mut PC,
instruction_size: u8,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type>>
fn handle_ebreak( &mut self, regs: &mut Regs, memory: &mut Memory, program_counter: &mut PC, instruction_size: u8, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type>>
Handle an ebreak (or compressed c.ebreak) instruction
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".