#ifdef HOST_64BIT
-#if defined(HOST_ARM64)
+#if defined(HOST_ARM64) && defined(TARGET_FREEBSD)
+
+#define MCREG_X0(mc) (mc.mc_gpregs.gp_x[0])
+#define MCREG_X1(mc) (mc.mc_gpregs.gp_x[1])
+#define MCREG_X2(mc) (mc.mc_gpregs.gp_x[2])
+#define MCREG_X3(mc) (mc.mc_gpregs.gp_x[3])
+#define MCREG_X4(mc) (mc.mc_gpregs.gp_x[4])
+#define MCREG_X5(mc) (mc.mc_gpregs.gp_x[5])
+#define MCREG_X6(mc) (mc.mc_gpregs.gp_x[6])
+#define MCREG_X7(mc) (mc.mc_gpregs.gp_x[7])
+#define MCREG_X8(mc) (mc.mc_gpregs.gp_x[8])
+#define MCREG_X9(mc) (mc.mc_gpregs.gp_x[9])
+#define MCREG_X10(mc) (mc.mc_gpregs.gp_x[10])
+#define MCREG_X11(mc) (mc.mc_gpregs.gp_x[11])
+#define MCREG_X12(mc) (mc.mc_gpregs.gp_x[12])
+#define MCREG_X13(mc) (mc.mc_gpregs.gp_x[13])
+#define MCREG_X14(mc) (mc.mc_gpregs.gp_x[14])
+#define MCREG_X15(mc) (mc.mc_gpregs.gp_x[15])
+#define MCREG_X16(mc) (mc.mc_gpregs.gp_x[16])
+#define MCREG_X17(mc) (mc.mc_gpregs.gp_x[17])
+#define MCREG_X18(mc) (mc.mc_gpregs.gp_x[18])
+#define MCREG_X19(mc) (mc.mc_gpregs.gp_x[19])
+#define MCREG_X20(mc) (mc.mc_gpregs.gp_x[20])
+#define MCREG_X21(mc) (mc.mc_gpregs.gp_x[21])
+#define MCREG_X22(mc) (mc.mc_gpregs.gp_x[22])
+#define MCREG_X23(mc) (mc.mc_gpregs.gp_x[23])
+#define MCREG_X24(mc) (mc.mc_gpregs.gp_x[24])
+#define MCREG_X25(mc) (mc.mc_gpregs.gp_x[25])
+#define MCREG_X26(mc) (mc.mc_gpregs.gp_x[26])
+#define MCREG_X27(mc) (mc.mc_gpregs.gp_x[27])
+#define MCREG_X28(mc) (mc.mc_gpregs.gp_x[28])
+#define MCREG_Lr(mc) (mc.mc_gpregs.gp_lr)
+#define MCREG_Sp(mc) (mc.mc_gpregs.gp_sp)
+#define MCREG_Pc(mc) (mc.mc_gpregs.gp_elr)
+#define MCREG_Fp(mc) (mc.mc_gpregs.gp_x[29])
+
+#elif defined(HOST_ARM64)
#define MCREG_X0(mc) ((mc).regs[0])
#define MCREG_X1(mc) ((mc).regs[1])