MMU support

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@262 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
bellard 2003-06-24 13:28:12 +00:00
parent 90a9fdae1f
commit 66e85a21c7
3 changed files with 86 additions and 8 deletions

32
exec.c
View file

@ -30,7 +30,7 @@
#include "exec.h"
//#define DEBUG_TB_INVALIDATE
#define DEBUG_FLUSH
//#define DEBUG_FLUSH
/* make various TB consistency checks */
//#define DEBUG_TB_CHECK
@ -579,3 +579,33 @@ void cpu_abort(CPUState *env, const char *fmt, ...)
abort();
}
#ifdef TARGET_I386
/* unmap all maped pages and flush all associated code */
void page_unmap(void)
{
PageDesc *p, *pmap;
unsigned long addr;
int i, j, ret;
for(i = 0; i < L1_SIZE; i++) {
pmap = l1_map[i];
if (pmap) {
p = pmap;
for(j = 0;j < L2_SIZE; j++) {
if (p->flags & PAGE_VALID) {
addr = (i << (32 - L1_BITS)) | (j << TARGET_PAGE_BITS);
ret = munmap((void *)addr, TARGET_PAGE_SIZE);
if (ret != 0) {
fprintf(stderr, "Could not unmap page 0x%08lx\n", addr);
exit(1);
}
}
p++;
}
free(pmap);
l1_map[i] = NULL;
}
}
tb_flush();
}
#endif