mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-29 05:13:54 -06:00
meson: Disallow 64-bit on 32-bit emulation
For system mode, we can rarely support the amount of RAM that the guest requires. TCG emulation is restricted to round-robin mode, which solves many of the atomicity issues, but not those associated with virtio. In any case, round-robin does nothing to help the speed of emulation. For user mode, most emulation does not succeed at all. Most of the time we cannot even load 64-bit non-PIE binaries due to lack of a 64-bit address space. Threads are run in parallel, not round-robin, which means that atomicity is not handled. Reviewed-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
175646f641
commit
acce728cbc
1 changed files with 10 additions and 3 deletions
13
meson.build
13
meson.build
|
@ -3185,6 +3185,9 @@ if host_os == 'windows'
|
|||
endif
|
||||
endif
|
||||
|
||||
# Detect host pointer size for the target configuration loop.
|
||||
host_long_bits = cc.sizeof('void *') * 8
|
||||
|
||||
########################
|
||||
# Target configuration #
|
||||
########################
|
||||
|
@ -3277,8 +3280,14 @@ foreach target : target_dirs
|
|||
}
|
||||
endif
|
||||
|
||||
config_target += keyval.load('configs/targets' / target + '.mak')
|
||||
|
||||
target_kconfig = []
|
||||
foreach sym: accelerators
|
||||
# Disallow 64-bit on 32-bit emulation and virtualization
|
||||
if host_long_bits < config_target['TARGET_LONG_BITS'].to_int()
|
||||
continue
|
||||
endif
|
||||
if sym == 'CONFIG_TCG' or target in accelerator_targets.get(sym, [])
|
||||
config_target += { sym: 'y' }
|
||||
config_all_accel += { sym: 'y' }
|
||||
|
@ -3292,9 +3301,6 @@ foreach target : target_dirs
|
|||
error('No accelerator available for target @0@'.format(target))
|
||||
endif
|
||||
|
||||
config_target += keyval.load('configs/targets' / target + '.mak')
|
||||
config_target += { 'TARGET_' + config_target['TARGET_ARCH'].to_upper(): 'y' }
|
||||
|
||||
if 'TARGET_NEED_FDT' in config_target and not fdt.found()
|
||||
if default_targets
|
||||
warning('Disabling ' + target + ' due to missing libfdt')
|
||||
|
@ -3307,6 +3313,7 @@ foreach target : target_dirs
|
|||
actual_target_dirs += target
|
||||
|
||||
# Add default keys
|
||||
config_target += { 'TARGET_' + config_target['TARGET_ARCH'].to_upper(): 'y' }
|
||||
if 'TARGET_BASE_ARCH' not in config_target
|
||||
config_target += {'TARGET_BASE_ARCH': config_target['TARGET_ARCH']}
|
||||
endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue