diff options
| author | taitep <taitep@taitep.se> | 2025-12-31 13:16:32 +0100 |
|---|---|---|
| committer | taitep <taitep@taitep.se> | 2025-12-31 13:16:32 +0100 |
| commit | 21a8479ce99f54012150cc948ed7e5bb066c61e0 (patch) | |
| tree | 49c5e5fa8736f7990016e410f2714d6e1b0db8ee /src/mem.rs | |
| parent | 09fe12f5165d582c7b83537e38ef8e5d85716f8b (diff) | |
Make MMIO devices not have control of the address of exceptions
Diffstat (limited to 'src/mem.rs')
| -rw-r--r-- | src/mem.rs | 80 |
1 files changed, 32 insertions, 48 deletions
@@ -49,7 +49,7 @@ impl MemConfig { addr, })?; - interface.read_dword(addr) + interface.read_dword(addr).map_err(|e| e.with_addr(addr)) } } pub fn read_word(&self, addr: u64) -> Result<u32, MemoryException> { @@ -67,7 +67,7 @@ impl MemConfig { addr, })?; - interface.read_word(addr) + interface.read_word(addr).map_err(|e| e.with_addr(addr)) } } pub fn read_hword(&self, addr: u64) -> Result<u16, MemoryException> { @@ -84,7 +84,7 @@ impl MemConfig { type_: MemoryExceptionType::AccessFault, addr, })?; - interface.read_hword(addr) + interface.read_hword(addr).map_err(|e| e.with_addr(addr)) } } pub fn read_byte(&self, addr: u64) -> Result<u8, MemoryException> { @@ -95,7 +95,7 @@ impl MemConfig { type_: MemoryExceptionType::AccessFault, addr, })?; - interface.read_byte(addr) + interface.read_byte(addr).map_err(|e| e.with_addr(addr)) } } @@ -113,7 +113,9 @@ impl MemConfig { type_: MemoryExceptionType::AccessFault, addr, })?; - interface.write_dword(addr, value) + interface + .write_dword(addr, value) + .map_err(|e| e.with_addr(addr)) } } pub fn write_word(&self, addr: u64, value: u32) -> Result<(), MemoryException> { @@ -130,7 +132,9 @@ impl MemConfig { type_: MemoryExceptionType::AccessFault, addr, })?; - interface.write_word(addr, value) + interface + .write_word(addr, value) + .map_err(|e| e.with_addr(addr)) } } pub fn write_hword(&self, addr: u64, value: u16) -> Result<(), MemoryException> { @@ -147,7 +151,9 @@ impl MemConfig { type_: MemoryExceptionType::AccessFault, addr, })?; - interface.write_hword(addr, value) + interface + .write_hword(addr, value) + .map_err(|e| e.with_addr(addr)) } } pub fn write_byte(&self, addr: u64, value: u8) -> Result<(), MemoryException> { @@ -158,7 +164,9 @@ impl MemConfig { type_: MemoryExceptionType::AccessFault, addr, })?; - interface.write_byte(addr, value) + interface + .write_byte(addr, value) + .map_err(|e| e.with_addr(addr)) } } @@ -531,53 +539,29 @@ impl Default for MmioSecondLevel { #[allow(unused_variables)] pub trait MemDeviceInterface { - fn write_dword(&self, addr: u64, value: u64) -> Result<(), MemoryException> { - Err(MemoryException { - type_: MemoryExceptionType::AccessFault, - addr, - }) + fn write_dword(&self, addr: u64, value: u64) -> Result<(), MemoryExceptionType> { + Err(MemoryExceptionType::AccessFault) } - fn write_word(&self, addr: u64, value: u32) -> Result<(), MemoryException> { - Err(MemoryException { - type_: MemoryExceptionType::AccessFault, - addr, - }) + fn write_word(&self, addr: u64, value: u32) -> Result<(), MemoryExceptionType> { + Err(MemoryExceptionType::AccessFault) } - fn write_hword(&self, addr: u64, value: u16) -> Result<(), MemoryException> { - Err(MemoryException { - type_: MemoryExceptionType::AccessFault, - addr, - }) + fn write_hword(&self, addr: u64, value: u16) -> Result<(), MemoryExceptionType> { + Err(MemoryExceptionType::AccessFault) } - fn write_byte(&self, addr: u64, value: u8) -> Result<(), MemoryException> { - Err(MemoryException { - type_: MemoryExceptionType::AccessFault, - addr, - }) + fn write_byte(&self, addr: u64, value: u8) -> Result<(), MemoryExceptionType> { + Err(MemoryExceptionType::AccessFault) } - fn read_dword(&self, addr: u64) -> Result<u64, MemoryException> { - Err(MemoryException { - type_: MemoryExceptionType::AccessFault, - addr, - }) + fn read_dword(&self, addr: u64) -> Result<u64, MemoryExceptionType> { + Err(MemoryExceptionType::AccessFault) } - fn read_word(&self, addr: u64) -> Result<u32, MemoryException> { - Err(MemoryException { - type_: MemoryExceptionType::AccessFault, - addr, - }) + fn read_word(&self, addr: u64) -> Result<u32, MemoryExceptionType> { + Err(MemoryExceptionType::AccessFault) } - fn read_hword(&self, addr: u64) -> Result<u16, MemoryException> { - Err(MemoryException { - type_: MemoryExceptionType::AccessFault, - addr, - }) + fn read_hword(&self, addr: u64) -> Result<u16, MemoryExceptionType> { + Err(MemoryExceptionType::AccessFault) } - fn read_byte(&self, addr: u64) -> Result<u8, MemoryException> { - Err(MemoryException { - type_: MemoryExceptionType::AccessFault, - addr, - }) + fn read_byte(&self, addr: u64) -> Result<u8, MemoryExceptionType> { + Err(MemoryExceptionType::AccessFault) } } |
