diff options
Diffstat (limited to 'src/arch/x86_64/context.rs')
| -rw-r--r-- | src/arch/x86_64/context.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/arch/x86_64/context.rs b/src/arch/x86_64/context.rs new file mode 100644 index 0000000..08fd3b6 --- /dev/null +++ b/src/arch/x86_64/context.rs @@ -0,0 +1,28 @@ +/// high level representation of the callee saved registers for thread context. The caller +/// saved registers will is pushed into the stack already upon the interrupt entry +/// fpstate is NOT saved here +#[repr(C)] +pub struct Context { + rbx: u64, + r12: u64, + r13: u64, + r14: u64, + r15: u64, + rbp: u64, + rsp: u64, +} + +/// prepare the thread (coroutine) for the first execution +pub unsafe fn settle(){ + todo!() + // it will be something like this... + // void **sp = (void**)tos; + // *(--sp) = object; // 7th parameter for kickoff + // *(--sp) = (void*)0; // return address + // *(--sp) = kickoff; // address + // regs->rsp = sp; +} + +pub unsafe fn switch(ctx_curr:usize, ctx_next:usize){ + todo!() +} |
