pub unsafe extern "C" fn n3b_migrate_asm(frame: *mut MigrationFrame)Expand description
ASM migration primitive.
§Safety
framemust point to a valid MigrationFrame mapped at the same VA in both sender and receiver address spaces.- Interrupts must be enabled before calling (the primitive will CLI).
- The caller must be on a valid kernel stack.
§Layout adjusted for a 64b align padding
Offset Field
0x00 src_ctx.r15
0x08 src_ctx.r14
0x10 src_ctx.r13
0x18 src_ctx.r12
0x20 src_ctx.rbp
0x28 src_ctx.rbx
0x30 src_ctx.rdx
0x38 src_ctx.rax
0x40 src_ctx.rflags
0x48 src_ctx.rsp
0x50 src_ctx.rip
0x58 src_ctx.cr3_pcid
0x60-0x7F (alignment padding)
0x80 dst_ctx.r15
0x88 dst_ctx.r14
0x90 dst_ctx.r13
0x98 dst_ctx.r12
0xA0 dst_ctx.rbp
0xA8 dst_ctx.rbx
0xB0 dst_ctx.rdx
0xB8 dst_ctx.rax
0xC0 dst_ctx.rflags
0xC8 dst_ctx.rsp
0xD0 dst_ctx.rip
0xD8 dst_ctx.cr3_pcid
0xE0-0xFF (alignment padding)
0x100 state (AtomicU8)
0x104 generation (AtomicU32)§Behavior
- Saves source context to
frame.src_ctx - CLI (≤3 instructions) + CR3 switch to
frame.dst_ctx.cr3_pcid - Restores destination context from
frame.dst_ctx - Sets
frame.state = Ready, incrementsgeneration - Returns via
ret(pops RIP from restoreddst_ctx.rsp)