/*
* m68k micro operations
- *
+ *
* Copyright (c) 2006-2007 CodeSourcery
* Written by Paul Brook
*
OP(zerof64)
{
- set_opf64(PARAM1, 0);
+ set_opf64(PARAM1, float64_zero);
FORCE_RET();
}
uint32_t quot;
uint32_t rem;
uint32_t flags;
-
+
num = env->div1;
den = env->div2;
/* ??? This needs to make sure the throwing location is accurate. */
int32_t quot;
int32_t rem;
int32_t flags;
-
+
num = env->div1;
den = env->div2;
if (den == 0)
FORCE_RET();
}
-OP(jmp)
+OP(jmp_im)
{
GOTO_LABEL_PARAM(1);
}
-/* These ops involve a function call, which probably requires a stack frame
- and breaks things on some hosts. */
-OP(jmp_z32)
+OP(set_T0_z32)
{
uint32_t arg = get_op(PARAM1);
- if (arg == 0)
- GOTO_LABEL_PARAM(2);
+ T0 = (arg == 0);
FORCE_RET();
}
-OP(jmp_nz32)
+OP(set_T0_nz32)
{
uint32_t arg = get_op(PARAM1);
- if (arg != 0)
- GOTO_LABEL_PARAM(2);
+ T0 = (arg != 0);
FORCE_RET();
}
-OP(jmp_s32)
+OP(set_T0_s32)
{
int32_t arg = get_op(PARAM1);
- if (arg < 0)
- GOTO_LABEL_PARAM(2);
+ T0 = (arg > 0);
FORCE_RET();
}
-OP(jmp_ns32)
+OP(set_T0_ns32)
{
int32_t arg = get_op(PARAM1);
- if (arg >= 0)
- GOTO_LABEL_PARAM(2);
+ T0 = (arg >= 0);
FORCE_RET();
}
-void OPPROTO op_goto_tb0(void)
-{
- GOTO_TB(op_goto_tb0, PARAM1, 0);
-}
-
-void OPPROTO op_goto_tb1(void)
+OP(jmp_T0)
{
- GOTO_TB(op_goto_tb1, PARAM1, 1);
-}
-
-OP(exit_tb)
-{
- EXIT_TB();
+ if (T0)
+ GOTO_LABEL_PARAM(1);
+ FORCE_RET();
}
-
/* Floating point. */
OP(f64_to_i32)
{