@@ -448,7 +448,57 @@ inline void *FPREG_Xstate_Ymmh(const ucontext_t *uc)
448448
449449#if defined(HOST_ARM64)
450450
451- #ifndef TARGET_OSX
451+ #if defined(TARGET_FREEBSD)
452+
453+ #define MCREG_X0 (mc ) (mc.mc_gpregs.gp_x[0 ])
454+ #define MCREG_X1 (mc ) (mc.mc_gpregs.gp_x[1 ])
455+ #define MCREG_X2 (mc ) (mc.mc_gpregs.gp_x[2 ])
456+ #define MCREG_X3 (mc ) (mc.mc_gpregs.gp_x[3 ])
457+ #define MCREG_X4 (mc ) (mc.mc_gpregs.gp_x[4 ])
458+ #define MCREG_X5 (mc ) (mc.mc_gpregs.gp_x[5 ])
459+ #define MCREG_X6 (mc ) (mc.mc_gpregs.gp_x[6 ])
460+ #define MCREG_X7 (mc ) (mc.mc_gpregs.gp_x[7 ])
461+ #define MCREG_X8 (mc ) (mc.mc_gpregs.gp_x[8 ])
462+ #define MCREG_X9 (mc ) (mc.mc_gpregs.gp_x[9 ])
463+ #define MCREG_X10 (mc ) (mc.mc_gpregs.gp_x[10 ])
464+ #define MCREG_X11 (mc ) (mc.mc_gpregs.gp_x[11 ])
465+ #define MCREG_X12 (mc ) (mc.mc_gpregs.gp_x[12 ])
466+ #define MCREG_X13 (mc ) (mc.mc_gpregs.gp_x[13 ])
467+ #define MCREG_X14 (mc ) (mc.mc_gpregs.gp_x[14 ])
468+ #define MCREG_X15 (mc ) (mc.mc_gpregs.gp_x[15 ])
469+ #define MCREG_X16 (mc ) (mc.mc_gpregs.gp_x[16 ])
470+ #define MCREG_X17 (mc ) (mc.mc_gpregs.gp_x[17 ])
471+ #define MCREG_X18 (mc ) (mc.mc_gpregs.gp_x[18 ])
472+ #define MCREG_X19 (mc ) (mc.mc_gpregs.gp_x[19 ])
473+ #define MCREG_X20 (mc ) (mc.mc_gpregs.gp_x[20 ])
474+ #define MCREG_X21 (mc ) (mc.mc_gpregs.gp_x[21 ])
475+ #define MCREG_X22 (mc ) (mc.mc_gpregs.gp_x[22 ])
476+ #define MCREG_X23 (mc ) (mc.mc_gpregs.gp_x[23 ])
477+ #define MCREG_X24 (mc ) (mc.mc_gpregs.gp_x[24 ])
478+ #define MCREG_X25 (mc ) (mc.mc_gpregs.gp_x[25 ])
479+ #define MCREG_X26 (mc ) (mc.mc_gpregs.gp_x[26 ])
480+ #define MCREG_X27 (mc ) (mc.mc_gpregs.gp_x[27 ])
481+ #define MCREG_X28 (mc ) (mc.mc_gpregs.gp_x[28 ])
482+
483+ #define MCREG_Cpsr (mc ) (mc.mc_gpregs.gp_spsr)
484+ #define MCREG_Lr (mc ) (mc.mc_gpregs.gp_lr)
485+ #define MCREG_Sp (mc ) (mc.mc_gpregs.gp_sp)
486+ #define MCREG_Pc (mc ) (mc.mc_gpregs.gp_elr)
487+ #define MCREG_Fp (mc ) (mc.mc_gpregs.gp_x[29 ])
488+
489+ inline
490+ struct fpregs * GetNativeSigSimdContext (native_context_t *mc)
491+ {
492+ return &(mc->uc_mcontext .mc_fpregs );
493+ }
494+
495+ inline
496+ const struct fpregs * GetConstNativeSigSimdContext (const native_context_t *mc)
497+ {
498+ return GetNativeSigSimdContext (const_cast <native_context_t *>(mc));
499+ }
500+
501+ #elif !defined(TARGET_OSX) // TARGET_FREEBSD
452502
453503#define MCREG_X0 (mc ) ((mc).regs[0 ])
454504#define MCREG_X1 (mc ) ((mc).regs[1 ])
@@ -957,6 +1007,8 @@ const VfpSigFrame* GetConstNativeSigSimdContext(const native_context_t *mc)
9571007
9581008#ifdef HOST_64BIT
9591009
1010+ #ifdef HOST_AMD64
1011+
9601012#define BSDREG_Rbx (reg ) BSD_REGS_STYLE(reg,RBX,rbx)
9611013#define BSDREG_Rcx (reg ) BSD_REGS_STYLE(reg,RCX,rcx)
9621014#define BSDREG_Rdx (reg ) BSD_REGS_STYLE(reg,RDX,rdx)
@@ -978,6 +1030,45 @@ const VfpSigFrame* GetConstNativeSigSimdContext(const native_context_t *mc)
9781030#define BSDREG_R15 (reg ) BSD_REGS_STYLE(reg,R15,r15)
9791031#define BSDREG_EFlags (reg ) BSD_REGS_STYLE(reg,RFLAGS,rflags)
9801032
1033+ #elif defined(HOST_ARM64)
1034+
1035+ #define BSDREG_X0 (reg ) BSD_REGS_STYLE(reg,X[0 ],x[0 ])
1036+ #define BSDREG_X1 (reg ) BSD_REGS_STYLE(reg,X[1 ],x[1 ])
1037+ #define BSDREG_X2 (reg ) BSD_REGS_STYLE(reg,X[2 ],x[2 ])
1038+ #define BSDREG_X3 (reg ) BSD_REGS_STYLE(reg,X[3 ],x[3 ])
1039+ #define BSDREG_X4 (reg ) BSD_REGS_STYLE(reg,X[4 ],x[4 ])
1040+ #define BSDREG_X5 (reg ) BSD_REGS_STYLE(reg,X[5 ],x[5 ])
1041+ #define BSDREG_X6 (reg ) BSD_REGS_STYLE(reg,X[6 ],x[6 ])
1042+ #define BSDREG_X7 (reg ) BSD_REGS_STYLE(reg,X[7 ],x[7 ])
1043+ #define BSDREG_X8 (reg ) BSD_REGS_STYLE(reg,X[8 ],x[8 ])
1044+ #define BSDREG_X9 (reg ) BSD_REGS_STYLE(reg,X[9 ],x[9 ])
1045+ #define BSDREG_X10 (reg ) BSD_REGS_STYLE(reg,X[10 ],x[10 ])
1046+ #define BSDREG_X11 (reg ) BSD_REGS_STYLE(reg,X[11 ],x[11 ])
1047+ #define BSDREG_X12 (reg ) BSD_REGS_STYLE(reg,X[12 ],x[12 ])
1048+ #define BSDREG_X13 (reg ) BSD_REGS_STYLE(reg,X[13 ],x[13 ])
1049+ #define BSDREG_X14 (reg ) BSD_REGS_STYLE(reg,X[14 ],x[14 ])
1050+ #define BSDREG_X15 (reg ) BSD_REGS_STYLE(reg,X[15 ],x[15 ])
1051+ #define BSDREG_X16 (reg ) BSD_REGS_STYLE(reg,X[16 ],x[16 ])
1052+ #define BSDREG_X17 (reg ) BSD_REGS_STYLE(reg,X[17 ],x[17 ])
1053+ #define BSDREG_X18 (reg ) BSD_REGS_STYLE(reg,X[18 ],x[18 ])
1054+ #define BSDREG_X19 (reg ) BSD_REGS_STYLE(reg,X[19 ],x[19 ])
1055+ #define BSDREG_X20 (reg ) BSD_REGS_STYLE(reg,X[20 ],x[20 ])
1056+ #define BSDREG_X21 (reg ) BSD_REGS_STYLE(reg,X[21 ],x[21 ])
1057+ #define BSDREG_X22 (reg ) BSD_REGS_STYLE(reg,X[22 ],x[22 ])
1058+ #define BSDREG_X23 (reg ) BSD_REGS_STYLE(reg,X[23 ],x[23 ])
1059+ #define BSDREG_X24 (reg ) BSD_REGS_STYLE(reg,X[24 ],x[24 ])
1060+ #define BSDREG_X25 (reg ) BSD_REGS_STYLE(reg,X[25 ],x[25 ])
1061+ #define BSDREG_X26 (reg ) BSD_REGS_STYLE(reg,X[26 ],x[26 ])
1062+ #define BSDREG_X27 (reg ) BSD_REGS_STYLE(reg,X[27 ],x[27 ])
1063+ #define BSDREG_X28 (reg ) BSD_REGS_STYLE(reg,X[28 ],x[28 ])
1064+ #define BSDREG_Pc (reg ) BSD_REGS_STYLE(reg,Elr,elr)
1065+ #define BSDREG_Fp (reg ) BSD_REGS_STYLE(reg,X[29 ],x[29 ])
1066+ #define BSDREG_Sp (reg ) BSD_REGS_STYLE(reg,Sp,sp)
1067+ #define BSDREG_Lr (reg ) BSD_REGS_STYLE(reg,Lr,lr)
1068+ #define BSDREG_Cpsr (reg ) BSD_REGS_STYLE(reg,Spsr,spsr)
1069+
1070+ #endif // HOST_ARM64
1071+
9811072#else // HOST_64BIT
9821073
9831074#define BSDREG_Ebx (reg ) BSD_REGS_STYLE(reg,EBX,ebx)
0 commit comments