(ADR_RES_CNT): Decreased by one (%fp).
* src/vm/jit/m68k/linux/md-abi.c (nregdescadr): Declared %fp a
REG_SAV.
* src/vm/jit/m68k/arch.h (SUPPORT_DIVISION): Defined.
* src/vm/jit/m68k/asmpart.S (asm_handle_exception): Additional
logic to restore %fp when unwinding the stack.
#define U8_AVAILABLE 1
-#define SUPPORT_DIVISION 0
+#define SUPPORT_DIVISION 1
#define SUPPORT_LONG 0
#define SUPPORT_FMOD 0
/* only store REG_ZERO */
-/* float **********************************************************************/
#if defined(ENABLE_SOFTFLOAT)
#define SUPPORT_FLOAT 0
#define SUPPORT_FLOAT 1
#define SUPPORT_DOUBLE 1
+/* float **********************************************************************/
#if defined(ENABLE_SOFT_FLOAT_CMP)
#define SUPPORT_FLOAT_CMP 0
#else
#define SUPPORT_FLOAT_CMP 1
#endif
+/* double *********************************************************************/
#if defined(ENABLE_SOFT_DOUBLE_CMP)
#define SUPPORT_DOUBLE_CMP 0
#else
#endif
-/* double *********************************************************************/
movel %a3@(IntSave), %d0
andil #0xffff0000, %d0 /* this is AdrSave */
- tstl %d0
- beq L_handle_exception_nat_catched_no_adr
+ lsrl #8, %d0
+ lsrl #8, %d0
+
+ cmpb #0, %d0
+ beq L_asm_handle_ex_adr_done
+ moveal -(%a0), %fp
+
+ cmpb #1,%d0
+ beq L_asm_handle_ex_adr_done
moveal -(%a0), %a5
-L_handle_exception_nat_catched_no_adr:
+
+L_asm_handle_ex_adr_done:
#if !defined(ENABLE_SOFTFLOAT)
movel %a3@(FltSave), %d0
/* Address register description */
/* A6 is used as framepointer by native code, so be sure it is REG_RES */
/* A0, A1, ATMP1, ATMP2, ATMP3, A5, REG_FP, REG_SP */
-s4 nregdescadr[] = { REG_TMP, REG_TMP, REG_RES, REG_RES, REG_RES, REG_SAV, REG_RES, REG_RES, REG_END };
+s4 nregdescadr[] = { REG_TMP, REG_TMP, REG_RES, REG_RES, REG_RES, REG_SAV, REG_SAV, REG_RES, REG_END };
/* Floatingpoint register description */
#endif
#define ADR_REG_CNT 8
-#define ADR_SAV_CNT 1
+#define ADR_SAV_CNT 2
#define ADR_ARG_CNT 0
#define ADR_TMP_CNT 2
-#define ADR_RES_CNT 5
+#define ADR_RES_CNT 4
/* packed register defines ***************************************************/