[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 00/11] target/i386: add a few simple features
From: |
Paolo Bonzini |
Subject: |
[PATCH v3 00/11] target/i386: add a few simple features |
Date: |
Fri, 23 Jun 2023 15:17:00 +0200 |
In preparation for supporting named CPU models for user-mode emulation,
add a few TCG features that are actually already implemented, or that
are easy to implement. The most important (and most relevant to user-mode
emulation) are RDSEED, RDPID, and for 32-bit processors SYSCALL as well.
Paolo
v1->v2:
- fix WBNOINVD vmexit
- correctly implement 32-bit SYSCALL and SYSENTER
- do not include linux-user/ from target/
v2->v3:
- do not accept RDSEED if CPUID bit absent
- also raise illegal opcode exception for SYSRET in 32-bit mode for Intel CPUs
- raise illegal opcode exception for SYSENTER/SYSEXIT in 64-bit mode for AMD
CPUs
- Also try sched_getcpu() to return a sensible value for RDPID, since FreeBSD
does write the CPUID to MSR_TSC_AUX.
- Fully implement SYSCALL/SYSRET for 32-bit processors, including system
emulators
Paolo Bonzini (11):
target/i386: fix INVD vmexit
target/i386: TCG supports 3DNow! prefetch(w)
target/i386: TCG supports RDSEED
target/i386: do not accept RDSEED if CPUID bit absent
target/i386: TCG supports XSAVEERPTR
target/i386: TCG supports WBNOINVD
target/i386: Intel only supports SYSCALL/SYSRET in long mode
target/i386: AMD only supports SYSENTER/SYSEXIT in 32-bit mode
target/i386: sysret and sysexit are privileged
target/i386: implement RDPID in TCG
target/i386: implement SYSCALL/SYSRET in 32-bit emulators
bsd-user/i386/target_arch_cpu.h | 4 +++
linux-user/i386/cpu_loop.c | 13 ++++---
meson.build | 2 ++
target/i386/cpu.c | 31 +++++++++++-----
target/i386/helper.h | 4 +--
target/i386/tcg/misc_helper.c | 21 +++++++----
target/i386/tcg/seg_helper.c | 7 ++--
target/i386/tcg/sysemu/seg_helper.c | 7 ++--
target/i386/tcg/translate.c | 55 ++++++++++++++++++++++-------
target/i386/tcg/user/seg_helper.c | 2 --
10 files changed, 105 insertions(+), 41 deletions(-)
--
2.41.0
- [PATCH v3 00/11] target/i386: add a few simple features,
Paolo Bonzini <=
- [PATCH v3 01/11] target/i386: fix INVD vmexit, Paolo Bonzini, 2023/06/23
- [PATCH v3 02/11] target/i386: TCG supports 3DNow! prefetch(w), Paolo Bonzini, 2023/06/23
- [PATCH v3 05/11] target/i386: TCG supports XSAVEERPTR, Paolo Bonzini, 2023/06/23
- [PATCH v3 03/11] target/i386: TCG supports RDSEED, Paolo Bonzini, 2023/06/23
- [PATCH v3 06/11] target/i386: TCG supports WBNOINVD, Paolo Bonzini, 2023/06/23
- [PATCH v3 04/11] target/i386: do not accept RDSEED if CPUID bit absent, Paolo Bonzini, 2023/06/23
- [PATCH v3 07/11] target/i386: Intel only supports SYSCALL/SYSRET in long mode, Paolo Bonzini, 2023/06/23
- [PATCH v3 08/11] target/i386: AMD only supports SYSENTER/SYSEXIT in 32-bit mode, Paolo Bonzini, 2023/06/23