diff --git a/src/arch/x86_64/macros.rs b/src/arch/x86_64/macros.rs index 5ad34d8d4ce6d57d75f7bc599ecbb5d2a2eac6e7..dbbd424cbf89f61d3fda6ef87e951253bdfb68e1 100644 --- a/src/arch/x86_64/macros.rs +++ b/src/arch/x86_64/macros.rs @@ -281,7 +281,9 @@ impl InterruptStack { self.scratch.rcx = all.rcx; self.scratch.rax = all.rax; self.iret.rip = all.rip; - self.iret.cs = all.cs; + + // These should probably be restricted + // self.iret.cs = all.cs; // self.iret.rflags = all.eflags; } /// Enables the "Trap Flag" in the FLAGS register, causing the CPU diff --git a/src/scheme/proc.rs b/src/scheme/proc.rs index b91831a415ac39e41e18cab9ec3efc66ffa69caf..750ae64247116c74f242e0561f34af78d75d4957 100644 --- a/src/scheme/proc.rs +++ b/src/scheme/proc.rs @@ -26,20 +26,6 @@ use core::{ }; use spin::{Mutex, RwLock}; -#[derive(Clone, Copy)] -enum RegsKind { - Float, - Int -} -#[derive(Clone)] -enum Operation { - Memory(VirtualAddress), - Regs(RegsKind), - Trace { - clones: Vec<ContextId> - } -} - fn with_context<F, T>(pid: ContextId, callback: F) -> Result<T> where F: FnOnce(&Context) -> Result<T> { @@ -101,6 +87,20 @@ fn try_stop_context<F, T>(pid: ContextId, restart_after: bool, mut callback: F) } } +#[derive(Clone, Copy)] +enum RegsKind { + Float, + Int +} +#[derive(Clone)] +enum Operation { + Memory(VirtualAddress), + Regs(RegsKind), + Trace { + clones: Vec<ContextId> + } +} + #[derive(Clone, Copy)] struct Info { pid: ContextId,