diff options
Diffstat (limited to 'target-i386/seg_helper.c')
-rw-r--r-- | target-i386/seg_helper.c | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/target-i386/seg_helper.c b/target-i386/seg_helper.c index 4f269416a5..b5f3d72fe3 100644 --- a/target-i386/seg_helper.c +++ b/target-i386/seg_helper.c @@ -1379,80 +1379,6 @@ bool x86_cpu_exec_interrupt(CPUState *cs, int interrupt_request) return ret; } -void helper_enter_level(CPUX86State *env, int level, int data32, - target_ulong t1) -{ - target_ulong ssp; - uint32_t esp_mask, esp, ebp; - - esp_mask = get_sp_mask(env->segs[R_SS].flags); - ssp = env->segs[R_SS].base; - ebp = env->regs[R_EBP]; - esp = env->regs[R_ESP]; - if (data32) { - /* 32 bit */ - esp -= 4; - while (--level) { - esp -= 4; - ebp -= 4; - cpu_stl_data_ra(env, ssp + (esp & esp_mask), - cpu_ldl_data_ra(env, ssp + (ebp & esp_mask), - GETPC()), - GETPC()); - } - esp -= 4; - cpu_stl_data_ra(env, ssp + (esp & esp_mask), t1, GETPC()); - } else { - /* 16 bit */ - esp -= 2; - while (--level) { - esp -= 2; - ebp -= 2; - cpu_stw_data_ra(env, ssp + (esp & esp_mask), - cpu_lduw_data_ra(env, ssp + (ebp & esp_mask), - GETPC()), - GETPC()); - } - esp -= 2; - cpu_stw_data_ra(env, ssp + (esp & esp_mask), t1, GETPC()); - } -} - -#ifdef TARGET_X86_64 -void helper_enter64_level(CPUX86State *env, int level, int data64, - target_ulong t1) -{ - target_ulong esp, ebp; - - ebp = env->regs[R_EBP]; - esp = env->regs[R_ESP]; - - if (data64) { - /* 64 bit */ - esp -= 8; - while (--level) { - esp -= 8; - ebp -= 8; - cpu_stq_data_ra(env, esp, cpu_ldq_data_ra(env, ebp, GETPC()), - GETPC()); - } - esp -= 8; - cpu_stq_data_ra(env, esp, t1, GETPC()); - } else { - /* 16 bit */ - esp -= 2; - while (--level) { - esp -= 2; - ebp -= 2; - cpu_stw_data_ra(env, esp, cpu_lduw_data_ra(env, ebp, GETPC()), - GETPC()); - } - esp -= 2; - cpu_stw_data_ra(env, esp, t1, GETPC()); - } -} -#endif - void helper_lldt(CPUX86State *env, int selector) { SegmentCache *dt; |