Nothing to see here, move along
at main 31 lines 820 B view raw
1use crate::proc::context::{CpuContext, IpcMessage, Reply}; 2 3pub fn extract_from_context(ctx: &mut CpuContext) -> IpcMessage { 4 let msg = IpcMessage::from_regs([ctx.rsi, ctx.rdx, ctx.r10, ctx.r8, ctx.r9, ctx.r12]); 5 ctx.rsi = 0; 6 ctx.rdx = 0; 7 ctx.r10 = 0; 8 ctx.r8 = 0; 9 ctx.r9 = 0; 10 ctx.r12 = 0; 11 msg 12} 13 14pub fn extract_reply_from_context(ctx: &mut CpuContext) -> IpcMessage<Reply> { 15 let msg = IpcMessage::from_reply_regs([ctx.rdx, ctx.r10, ctx.r8, ctx.r9, ctx.r12]); 16 ctx.rdx = 0; 17 ctx.r10 = 0; 18 ctx.r8 = 0; 19 ctx.r9 = 0; 20 ctx.r12 = 0; 21 msg 22} 23 24pub fn inject_into_context(ctx: &mut CpuContext, msg: &IpcMessage) { 25 ctx.rsi = msg.regs[0]; 26 ctx.rdx = msg.regs[1]; 27 ctx.r10 = msg.regs[2]; 28 ctx.r8 = msg.regs[3]; 29 ctx.r9 = msg.regs[4]; 30 ctx.r12 = msg.regs[5]; 31}