arch/x86-64: implement IrqFrame signal frame
This commit is contained in:
parent
77e5fcc947
commit
cdd401552e
src/arch/x86_64
@ -136,7 +136,26 @@ struct Pointer {
|
||||
|
||||
impl TaskFrame for IrqFrame {
|
||||
fn store(&self) -> SavedFrame {
|
||||
todo!()
|
||||
SavedFrame {
|
||||
rax: self.rax,
|
||||
rcx: self.rcx,
|
||||
rdx: self.rdx,
|
||||
rbx: self.rbx,
|
||||
rsi: self.rsi,
|
||||
rdi: self.rdi,
|
||||
rbp: self.rbp,
|
||||
r8: self.r8,
|
||||
r9: self.r9,
|
||||
r10: self.r10,
|
||||
r11: self.r11,
|
||||
r12: self.r12,
|
||||
r13: self.r13,
|
||||
r14: self.r14,
|
||||
r15: self.r15,
|
||||
user_ip: self.rip,
|
||||
user_sp: self.rsp,
|
||||
rflags: self.rflags,
|
||||
}
|
||||
}
|
||||
|
||||
fn restore(&mut self, _saved: &SavedFrame) {
|
||||
@ -144,31 +163,31 @@ impl TaskFrame for IrqFrame {
|
||||
}
|
||||
|
||||
fn argument(&self) -> u64 {
|
||||
todo!();
|
||||
self.rdi as _
|
||||
}
|
||||
|
||||
fn user_ip(&self) -> usize {
|
||||
todo!()
|
||||
self.rip as _
|
||||
}
|
||||
|
||||
fn user_sp(&self) -> usize {
|
||||
todo!()
|
||||
self.rsp as _
|
||||
}
|
||||
|
||||
fn set_argument(&mut self, value: u64) {
|
||||
self.rdi = value;
|
||||
}
|
||||
|
||||
fn set_return_value(&mut self, _value: u64) {
|
||||
todo!()
|
||||
fn set_return_value(&mut self, value: u64) {
|
||||
self.rax = value;
|
||||
}
|
||||
|
||||
fn set_user_ip(&mut self, _value: usize) {
|
||||
todo!()
|
||||
fn set_user_ip(&mut self, value: usize) {
|
||||
self.rip = value as _;
|
||||
}
|
||||
|
||||
fn set_user_sp(&mut self, _value: usize) {
|
||||
todo!()
|
||||
fn set_user_sp(&mut self, value: usize) {
|
||||
self.rsp = value as _;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,7 @@ use kernel_util::{
|
||||
device::RawDeviceMemoryMapping,
|
||||
table::EntryLevelExt,
|
||||
},
|
||||
sync::{guard::GuardedRef, SpinFence},
|
||||
sync::SpinFence,
|
||||
util::OneTimeInit,
|
||||
};
|
||||
use yboot_proto::{v1::AvailableMemoryRegion, LoadProtocolV1};
|
||||
|
Loading…
x
Reference in New Issue
Block a user