fsave: set high bits of 16-bit fields
This commit is contained in:
parent
530105e934
commit
3c81e70794
|
@ -551,14 +551,15 @@ pub unsafe fn fpu_fstenv32(addr: i32) {
|
|||
return;
|
||||
},
|
||||
}
|
||||
safe_write16(addr, (*fpu_control_word).into()).unwrap();
|
||||
safe_write16(addr + 4, fpu_load_status_word().into()).unwrap();
|
||||
safe_write16(addr + 8, fpu_load_tag_word()).unwrap();
|
||||
let high_bits = 0xFFFF0000u32 as i32;
|
||||
safe_write32(addr + 0, high_bits + *fpu_control_word as i32).unwrap();
|
||||
safe_write32(addr + 4, high_bits + fpu_load_status_word() as i32).unwrap();
|
||||
safe_write32(addr + 8, high_bits + fpu_load_tag_word()).unwrap();
|
||||
safe_write32(addr + 12, *fpu_ip).unwrap();
|
||||
safe_write16(addr + 16, *fpu_ip_selector).unwrap();
|
||||
safe_write16(addr + 18, *fpu_opcode).unwrap();
|
||||
safe_write32(addr + 20, *fpu_dp).unwrap();
|
||||
safe_write16(addr + 24, *fpu_dp_selector).unwrap();
|
||||
safe_write32(addr + 24, high_bits | *fpu_dp_selector).unwrap();
|
||||
}
|
||||
#[no_mangle]
|
||||
pub unsafe fn fpu_load_tag_word() -> i32 {
|
||||
|
|
Loading…
Reference in a new issue