mirror of https://github.com/xemu-project/xemu.git
accel/tcg: Drop PAGE_RESERVED for CONFIG_BSD
Make bsd-user match linux-user in not marking host pages as reserved. This isn't especially effective anyway, as it doesn't take into account any heap memory that qemu may allocate after startup. Reviewed-by: Warner Losh <imp@bsdimp.com> Tested-by: Warner Losh <imp@bsdimp.com> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Tested-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
f88f3ac90f
commit
50d25c8aec
|
@ -354,71 +354,6 @@ void page_init(void)
|
||||||
{
|
{
|
||||||
page_size_init();
|
page_size_init();
|
||||||
page_table_config_init();
|
page_table_config_init();
|
||||||
|
|
||||||
#if defined(CONFIG_BSD) && defined(CONFIG_USER_ONLY)
|
|
||||||
{
|
|
||||||
#ifdef HAVE_KINFO_GETVMMAP
|
|
||||||
struct kinfo_vmentry *freep;
|
|
||||||
int i, cnt;
|
|
||||||
|
|
||||||
freep = kinfo_getvmmap(getpid(), &cnt);
|
|
||||||
if (freep) {
|
|
||||||
mmap_lock();
|
|
||||||
for (i = 0; i < cnt; i++) {
|
|
||||||
unsigned long startaddr, endaddr;
|
|
||||||
|
|
||||||
startaddr = freep[i].kve_start;
|
|
||||||
endaddr = freep[i].kve_end;
|
|
||||||
if (h2g_valid(startaddr)) {
|
|
||||||
startaddr = h2g(startaddr) & TARGET_PAGE_MASK;
|
|
||||||
|
|
||||||
if (h2g_valid(endaddr)) {
|
|
||||||
endaddr = h2g(endaddr);
|
|
||||||
page_set_flags(startaddr, endaddr, PAGE_RESERVED);
|
|
||||||
} else {
|
|
||||||
#if TARGET_ABI_BITS <= L1_MAP_ADDR_SPACE_BITS
|
|
||||||
endaddr = ~0ul;
|
|
||||||
page_set_flags(startaddr, endaddr, PAGE_RESERVED);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
free(freep);
|
|
||||||
mmap_unlock();
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
FILE *f;
|
|
||||||
|
|
||||||
last_brk = (unsigned long)sbrk(0);
|
|
||||||
|
|
||||||
f = fopen("/compat/linux/proc/self/maps", "r");
|
|
||||||
if (f) {
|
|
||||||
mmap_lock();
|
|
||||||
|
|
||||||
do {
|
|
||||||
unsigned long startaddr, endaddr;
|
|
||||||
int n;
|
|
||||||
|
|
||||||
n = fscanf(f, "%lx-%lx %*[^\n]\n", &startaddr, &endaddr);
|
|
||||||
|
|
||||||
if (n == 2 && h2g_valid(startaddr)) {
|
|
||||||
startaddr = h2g(startaddr) & TARGET_PAGE_MASK;
|
|
||||||
|
|
||||||
if (h2g_valid(endaddr)) {
|
|
||||||
endaddr = h2g(endaddr);
|
|
||||||
} else {
|
|
||||||
endaddr = ~0ul;
|
|
||||||
}
|
|
||||||
page_set_flags(startaddr, endaddr, PAGE_RESERVED);
|
|
||||||
}
|
|
||||||
} while (!feof(f));
|
|
||||||
|
|
||||||
fclose(f);
|
|
||||||
mmap_unlock();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PageDesc *page_find_alloc(tb_page_addr_t index, bool alloc)
|
PageDesc *page_find_alloc(tb_page_addr_t index, bool alloc)
|
||||||
|
|
Loading…
Reference in New Issue