]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
PPC: Add support for shifted MULTRES.
authorMike Pall <mike>
Mon, 13 Sep 2010 19:50:08 +0000 (21:50 +0200)
committerMike Pall <mike>
Mon, 13 Sep 2010 19:50:27 +0000 (21:50 +0200)
src/lj_dispatch.c
src/lj_frame.h

index 3b1be7e213b9a07d1275bcbc7b2bf47f888da874..80a6ef2f4ed0ce7bdba95bfdd6fc0a3ddc0293a2 100644 (file)
@@ -355,7 +355,7 @@ void LJ_FASTCALL lj_dispatch_ins(lua_State *L, const BCIns *pc)
   global_State *g = G(L);
   BCReg slots;
   setcframe_pc(cf, pc);
-  slots = cur_topslot(pt, pc, cframe_multres(cf));
+  slots = cur_topslot(pt, pc, cframe_multres_n(cf));
   L->top = L->base + slots;  /* Fix top. */
 #if LJ_HASJIT
   {
index da33420b5a21397c7843944fb681b2c6c9b74b86..c4931072806429ae137aedcb5a659b658ad1f197 100644 (file)
@@ -67,6 +67,7 @@ enum {
 #define CFRAME_OFS_MULTRES     (5*4)
 #define CFRAME_SIZE            (12*4)
 #define CFRAME_SIZE_JIT                CFRAME_SIZE
+#define CFRAME_SHIFT_MULTRES   0
 #elif LJ_TARGET_X64
 #if _WIN64
 #define CFRAME_OFS_PREV                (13*8)
@@ -77,6 +78,7 @@ enum {
 #define CFRAME_OFS_MULTRES     (21*4)
 #define CFRAME_SIZE            (10*8)
 #define CFRAME_SIZE_JIT                (CFRAME_SIZE + 9*16 + 4*8)
+#define CFRAME_SHIFT_MULTRES   0
 #else
 #define CFRAME_OFS_PREV                (4*8)
 #define CFRAME_OFS_PC          (7*4)
@@ -86,6 +88,7 @@ enum {
 #define CFRAME_OFS_MULTRES     (1*4)
 #define CFRAME_SIZE            (10*8)
 #define CFRAME_SIZE_JIT                (CFRAME_SIZE + 16)
+#define CFRAME_SHIFT_MULTRES   0
 #endif
 #elif LJ_TARGET_PPCSPE
 #define CFRAME_OFS_ERRF                28
@@ -96,6 +99,7 @@ enum {
 #define CFRAME_OFS_MULTRES     8
 #define CFRAME_SIZE            176
 #define CFRAME_SIZE_JIT                CFRAME_SIZE
+#define CFRAME_SHIFT_MULTRES   3
 #else
 #error "Missing CFRAME_* definitions for this architecture"
 #endif
@@ -108,6 +112,7 @@ enum {
 #define cframe_nres(cf)                (*(int32_t *)(((char *)(cf))+CFRAME_OFS_NRES))
 #define cframe_prev(cf)                (*(void **)(((char *)(cf))+CFRAME_OFS_PREV))
 #define cframe_multres(cf)  (*(uint32_t *)(((char *)(cf))+CFRAME_OFS_MULTRES))
+#define cframe_multres_n(cf)   (cframe_multres((cf)) >> CFRAME_SHIFT_MULTRES)
 #define cframe_L(cf) \
   (&gcref(*(GCRef *)(((char *)(cf))+CFRAME_OFS_L))->th)
 #define cframe_pc(cf) \