4036 |
|
|
4037 |
/***********************************************************/ |
/***********************************************************/ |
4038 |
/* x86 mmu */ |
/* x86 mmu */ |
4039 |
|
/* XXX: add PGE support */ |
4040 |
|
|
4041 |
/* called when cr3 or PG bit are modified */ |
/* called when cr3 or PG bit are modified */ |
4042 |
static int last_pg_state = -1; |
static int last_pg_state = -1; |
4092 |
cpu_x86_update_cr0(env); |
cpu_x86_update_cr0(env); |
4093 |
} |
} |
4094 |
|
|
4095 |
|
/* XXX: also flush 4MB pages */ |
4096 |
void cpu_x86_flush_tlb(CPUX86State *env, uint32_t addr) |
void cpu_x86_flush_tlb(CPUX86State *env, uint32_t addr) |
4097 |
{ |
{ |
4098 |
|
int flags; |
4099 |
|
unsigned long virt_addr; |
4100 |
|
|
4101 |
|
flags = page_get_flags(addr); |
4102 |
|
if (flags & PAGE_VALID) { |
4103 |
|
virt_addr = addr & ~0xfff; |
4104 |
|
munmap((void *)virt_addr, 4096); |
4105 |
|
page_set_flags(virt_addr, virt_addr + 4096, 0); |
4106 |
|
} |
4107 |
} |
} |
4108 |
|
|
4109 |
/* return value: |
/* return value: |