diff options
Diffstat (limited to 'target-arm/op.c')
-rw-r--r-- | target-arm/op.c | 184 |
1 files changed, 0 insertions, 184 deletions
diff --git a/target-arm/op.c b/target-arm/op.c index c3150ada33..057a08bfc2 100644 --- a/target-arm/op.c +++ b/target-arm/op.c @@ -80,151 +80,6 @@ OPSUB(sub, sbc, T0, T0, T1) OPSUB(rsb, rsc, T0, T1, T0) -#define EIP (env->regs[15]) - -void OPPROTO op_test_eq(void) -{ - if (env->NZF == 0) - GOTO_LABEL_PARAM(1);; - FORCE_RET(); -} - -void OPPROTO op_test_ne(void) -{ - if (env->NZF != 0) - GOTO_LABEL_PARAM(1);; - FORCE_RET(); -} - -void OPPROTO op_test_cs(void) -{ - if (env->CF != 0) - GOTO_LABEL_PARAM(1); - FORCE_RET(); -} - -void OPPROTO op_test_cc(void) -{ - if (env->CF == 0) - GOTO_LABEL_PARAM(1); - FORCE_RET(); -} - -void OPPROTO op_test_mi(void) -{ - if ((env->NZF & 0x80000000) != 0) - GOTO_LABEL_PARAM(1); - FORCE_RET(); -} - -void OPPROTO op_test_pl(void) -{ - if ((env->NZF & 0x80000000) == 0) - GOTO_LABEL_PARAM(1); - FORCE_RET(); -} - -void OPPROTO op_test_vs(void) -{ - if ((env->VF & 0x80000000) != 0) - GOTO_LABEL_PARAM(1); - FORCE_RET(); -} - -void OPPROTO op_test_vc(void) -{ - if ((env->VF & 0x80000000) == 0) - GOTO_LABEL_PARAM(1); - FORCE_RET(); -} - -void OPPROTO op_test_hi(void) -{ - if (env->CF != 0 && env->NZF != 0) - GOTO_LABEL_PARAM(1); - FORCE_RET(); -} - -void OPPROTO op_test_ls(void) -{ - if (env->CF == 0 || env->NZF == 0) - GOTO_LABEL_PARAM(1); - FORCE_RET(); -} - -void OPPROTO op_test_ge(void) -{ - if (((env->VF ^ env->NZF) & 0x80000000) == 0) - GOTO_LABEL_PARAM(1); - FORCE_RET(); -} - -void OPPROTO op_test_lt(void) -{ - if (((env->VF ^ env->NZF) & 0x80000000) != 0) - GOTO_LABEL_PARAM(1); - FORCE_RET(); -} - -void OPPROTO op_test_gt(void) -{ - if (env->NZF != 0 && ((env->VF ^ env->NZF) & 0x80000000) == 0) - GOTO_LABEL_PARAM(1); - FORCE_RET(); -} - -void OPPROTO op_test_le(void) -{ - if (env->NZF == 0 || ((env->VF ^ env->NZF) & 0x80000000) != 0) - GOTO_LABEL_PARAM(1); - FORCE_RET(); -} - -void OPPROTO op_test_T0(void) -{ - if (T0) - GOTO_LABEL_PARAM(1); - FORCE_RET(); -} -void OPPROTO op_testn_T0(void) -{ - if (!T0) - GOTO_LABEL_PARAM(1); - FORCE_RET(); -} - -void OPPROTO op_movl_T0_cpsr(void) -{ - /* Execution state bits always read as zero. */ - T0 = cpsr_read(env) & ~CPSR_EXEC; - FORCE_RET(); -} - -void OPPROTO op_movl_T0_spsr(void) -{ - T0 = env->spsr; -} - -void OPPROTO op_movl_spsr_T0(void) -{ - uint32_t mask = PARAM1; - env->spsr = (env->spsr & ~mask) | (T0 & mask); -} - -void OPPROTO op_movl_cpsr_T0(void) -{ - cpsr_write(env, T0, PARAM1); - FORCE_RET(); -} - -/* 48 bit signed mul, top 32 bits */ -void OPPROTO op_imulw_T0_T1(void) -{ - uint64_t res; - res = (int64_t)((int32_t)T0) * (int64_t)((int32_t)T1); - T0 = res >> 16; -} - void OPPROTO op_addq_T0_T1(void) { uint64_t res; @@ -397,45 +252,6 @@ void OPPROTO op_rorl_T1_T0_cc(void) FORCE_RET(); } -/* exceptions */ - -void OPPROTO op_swi(void) -{ - env->exception_index = EXCP_SWI; - cpu_loop_exit(); -} - -void OPPROTO op_undef_insn(void) -{ - env->exception_index = EXCP_UDEF; - cpu_loop_exit(); -} - -void OPPROTO op_debug(void) -{ - env->exception_index = EXCP_DEBUG; - cpu_loop_exit(); -} - -void OPPROTO op_wfi(void) -{ - env->exception_index = EXCP_HLT; - env->halted = 1; - cpu_loop_exit(); -} - -void OPPROTO op_bkpt(void) -{ - env->exception_index = EXCP_BKPT; - cpu_loop_exit(); -} - -void OPPROTO op_exception_exit(void) -{ - env->exception_index = EXCP_EXCEPTION_EXIT; - cpu_loop_exit(); -} - /* VFP support. We follow the convention used for VFP instrunctions: Single precition routines have a "s" suffix, double precision a "d" suffix. */ |