-#if defined(__FreeBSD__)
- mctx->eax = ctx->uc_mcontext.mc_eax;
- mctx->ebx = ctx->uc_mcontext.mc_ebx;
- mctx->ecx = ctx->uc_mcontext.mc_ecx;
- mctx->edx = ctx->uc_mcontext.mc_edx;
- mctx->ebp = ctx->uc_mcontext.mc_ebp;
- mctx->esp = ctx->uc_mcontext.mc_esp;
- mctx->esi = ctx->uc_mcontext.mc_esi;
- mctx->edi = ctx->uc_mcontext.mc_edi;
- mctx->eip = ctx->uc_mcontext.mc_eip;
-#else
- mctx->eax = ctx->uc_mcontext.gregs [REG_EAX];
- mctx->ebx = ctx->uc_mcontext.gregs [REG_EBX];
- mctx->ecx = ctx->uc_mcontext.gregs [REG_ECX];
- mctx->edx = ctx->uc_mcontext.gregs [REG_EDX];
- mctx->ebp = ctx->uc_mcontext.gregs [REG_EBP];
- mctx->esp = ctx->uc_mcontext.gregs [REG_ESP];
- mctx->esi = ctx->uc_mcontext.gregs [REG_ESI];
- mctx->edi = ctx->uc_mcontext.gregs [REG_EDI];
- mctx->eip = ctx->uc_mcontext.gregs [REG_EIP];
-#endif
+ mctx->eax = UCONTEXT_REG_EAX (ctx);
+ mctx->ebx = UCONTEXT_REG_EBX (ctx);
+ mctx->ecx = UCONTEXT_REG_ECX (ctx);
+ mctx->edx = UCONTEXT_REG_EDX (ctx);
+ mctx->ebp = UCONTEXT_REG_EBP (ctx);
+ mctx->esp = UCONTEXT_REG_ESP (ctx);
+ mctx->esi = UCONTEXT_REG_ESI (ctx);
+ mctx->edi = UCONTEXT_REG_EDI (ctx);
+ mctx->eip = UCONTEXT_REG_EIP (ctx);