Parcourir la source

FFI: Fix alignment of C call structure.

Mike Pall il y a 13 ans
Parent
commit
77183e75f2
1 fichiers modifiés avec 5 ajouts et 1 suppressions
  1. 5 1
      src/lj_ccall.h

+ 5 - 1
src/lj_ccall.h

@@ -36,6 +36,7 @@
 #endif
 
 #define CCALL_SPS_FREE		1
+#define CCALL_ALIGN_CALLSTATE	16
 
 typedef LJ_ALIGN(16) union FPRArg {
   double d[2];
@@ -117,6 +118,9 @@ typedef union FPRArg {
 #ifndef CCALL_ALIGN_STACKARG
 #define CCALL_ALIGN_STACKARG	1
 #endif
+#ifndef CCALL_ALIGN_CALLSTATE
+#define CCALL_ALIGN_CALLSTATE	8
+#endif
 
 #define CCALL_NUM_GPR \
   (CCALL_NARG_GPR > CCALL_NRET_GPR ? CCALL_NARG_GPR : CCALL_NRET_GPR)
@@ -131,7 +135,7 @@ LJ_STATIC_ASSERT(CCALL_NUM_FPR <= CCALL_MAX_FPR);
 
 /* -- C call state -------------------------------------------------------- */
 
-typedef LJ_ALIGN(8) struct CCallState {
+typedef LJ_ALIGN(CCALL_ALIGN_CALLSTATE) struct CCallState {
   void (*func)(void);		/* Pointer to called function. */
   uint32_t spadj;		/* Stack pointer adjustment. */
   uint8_t nsp;			/* Number of stack slots. */