Nothing to see here, move along
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}