diff options
author | Janosch Frank <frankja@linux.ibm.com> | 2024-02-20 08:56:34 +0000 |
---|---|---|
committer | Heiko Carstens <hca@linux.ibm.com> | 2024-02-21 15:09:13 +0100 |
commit | 4a5993287467d2d0401503256dc9d2690c7f2020 (patch) | |
tree | b0cfbebe89c5e2b9c571dd203b8098f7b1327598 /arch/s390/kvm/kvm-s390.h | |
parent | 778666df60f0d96f215e33e27448de47a2207fb3 (diff) | |
download | lwn-4a5993287467d2d0401503256dc9d2690c7f2020.tar.gz lwn-4a5993287467d2d0401503256dc9d2690c7f2020.zip |
KVM: s390: introduce kvm_s390_fpu_(store|load)
It's a bit nicer than having multiple lines and will help if there's
another re-work since we'll only have to change one location.
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Diffstat (limited to 'arch/s390/kvm/kvm-s390.h')
-rw-r--r-- | arch/s390/kvm/kvm-s390.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/arch/s390/kvm/kvm-s390.h b/arch/s390/kvm/kvm-s390.h index a7ea80cfa445..111eb5c74784 100644 --- a/arch/s390/kvm/kvm-s390.h +++ b/arch/s390/kvm/kvm-s390.h @@ -20,6 +20,24 @@ #include <asm/processor.h> #include <asm/sclp.h> +static inline void kvm_s390_fpu_store(struct kvm_run *run) +{ + fpu_stfpc(&run->s.regs.fpc); + if (cpu_has_vx()) + save_vx_regs((__vector128 *)&run->s.regs.vrs); + else + save_fp_regs((freg_t *)&run->s.regs.fprs); +} + +static inline void kvm_s390_fpu_load(struct kvm_run *run) +{ + fpu_lfpc_safe(&run->s.regs.fpc); + if (cpu_has_vx()) + load_vx_regs((__vector128 *)&run->s.regs.vrs); + else + load_fp_regs((freg_t *)&run->s.regs.fprs); +} + /* Transactional Memory Execution related macros */ #define IS_TE_ENABLED(vcpu) ((vcpu->arch.sie_block->ecb & ECB_TE)) #define TDB_FORMAT1 1 |