diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2023-06-17 01:01:29 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2023-06-26 10:23:56 +0200 |
commit | 63fd8ef080351357c0cb0644ed63fd3e2a8833a8 (patch) | |
tree | 91481e0107c3a469373c997a838c7796d71fd2f5 /bsd-user/i386 | |
parent | 6750485bf42a9917a29487aec899687669104e07 (diff) |
target/i386: implement SYSCALL/SYSRET in 32-bit emulators
AMD supports both 32-bit and 64-bit SYSCALL/SYSRET, but the TCG only
exposes it for 64-bit targets. For system emulation just reuse the
helper; for user-mode emulation the ABI is the same as "int $80".
The BSDs does not support any fast system call mechanism in 32-bit
mode so add to bsd-user the same stub that FreeBSD has for 64-bit
compatibility mode.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'bsd-user/i386')
-rw-r--r-- | bsd-user/i386/target_arch_cpu.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/bsd-user/i386/target_arch_cpu.h b/bsd-user/i386/target_arch_cpu.h index d792dc720f..9bf2c4244b 100644 --- a/bsd-user/i386/target_arch_cpu.h +++ b/bsd-user/i386/target_arch_cpu.h @@ -164,6 +164,10 @@ static inline void target_cpu_loop(CPUX86State *env) } break; + case EXCP_SYSCALL: + /* doesn't do anything */ + break; + case EXCP_INTERRUPT: /* just indicate that signals should be handled asap */ break; |