提交 50a9569b 编写于 作者: B balrog

Mark host pages as reserved (Magnus Damm).


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3813 c046a42c-6fe2-441c-8c8c-71466251a162
上级 703243a0
...@@ -716,6 +716,7 @@ extern unsigned long qemu_host_page_mask; ...@@ -716,6 +716,7 @@ extern unsigned long qemu_host_page_mask;
/* original state of the write flag (used when tracking self-modifying /* original state of the write flag (used when tracking self-modifying
code */ code */
#define PAGE_WRITE_ORG 0x0010 #define PAGE_WRITE_ORG 0x0010
#define PAGE_RESERVED 0x0020
void page_dump(FILE *f); void page_dump(FILE *f);
int page_get_flags(target_ulong address); int page_get_flags(target_ulong address);
......
...@@ -209,6 +209,27 @@ static void page_init(void) ...@@ -209,6 +209,27 @@ static void page_init(void)
qemu_host_page_mask = ~(qemu_host_page_size - 1); qemu_host_page_mask = ~(qemu_host_page_size - 1);
l1_phys_map = qemu_vmalloc(L1_SIZE * sizeof(void *)); l1_phys_map = qemu_vmalloc(L1_SIZE * sizeof(void *));
memset(l1_phys_map, 0, L1_SIZE * sizeof(void *)); memset(l1_phys_map, 0, L1_SIZE * sizeof(void *));
#if !defined(_WIN32) && defined(CONFIG_USER_ONLY)
{
long long startaddr, endaddr;
FILE *f;
int n;
f = fopen("/proc/self/maps", "r");
if (f) {
do {
n = fscanf (f, "%llx-%llx %*[^\n]\n", &startaddr, &endaddr);
if (n == 2) {
page_set_flags(TARGET_PAGE_ALIGN(startaddr),
TARGET_PAGE_ALIGN(endaddr),
PAGE_RESERVED);
}
} while (!feof(f));
fclose(f);
}
}
#endif
} }
static inline PageDesc *page_find_alloc(unsigned int index) static inline PageDesc *page_find_alloc(unsigned int index)
......
...@@ -162,7 +162,7 @@ static abi_ulong mmap_next_start = 0x40000000; ...@@ -162,7 +162,7 @@ static abi_ulong mmap_next_start = 0x40000000;
'start'. If 'start' == 0, then a default start address is used. 'start'. If 'start' == 0, then a default start address is used.
Return -1 if error. Return -1 if error.
*/ */
/* XXX: should mark pages used by the host as reserved to be sure not /* page_init() marks pages used by the host as reserved to be sure not
to use them. */ to use them. */
static abi_ulong mmap_find_vma(abi_ulong start, abi_ulong size) static abi_ulong mmap_find_vma(abi_ulong start, abi_ulong size)
{ {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册