mirror of https://gitee.com/openkylin/qemu.git
tcg/sparc64: fix segfault
With current OpenBSD, code_gen_buffer was mapped 8GB away from text segment. Then any helpers were beyond the 2GB range of call instruction genereated by TCG and so the calls would go nowhere, leading to a segfault. Fix by specifying an address for the code_gen_buffer, hopefully free and nearby the helpers. Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
0c16e71e6a
commit
4cd31ad264
7
exec.c
7
exec.c
|
@ -531,6 +531,13 @@ static void code_gen_alloc(unsigned long tb_size)
|
|||
/* Cannot map more than that */
|
||||
if (code_gen_buffer_size > (800 * 1024 * 1024))
|
||||
code_gen_buffer_size = (800 * 1024 * 1024);
|
||||
#elif defined(__sparc_v9__)
|
||||
// Map the buffer below 2G, so we can use direct calls and branches
|
||||
flags |= MAP_FIXED;
|
||||
addr = (void *) 0x60000000UL;
|
||||
if (code_gen_buffer_size > (512 * 1024 * 1024)) {
|
||||
code_gen_buffer_size = (512 * 1024 * 1024);
|
||||
}
|
||||
#endif
|
||||
code_gen_buffer = mmap(addr, code_gen_buffer_size,
|
||||
PROT_WRITE | PROT_READ | PROT_EXEC,
|
||||
|
|
Loading…
Reference in New Issue