diff --git a/src/arch/x86/interrupt/handler.rs b/src/arch/x86/interrupt/handler.rs index 9b22e994f7..3ced68da11 100644 --- a/src/arch/x86/interrupt/handler.rs +++ b/src/arch/x86/interrupt/handler.rs @@ -13,6 +13,12 @@ pub struct ScratchRegisters { } impl ScratchRegisters { + pub fn a(&self) -> usize { + self.eax + } + pub fn b(&self) -> usize { + self.edx + } pub fn dump(&self) { println!("EAX: {:08x}", { self.eax }); println!("ECX: {:08x}", { self.ecx }); @@ -130,6 +136,12 @@ impl InterruptStack { pub fn stack_pointer(&self) -> usize { self.iret.esp } + pub fn instr_pointer(&self) -> usize { + self.iret.eip + } + pub fn flags(&self) -> usize { + self.iret.eflags + } pub fn set_instr_pointer(&mut self, eip: usize) { self.iret.eip = eip; } diff --git a/src/context/context.rs b/src/context/context.rs index 2323130a11..68f3ac6ca2 100644 --- a/src/context/context.rs +++ b/src/context/context.rs @@ -1,6 +1,6 @@ use alloc::{borrow::Cow, sync::Arc, vec::Vec}; -use syscall::{SigProcControl, Sigcontrol, SIGKILL, SIGSTOP}; -use core::{cmp::Ordering, mem::{self, size_of}, num::NonZeroUsize, sync::atomic::AtomicU64}; +use syscall::{SigProcControl, Sigcontrol, SIGKILL, SIGSTOP, AtomicU64}; +use core::{cmp::Ordering, mem::{self, size_of}, num::NonZeroUsize}; use spin::RwLock; use crate::{ diff --git a/syscall b/syscall index 4d708dc980..c230cec21c 160000 --- a/syscall +++ b/syscall @@ -1 +1 @@ -Subproject commit 4d708dc98013a20572eb0819a8b87f50fdff5743 +Subproject commit c230cec21c5f2bce486140b977ce1f6860d6df93