1*dc142414SNina Schoetterl-Glausch /* SPDX-License-Identifier: GPL-2.0-only */ 2*dc142414SNina Schoetterl-Glausch /* 3*dc142414SNina Schoetterl-Glausch * Functionality for SIE interception handling. 4*dc142414SNina Schoetterl-Glausch * 5*dc142414SNina Schoetterl-Glausch * Copyright IBM Corp. 2024 6*dc142414SNina Schoetterl-Glausch */ 7*dc142414SNina Schoetterl-Glausch 8*dc142414SNina Schoetterl-Glausch #ifndef _S390X_SIE_ICPT_H_ 9*dc142414SNina Schoetterl-Glausch #define _S390X_SIE_ICPT_H_ 10*dc142414SNina Schoetterl-Glausch 11*dc142414SNina Schoetterl-Glausch #include <libcflat.h> 12*dc142414SNina Schoetterl-Glausch #include <sie.h> 13*dc142414SNina Schoetterl-Glausch 14*dc142414SNina Schoetterl-Glausch struct diag_itext { 15*dc142414SNina Schoetterl-Glausch uint64_t opcode : 8; 16*dc142414SNina Schoetterl-Glausch uint64_t r_1 : 4; 17*dc142414SNina Schoetterl-Glausch uint64_t r_2 : 4; 18*dc142414SNina Schoetterl-Glausch uint64_t r_base : 4; 19*dc142414SNina Schoetterl-Glausch uint64_t displace : 12; 20*dc142414SNina Schoetterl-Glausch uint64_t zero : 16; 21*dc142414SNina Schoetterl-Glausch uint64_t : 16; 22*dc142414SNina Schoetterl-Glausch }; 23*dc142414SNina Schoetterl-Glausch 24*dc142414SNina Schoetterl-Glausch struct diag_itext sblk_ip_as_diag(struct kvm_s390_sie_block *sblk); 25*dc142414SNina Schoetterl-Glausch 26*dc142414SNina Schoetterl-Glausch /** 27*dc142414SNina Schoetterl-Glausch * sie_is_diag_icpt() - Check if intercept is due to diagnose instruction 28*dc142414SNina Schoetterl-Glausch * @vm: the guest 29*dc142414SNina Schoetterl-Glausch * @diag: the expected diagnose code 30*dc142414SNina Schoetterl-Glausch * 31*dc142414SNina Schoetterl-Glausch * Check that the intercept is due to diagnose @diag and valid. 32*dc142414SNina Schoetterl-Glausch * For protected virtualization, check that the intercept data meets additional 33*dc142414SNina Schoetterl-Glausch * constraints. 34*dc142414SNina Schoetterl-Glausch * 35*dc142414SNina Schoetterl-Glausch * Returns: true if intercept is due to a valid and has matching diagnose code 36*dc142414SNina Schoetterl-Glausch */ 37*dc142414SNina Schoetterl-Glausch bool sie_is_diag_icpt(struct vm *vm, unsigned int diag); 38*dc142414SNina Schoetterl-Glausch 39*dc142414SNina Schoetterl-Glausch #endif /* _S390X_SIE_ICPT_H_ */ 40