public unsafe bool CopyContext(Span <byte> buffer) { if (buffer.Length < Arm64Context.Size) return(false); fixed(byte *ptr = buffer) { Arm64Context *ctx = (Arm64Context *)ptr; ctx->ContextFlags = Arm64Context.ContextControl | Arm64Context.ContextInteger; ctx->Cpsr = (uint)pstate; ctx->X0 = regs[0]; ctx->X1 = regs[1]; ctx->X2 = regs[2]; ctx->X3 = regs[3]; ctx->X4 = regs[4]; ctx->X5 = regs[5]; ctx->X6 = regs[6]; ctx->X7 = regs[7]; ctx->X8 = regs[8]; ctx->X9 = regs[9]; ctx->X10 = regs[10]; ctx->X11 = regs[11]; ctx->X12 = regs[12]; ctx->X13 = regs[13]; ctx->X14 = regs[14]; ctx->X15 = regs[15]; ctx->X16 = regs[16]; ctx->X17 = regs[17]; ctx->X18 = regs[18]; ctx->X19 = regs[19]; ctx->X20 = regs[20]; ctx->X21 = regs[21]; ctx->X22 = regs[22]; ctx->X23 = regs[23]; ctx->X24 = regs[24]; ctx->X25 = regs[25]; ctx->X26 = regs[26]; ctx->X27 = regs[27]; ctx->X28 = regs[28]; ctx->Fp = regs[29]; ctx->Lr = regs[30]; ctx->Sp = sp; ctx->Pc = pc; } return(true); }
public unsafe bool CopyContext(uint contextFlags, uint contextSize, void *context) { if (contextSize != Arm64Context.Size) { return(false); } Arm64Context *ctx = (Arm64Context *)context; ctx->ContextFlags = Arm64Context.ContextControl | Arm64Context.ContextInteger; ctx->Cpsr = (uint)pstate; ctx->X0 = regs[0]; ctx->X1 = regs[1]; ctx->X2 = regs[2]; ctx->X3 = regs[3]; ctx->X4 = regs[4]; ctx->X5 = regs[5]; ctx->X6 = regs[6]; ctx->X7 = regs[7]; ctx->X8 = regs[8]; ctx->X9 = regs[9]; ctx->X10 = regs[10]; ctx->X11 = regs[11]; ctx->X12 = regs[12]; ctx->X13 = regs[13]; ctx->X14 = regs[14]; ctx->X15 = regs[15]; ctx->X16 = regs[16]; ctx->X17 = regs[17]; ctx->X18 = regs[18]; ctx->X19 = regs[19]; ctx->X20 = regs[20]; ctx->X21 = regs[21]; ctx->X22 = regs[22]; ctx->X23 = regs[23]; ctx->X24 = regs[24]; ctx->X25 = regs[25]; ctx->X26 = regs[26]; ctx->X27 = regs[27]; ctx->X28 = regs[28]; ctx->Fp = regs[29]; ctx->Lr = regs[30]; ctx->Sp = sp; ctx->Pc = pc; return(true); }