summaryrefslogtreecommitdiff
path: root/cpu-all.h
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2010-03-10 15:53:37 -0800
committerPaul Brook <paul@codesourcery.com>2010-03-12 16:31:09 +0000
commit5cd2c5b6ad75c46d40118ac67c0c09d4e7930a65 (patch)
tree6d024eefeab2a13c4b8a39335a028aa7a151c623 /cpu-all.h
parent14f24e1465edc44b9b4d89fbbea66e06088154e1 (diff)
downloadqemu-5cd2c5b6ad75c46d40118ac67c0c09d4e7930a65.tar.gz
Implement multi-level page tables.
Define L1_MAP_ADDR_SPACE_BITS to be either the virtual address size (in user mode) or physical address size (in system mode), and use that to size l1_map. This rewrites page_find_alloc, page_flush_tb, and walk_memory_regions. Use TARGET_PHYS_ADDR_SPACE_BITS for the physical memory map based off of l1_phys_map. This rewrites page_phys_find_alloc and phys_page_for_each. Signed-off-by: Richard Henderson <rth@twiddle.net>
Diffstat (limited to 'cpu-all.h')
-rw-r--r--cpu-all.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/cpu-all.h b/cpu-all.h
index 68848e9bc1..a51b301ca4 100644
--- a/cpu-all.h
+++ b/cpu-all.h
@@ -745,8 +745,11 @@ extern unsigned long qemu_host_page_mask;
#define PAGE_RESERVED 0x0020
void page_dump(FILE *f);
-int walk_memory_regions(void *,
- int (*fn)(void *, unsigned long, unsigned long, unsigned long));
+
+typedef int (*walk_memory_regions_fn)(void *, unsigned long,
+ unsigned long, unsigned long);
+int walk_memory_regions(void *, walk_memory_regions_fn);
+
int page_get_flags(target_ulong address);
void page_set_flags(target_ulong start, target_ulong end, int flags);
int page_check_range(target_ulong start, target_ulong len, int flags);