151b24e34SJan Kiszka #ifndef __LINUX_KVM_S390_H 251b24e34SJan Kiszka #define __LINUX_KVM_S390_H 351b24e34SJan Kiszka /* 451b24e34SJan Kiszka * asm-s390/kvm.h - KVM s390 specific structures and definitions 551b24e34SJan Kiszka * 651b24e34SJan Kiszka * Copyright IBM Corp. 2008 751b24e34SJan Kiszka * 851b24e34SJan Kiszka * This program is free software; you can redistribute it and/or modify 951b24e34SJan Kiszka * it under the terms of the GNU General Public License (version 2 only) 1051b24e34SJan Kiszka * as published by the Free Software Foundation. 1151b24e34SJan Kiszka * 1251b24e34SJan Kiszka * Author(s): Carsten Otte <cotte@de.ibm.com> 1351b24e34SJan Kiszka * Christian Borntraeger <borntraeger@de.ibm.com> 1451b24e34SJan Kiszka */ 1551b24e34SJan Kiszka #include <linux/types.h> 1651b24e34SJan Kiszka 1751b24e34SJan Kiszka #define __KVM_S390 1851b24e34SJan Kiszka 1951b24e34SJan Kiszka /* for KVM_GET_REGS and KVM_SET_REGS */ 2051b24e34SJan Kiszka struct kvm_regs { 2151b24e34SJan Kiszka /* general purpose regs for s390 */ 2251b24e34SJan Kiszka __u64 gprs[16]; 2351b24e34SJan Kiszka }; 2451b24e34SJan Kiszka 2551b24e34SJan Kiszka /* for KVM_GET_SREGS and KVM_SET_SREGS */ 2651b24e34SJan Kiszka struct kvm_sregs { 2751b24e34SJan Kiszka __u32 acrs[16]; 2851b24e34SJan Kiszka __u64 crs[16]; 2951b24e34SJan Kiszka }; 3051b24e34SJan Kiszka 3151b24e34SJan Kiszka /* for KVM_GET_FPU and KVM_SET_FPU */ 3251b24e34SJan Kiszka struct kvm_fpu { 3351b24e34SJan Kiszka __u32 fpc; 3451b24e34SJan Kiszka __u64 fprs[16]; 3551b24e34SJan Kiszka }; 3651b24e34SJan Kiszka 3751b24e34SJan Kiszka struct kvm_debug_exit_arch { 3851b24e34SJan Kiszka }; 3951b24e34SJan Kiszka 4051b24e34SJan Kiszka /* for KVM_SET_GUEST_DEBUG */ 4151b24e34SJan Kiszka struct kvm_guest_debug_arch { 4251b24e34SJan Kiszka }; 4351b24e34SJan Kiszka 441529ae1bSAlexander Graf #define KVM_SYNC_PREFIX (1UL << 0) 451529ae1bSAlexander Graf #define KVM_SYNC_GPRS (1UL << 1) 461529ae1bSAlexander Graf #define KVM_SYNC_ACRS (1UL << 2) 479ab2195dSMarcelo Tosatti #define KVM_SYNC_CRS (1UL << 3) 481529ae1bSAlexander Graf /* definition of registers in kvm_run */ 491529ae1bSAlexander Graf struct kvm_sync_regs { 501529ae1bSAlexander Graf __u64 prefix; /* prefix register */ 511529ae1bSAlexander Graf __u64 gprs[16]; /* general purpose registers */ 521529ae1bSAlexander Graf __u32 acrs[16]; /* access registers */ 539ab2195dSMarcelo Tosatti __u64 crs[16]; /* control registers */ 541529ae1bSAlexander Graf }; 55*2a60dba4SAlexander Graf 56*2a60dba4SAlexander Graf #define KVM_REG_S390_TODPR (KVM_REG_S390 | KVM_REG_SIZE_U32 | 0x1) 57*2a60dba4SAlexander Graf #define KVM_REG_S390_EPOCHDIFF (KVM_REG_S390 | KVM_REG_SIZE_U64 | 0x2) 58*2a60dba4SAlexander Graf #define KVM_REG_S390_CPU_TIMER (KVM_REG_S390 | KVM_REG_SIZE_U64 | 0x3) 59*2a60dba4SAlexander Graf #define KVM_REG_S390_CLOCK_COMP (KVM_REG_S390 | KVM_REG_SIZE_U64 | 0x4) 6051b24e34SJan Kiszka #endif 61