|.define KBASE, edi // Must be C callee-save.
|.define KBASEa, KBASE
|.define PC, esi // Must be C callee-save.
+|.define DISPATCH, ebx // Must be C callee-save.
|.elif X64WIN
|.define KBASE, edi // Must be C callee-save.
|.define KBASEa, rdi
|.define PC, esi // Must be C callee-save.
+|.define DISPATCH, ebx // Must be C callee-save.
|.else
|.define KBASE, r15d // Must be C callee-save.
|.define KBASEa, r15
-|.define PC, r14d // Must be C callee-save.
+|.define PC, ebx // Must be C callee-save.
+|.define DISPATCH, r14d // Must be C callee-save.
|.endif
-|.define DISPATCH, ebx // Must be C callee-save.
|
|.define RA, ecx
|.if X64; .define RAa, rcx; .else; .define RAa, RA; .endif
/* These definitions must match with the *.dasc file(s): */
RID_BASE = RID_EDX, /* Interpreter BASE. */
+#if LJ_64 && !defined(_WIN64)
+ RID_PC = RID_EBX, /* Interpreter PC. */
+ RID_DISPATCH = RID_R14D, /* Interpreter DISPATCH table. */
+#else
RID_PC = RID_ESI, /* Interpreter PC. */
RID_DISPATCH = RID_EBX, /* Interpreter DISPATCH table. */
+#endif
/* Register ranges [min, max) and number of registers. */
RID_MIN_GPR = RID_EAX,