xref: /kvm-unit-tests/lib/s390x/fault.h (revision 7b2e41767bb8caf91972ee32e4ca85ec630584e2)
11921c4c6SJanosch Frank /* SPDX-License-Identifier: GPL-2.0-or-later */
21921c4c6SJanosch Frank /*
31921c4c6SJanosch Frank  * Headers for fault.c
41921c4c6SJanosch Frank  *
51921c4c6SJanosch Frank  * Copyright 2021 IBM Corp.
61921c4c6SJanosch Frank  *
71921c4c6SJanosch Frank  * Authors:
81921c4c6SJanosch Frank  *    Janosch Frank <frankja@linux.ibm.com>
91921c4c6SJanosch Frank  */
101921c4c6SJanosch Frank #ifndef _S390X_FAULT_H_
111921c4c6SJanosch Frank #define _S390X_FAULT_H_
121921c4c6SJanosch Frank 
131921c4c6SJanosch Frank #include <bitops.h>
14*c2c1663aSJanis Schoetterl-Glausch #include <asm/facility.h>
15*c2c1663aSJanis Schoetterl-Glausch #include <asm/interrupt.h>
161921c4c6SJanosch Frank 
171921c4c6SJanosch Frank /* Instruction execution prevention, i.e. no-execute, 101 */
prot_is_iep(union teid teid)18*c2c1663aSJanis Schoetterl-Glausch static inline bool prot_is_iep(union teid teid)
191921c4c6SJanosch Frank {
20*c2c1663aSJanis Schoetterl-Glausch 	if (!test_facility(130))
211921c4c6SJanosch Frank 		return false;
22*c2c1663aSJanis Schoetterl-Glausch 	/* IEP installed -> ESOP2 installed */
23*c2c1663aSJanis Schoetterl-Glausch 	return teid_esop2_prot_code(teid) == PROT_IEP;
241921c4c6SJanosch Frank }
251921c4c6SJanosch Frank 
261921c4c6SJanosch Frank void print_decode_teid(uint64_t teid);
271921c4c6SJanosch Frank 
281921c4c6SJanosch Frank #endif /* _S390X_FAULT_H_ */
29