Skip to main content

RegistersMemoryInterface

Trait RegistersMemoryInterface 

Source
pub trait RegistersMemoryInterface {
    type Register: TryFrom<u32>;

    // Required methods
    fn read32(
        &mut self,
        reg: Self::Register,
        env: &mut Env,
    ) -> MemoryReadResult<u32>;
    fn write32(
        &mut self,
        reg: Self::Register,
        value: u32,
        env: &mut Env,
    ) -> MemoryWriteResult;
    fn size(&self) -> u32;

    // Provided method
    fn update(&mut self, _env: &mut Env) { ... }
}
Expand description

Similair to MemoryInterface for peripherals that use an enumeration to identify registers.

A blanket implementation for MemoryInterface exists and manages the conversion from the u32 address to read/write into the register enumeration value. When the address is invalid this blanket implementation returns an MemoryAccessError::InvalidAddress error.

Required Associated Types§

Required Methods§

Source

fn read32( &mut self, reg: Self::Register, env: &mut Env, ) -> MemoryReadResult<u32>

Source

fn write32( &mut self, reg: Self::Register, value: u32, env: &mut Env, ) -> MemoryWriteResult

Source

fn size(&self) -> u32

Provided Methods§

Source

fn update(&mut self, _env: &mut Env)

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§