Allocate code gen buffer properly on FreeBSD
Signed-off-by: Juergen Lock <nox@jelal.kn-bremen.de> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5331 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
a876e28951
commit
06e67a82da
22
exec.c
22
exec.c
@ -443,6 +443,28 @@ static void code_gen_alloc(unsigned long tb_size)
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
#elif defined(__FreeBSD__)
|
||||
{
|
||||
int flags;
|
||||
void *addr = NULL;
|
||||
flags = MAP_PRIVATE | MAP_ANONYMOUS;
|
||||
#if defined(__x86_64__)
|
||||
/* FreeBSD doesn't have MAP_32BIT, use MAP_FIXED and assume
|
||||
* 0x40000000 is free */
|
||||
flags |= MAP_FIXED;
|
||||
addr = (void *)0x40000000;
|
||||
/* Cannot map more than that */
|
||||
if (code_gen_buffer_size > (800 * 1024 * 1024))
|
||||
code_gen_buffer_size = (800 * 1024 * 1024);
|
||||
#endif
|
||||
code_gen_buffer = mmap(addr, code_gen_buffer_size,
|
||||
PROT_WRITE | PROT_READ | PROT_EXEC,
|
||||
flags, -1, 0);
|
||||
if (code_gen_buffer == MAP_FAILED) {
|
||||
fprintf(stderr, "Could not allocate dynamic translator buffer\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
#else
|
||||
code_gen_buffer = qemu_malloc(code_gen_buffer_size);
|
||||
if (!code_gen_buffer) {
|
||||
|
Loading…
Reference in New Issue
Block a user