| 1732 |
/* protected mode call */ |
/* protected mode call */ |
| 1733 |
void helper_lcall_protected_T0_T1(int shift, int next_eip_addend) |
void helper_lcall_protected_T0_T1(int shift, int next_eip_addend) |
| 1734 |
{ |
{ |
| 1735 |
int new_cs, new_eip, new_stack, i; |
int new_cs, new_stack, i; |
| 1736 |
uint32_t e1, e2, cpl, dpl, rpl, selector, offset, param_count; |
uint32_t e1, e2, cpl, dpl, rpl, selector, offset, param_count; |
| 1737 |
uint32_t ss, ss_e1, ss_e2, sp, type, ss_dpl, sp_mask; |
uint32_t ss, ss_e1, ss_e2, sp, type, ss_dpl, sp_mask; |
| 1738 |
uint32_t val, limit, old_sp_mask; |
uint32_t val, limit, old_sp_mask; |
| 1739 |
target_ulong ssp, old_ssp, next_eip; |
target_ulong ssp, old_ssp, next_eip, new_eip; |
| 1740 |
|
|
| 1741 |
new_cs = T0; |
new_cs = T0; |
| 1742 |
new_eip = T1; |
new_eip = T1; |
| 1744 |
#ifdef DEBUG_PCALL |
#ifdef DEBUG_PCALL |
| 1745 |
if (loglevel & CPU_LOG_PCALL) { |
if (loglevel & CPU_LOG_PCALL) { |
| 1746 |
fprintf(logfile, "lcall %04x:%08x s=%d\n", |
fprintf(logfile, "lcall %04x:%08x s=%d\n", |
| 1747 |
new_cs, new_eip, shift); |
new_cs, (uint32_t)new_eip, shift); |
| 1748 |
cpu_dump_state(env, logfile, fprintf, X86_DUMP_CCOP); |
cpu_dump_state(env, logfile, fprintf, X86_DUMP_CCOP); |
| 1749 |
} |
} |
| 1750 |
#endif |
#endif |