MCPcopy Create free account
hub / github.com/LPC4/Full-Stack / store_fp

Function store_fp

crates/virtual-machine/src/cpu/pipeline/memory.rs:331–345  ·  view source on GitHub ↗
(bus: &mut SystemBus, addr: u64, bits: u64, funct3: u8)

Source from the content-addressed store, hash-verified

329 addr: u64,
330 val: u64,
331) -> Result<u64, VmError> {
332 let is_word = funct3 == 2;
333
334 // Natural alignment is required for all atomics: 4-byte for .W, 8-byte for .D.
335 let align = if is_word { 4u64 } else { 8u64 };
336 if !addr.is_multiple_of(align) {
337 return Err(VmError::StoreAccessFault(addr));
338 }
339
340 match funct5 {
341 // LR
342 0x02 => {
343 *reservation = Some(addr);
344 let result = if is_word {
345 let w = bus
346 .read_word(addr)
347 .map_err(|_| VmError::LoadAccessFault(addr))?;
348 (w as i32) as i64 as u64

Callers 1

memory_stage_with_pmpFunction · 0.85

Calls 2

write_wordMethod · 0.45
write_doublewordMethod · 0.45

Tested by

no test coverage detected