(bus: &mut SystemBus, addr: u64, val: u64, funct3: u8)
| 287 | let word = bus |
| 288 | .read_word(addr) |
| 289 | .map_err(|_| VmError::LoadAccessFault(addr))?; |
| 290 | Ok(0xFFFF_FFFF_0000_0000u64 | (word as u64)) |
| 291 | } |
| 292 | 3 => { |
| 293 | // FLD |
| 294 | let dw = bus |
| 295 | .read_doubleword(addr) |
| 296 | .map_err(|_| VmError::LoadAccessFault(addr))?; |
| 297 | Ok(dw) |
| 298 | } |
| 299 | _ => Err(VmError::LoadAccessFault(addr)), |
| 300 | } |
| 301 | } |
| 302 | |
| 303 | // --- FP store --- |
| 304 | |
| 305 | fn store_fp(bus: &mut SystemBus, addr: u64, bits: u64, funct3: u8) -> Result<(), VmError> { |
| 306 | match funct3 { |
| 307 | 2 => { |
| 308 | // FSW: lower 32 bits |
no test coverage detected