added invlpg emulation
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@280 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
59faf6d6a6
commit
4351832355
@ -4036,6 +4036,7 @@ void cpu_x86_close(CPUX86State *env)
|
|||||||
|
|
||||||
/***********************************************************/
|
/***********************************************************/
|
||||||
/* x86 mmu */
|
/* x86 mmu */
|
||||||
|
/* XXX: add PGE support */
|
||||||
|
|
||||||
/* called when cr3 or PG bit are modified */
|
/* called when cr3 or PG bit are modified */
|
||||||
static int last_pg_state = -1;
|
static int last_pg_state = -1;
|
||||||
@ -4091,8 +4092,18 @@ void cpu_x86_init_mmu(CPUX86State *env)
|
|||||||
cpu_x86_update_cr0(env);
|
cpu_x86_update_cr0(env);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* XXX: also flush 4MB pages */
|
||||||
void cpu_x86_flush_tlb(CPUX86State *env, uint32_t addr)
|
void cpu_x86_flush_tlb(CPUX86State *env, uint32_t addr)
|
||||||
{
|
{
|
||||||
|
int flags;
|
||||||
|
unsigned long virt_addr;
|
||||||
|
|
||||||
|
flags = page_get_flags(addr);
|
||||||
|
if (flags & PAGE_VALID) {
|
||||||
|
virt_addr = addr & ~0xfff;
|
||||||
|
munmap((void *)virt_addr, 4096);
|
||||||
|
page_set_flags(virt_addr, virt_addr + 4096, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return value:
|
/* return value:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user