ab_riscv_interpreter/rv64/
a.rs1pub mod zaamo;
4pub mod zalrsc;
5
6use crate::rv32::a::ReservationSet;
7use crate::{
8 ExecutableInstruction, ExecutableInstructionCsr, ExecutableInstructionOperands,
9 ExecutableInstructionResult, RegisterFile, Rs1Rs2OperandValues, Rs1Rs2Operands, VirtualMemory,
10};
11use ab_riscv_macros::instruction_execution;
12use ab_riscv_primitives::prelude::*;
13use core::ops::ControlFlow;
14
15#[instruction_execution]
16const impl<Reg> ExecutableInstructionOperands for Rv64AInstruction<Reg> where
17 Reg: Register<Type = u64>
18{
19}
20
21#[instruction_execution]
22const impl<Reg, ExtState, CustomError> ExecutableInstructionCsr<ExtState, CustomError>
23 for Rv64AInstruction<Reg>
24where
25 Reg: Register<Type = u64>,
26{
27}
28
29#[instruction_execution]
30const impl<Reg, Regs, ExtState, Memory, PC, InstructionHandler, CustomError>
31 ExecutableInstruction<Regs, ExtState, Memory, PC, InstructionHandler, CustomError>
32 for Rv64AInstruction<Reg>
33where
34 Reg: [const] Register<Type = u64>,
35 Regs: [const] RegisterFile<Reg>,
36 Memory: [const] VirtualMemory,
37 ExtState: [const] ReservationSet<Reg>,
38{
39 #[inline(always)]
40 #[cfg_attr(feature = "no-panic", no_panic_const::no_panic(const))]
41 fn execute(
42 self,
43 Rs1Rs2OperandValues {
44 rs1_value,
45 rs2_value,
46 }: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>,
47 _regs: &mut Regs,
48 ext_state: &mut ExtState,
49 memory: &mut Memory,
50 _program_counter: &mut PC,
51 _system_instruction_handler: &mut InstructionHandler,
52 ) -> ExecutableInstructionResult<(), Self, CustomError> {
53 Ok(ControlFlow::Continue(Default::default()))
54 }
55}