]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
jit: use ucontext_t for gregset access
authorStefan Reinauer <stefan.reinauer@coreboot.org>
Sun, 31 May 2026 02:56:31 +0000 (19:56 -0700)
committerStefan Reinauer <stefan.reinauer@coreboot.org>
Sun, 31 May 2026 07:33:15 +0000 (00:33 -0700)
The generic Unix exception path works with ucontext_t directly. Use that
typedef instead of struct ucontext so platforms that expose only
ucontext_t still build.

jit/exception_handler.cpp

index 60827d68580260dfaa3b6d54d5fcc268827ede1a..6b8067a9687b31649d01c9a5eede5da6276af624 100644 (file)
@@ -63,37 +63,37 @@ typedef LPEXCEPTION_POINTERS CONTEXT_T;
 
 typedef void *CONTEXT_T;
 #define HAVE_CONTEXT_T 1
-#define CONTEXT_RIP(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_RIP])
-#define CONTEXT_RAX(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_RAX])
-#define CONTEXT_RCX(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_RCX])
-#define CONTEXT_RDX(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_RDX])
-#define CONTEXT_RBX(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_RBX])
-#define CONTEXT_RSP(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_RSP])
-#define CONTEXT_RBP(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_RBP])
-#define CONTEXT_RSI(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_RSI])
-#define CONTEXT_RDI(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_RDI])
-#define CONTEXT_R8(context)  (((struct ucontext *) context)->uc_mcontext.gregs[REG_R8])
-#define CONTEXT_R9(context)  (((struct ucontext *) context)->uc_mcontext.gregs[REG_R9])
-#define CONTEXT_R10(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_R10])
-#define CONTEXT_R11(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_R11])
-#define CONTEXT_R12(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_R12])
-#define CONTEXT_R13(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_R13])
-#define CONTEXT_R14(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_R14])
-#define CONTEXT_R15(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_R15])
+#define CONTEXT_RIP(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_RIP])
+#define CONTEXT_RAX(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_RAX])
+#define CONTEXT_RCX(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_RCX])
+#define CONTEXT_RDX(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_RDX])
+#define CONTEXT_RBX(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_RBX])
+#define CONTEXT_RSP(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_RSP])
+#define CONTEXT_RBP(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_RBP])
+#define CONTEXT_RSI(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_RSI])
+#define CONTEXT_RDI(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_RDI])
+#define CONTEXT_R8(context)  (((ucontext_t *) context)->uc_mcontext.gregs[REG_R8])
+#define CONTEXT_R9(context)  (((ucontext_t *) context)->uc_mcontext.gregs[REG_R9])
+#define CONTEXT_R10(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_R10])
+#define CONTEXT_R11(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_R11])
+#define CONTEXT_R12(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_R12])
+#define CONTEXT_R13(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_R13])
+#define CONTEXT_R14(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_R14])
+#define CONTEXT_R15(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_R15])
 
 #elif defined(HAVE_STRUCT_UCONTEXT_UC_MCONTEXT_GREGS) && defined(CPU_i386)
 
 typedef void *CONTEXT_T;
 #define HAVE_CONTEXT_T 1
-#define CONTEXT_RIP(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_EIP])
-#define CONTEXT_RAX(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_EAX])
-#define CONTEXT_RCX(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_ECX])
-#define CONTEXT_RDX(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_EDX])
-#define CONTEXT_RBX(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_EBX])
-#define CONTEXT_RSP(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_ESP])
-#define CONTEXT_RBP(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_EBP])
-#define CONTEXT_RSI(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_ESI])
-#define CONTEXT_RDI(context) (((struct ucontext *) context)->uc_mcontext.gregs[REG_EDI])
+#define CONTEXT_RIP(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_EIP])
+#define CONTEXT_RAX(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_EAX])
+#define CONTEXT_RCX(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_ECX])
+#define CONTEXT_RDX(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_EDX])
+#define CONTEXT_RBX(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_EBX])
+#define CONTEXT_RSP(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_ESP])
+#define CONTEXT_RBP(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_EBP])
+#define CONTEXT_RSI(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_ESI])
+#define CONTEXT_RDI(context) (((ucontext_t *) context)->uc_mcontext.gregs[REG_EDI])
 
 #elif defined(__DARWIN_UNIX03) && defined(CPU_x86_64)