qemu-e2k/linux-user/i386
Paolo Bonzini 40a205da41 target/i386: emulate 64-bit ring 0 for linux-user if LM feature is set
32-bit binaries can run on a long mode processor even if the kernel
is 64-bit, of course, and this can have slightly different behavior;
for example, SYSCALL is allowed on Intel processors.

Allow reporting LM to programs running under user mode emulation,
so that "-cpu" can be used with named CPU models even for qemu-i386
and even without disabling LM by hand.

Fortunately, most of the runtime code in QEMU has to depend on HF_LMA_MASK
or on HF_CS64_MASK (which is anyway false for qemu-i386's 32-bit code
segment) rather than TARGET_X86_64, therefore all that is needed is an
update of linux-user's ring 0 setup.

Fixes: https://gitlab.com/qemu-project/qemu/-/issues/1534
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2023-06-29 10:49:43 +02:00
..
cpu_loop.c target/i386: emulate 64-bit ring 0 for linux-user if LM feature is set 2023-06-29 10:49:43 +02:00
meson.build
signal.c linux-user: i386/signal: support XSAVE/XRSTOR for signal frame fpstate 2022-10-11 10:27:35 +02:00
sockbits.h
syscall_32.tbl
syscall_nr.h
syscallhdr.sh
target_cpu.h
target_elf.h linux-user: use 'max' instead of 'qemu32' / 'qemu64' by default 2022-09-23 14:04:17 +02:00
target_errno_defs.h
target_fcntl.h
target_mman.h linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
target_prctl.h linux-user: Split out do_prctl and subroutines 2022-01-06 11:40:52 +01:00
target_resource.h linux-user: Move generic TARGET_RLIMIT* definitions to generic/target_resource.h 2022-02-01 08:01:38 +01:00
target_signal.h
target_structs.h linux-user: Move target_struct.h generic definitions to generic/ 2022-01-11 18:40:44 +01:00
target_syscall.h linux-user: target_syscall.h remove definition TARGET_MINSIGSTKSZ 2022-01-06 11:40:52 +01:00
termbits.h