xref: /kvm-unit-tests/lib/s390x/fault.h (revision 1921c4c692ca6af93a98ebdf6246b80b73f89781)
1*1921c4c6SJanosch Frank /* SPDX-License-Identifier: GPL-2.0-or-later */
2*1921c4c6SJanosch Frank /*
3*1921c4c6SJanosch Frank  * Headers for fault.c
4*1921c4c6SJanosch Frank  *
5*1921c4c6SJanosch Frank  * Copyright 2021 IBM Corp.
6*1921c4c6SJanosch Frank  *
7*1921c4c6SJanosch Frank  * Authors:
8*1921c4c6SJanosch Frank  *    Janosch Frank <frankja@linux.ibm.com>
9*1921c4c6SJanosch Frank  */
10*1921c4c6SJanosch Frank #ifndef _S390X_FAULT_H_
11*1921c4c6SJanosch Frank #define _S390X_FAULT_H_
12*1921c4c6SJanosch Frank 
13*1921c4c6SJanosch Frank #include <bitops.h>
14*1921c4c6SJanosch Frank 
15*1921c4c6SJanosch Frank /* Instruction execution prevention, i.e. no-execute, 101 */
16*1921c4c6SJanosch Frank static inline bool prot_is_iep(uint64_t teid)
17*1921c4c6SJanosch Frank {
18*1921c4c6SJanosch Frank 	if (test_bit_inv(56, &teid) && !test_bit_inv(60, &teid) && test_bit_inv(61, &teid))
19*1921c4c6SJanosch Frank 		return true;
20*1921c4c6SJanosch Frank 
21*1921c4c6SJanosch Frank 	return false;
22*1921c4c6SJanosch Frank }
23*1921c4c6SJanosch Frank 
24*1921c4c6SJanosch Frank /* Standard DAT exception, 001 */
25*1921c4c6SJanosch Frank static inline bool prot_is_datp(uint64_t teid)
26*1921c4c6SJanosch Frank {
27*1921c4c6SJanosch Frank 	if (!test_bit_inv(56, &teid) && !test_bit_inv(60, &teid) && test_bit_inv(61, &teid))
28*1921c4c6SJanosch Frank 		return true;
29*1921c4c6SJanosch Frank 
30*1921c4c6SJanosch Frank 	return false;
31*1921c4c6SJanosch Frank }
32*1921c4c6SJanosch Frank 
33*1921c4c6SJanosch Frank /* Low-address protection exception, 100 */
34*1921c4c6SJanosch Frank static inline bool prot_is_lap(uint64_t teid)
35*1921c4c6SJanosch Frank {
36*1921c4c6SJanosch Frank 	if (test_bit_inv(56, &teid) && !test_bit_inv(60, &teid) && !test_bit_inv(61, &teid))
37*1921c4c6SJanosch Frank 		return true;
38*1921c4c6SJanosch Frank 
39*1921c4c6SJanosch Frank 	return false;
40*1921c4c6SJanosch Frank }
41*1921c4c6SJanosch Frank 
42*1921c4c6SJanosch Frank void print_decode_teid(uint64_t teid);
43*1921c4c6SJanosch Frank 
44*1921c4c6SJanosch Frank #endif /* _S390X_FAULT_H_ */
45