/* XXX: fix it to restore all registers */ void tlb_fill(CPUState *cs, target_ulong addr, MMUAccessType access_type, int mmu_idx, uintptr_t retaddr) { int ret; ret = x86_cpu_handle_mmu_fault(cs, addr, access_type, mmu_idx); if (ret) { X86CPU *cpu = X86_CPU(cs); CPUX86State *env = &cpu->env; raise_exception_err_ra(env, cs->exception_index, env->error_code, retaddr); } }
/* XXX: fix it to restore all registers */ void tlb_fill(CPUState *cs, target_ulong addr, int is_write, int mmu_idx, uintptr_t retaddr) { int ret; ret = x86_cpu_handle_mmu_fault(cs, addr, is_write, mmu_idx); if (ret) { X86CPU *cpu = X86_CPU(cs); CPUX86State *env = &cpu->env; if (retaddr) { /* now we have a real cpu fault */ cpu_restore_state(cs, retaddr); } raise_exception_err(env, cs->exception_index, env->error_code); } }