xref: /qemu/linux-headers/asm-s390/kvm.h (revision 2a60dba43cbf607c2d8ac3f30d5515267b4739b2) !
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