- /* Retrieve the wrapper function */
- jit_ldxi(JIT_R0, LIGHTREC_REG_STATE,
- offsetof(struct lightrec_state, c_wrappers));
-
- /* Restore LIGHTREC_REG_STATE to its correct value */
- jit_movi(LIGHTREC_REG_STATE, (uintptr_t) state);
-
- jit_prepare();
- jit_pushargr(LIGHTREC_REG_STATE);
- jit_pushargr(LIGHTREC_REG_CYCLE);
- jit_pushargr(JIT_R0);
- jit_pushargr(JIT_R1);
- jit_finishi(c_function_wrapper);
- jit_retval_i(LIGHTREC_REG_CYCLE);
+ /* Restore temporaries from stack */
+ for (i = 0; i < NUM_TEMPS; i++) {
+ if (i + FIRST_TEMP != 1) {
+ jit_ldxi(JIT_R(i + FIRST_TEMP), LIGHTREC_REG_STATE,
+ offsetof(struct lightrec_state, wrapper_regs[i]));
+ }
+ }