xref: /openbmc/linux/arch/x86/mm/pf_in.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*1a59d1b8SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
2ff3a3e9bSPekka Paalanen /*
3ff3a3e9bSPekka Paalanen  *  Fault Injection Test harness (FI)
4ff3a3e9bSPekka Paalanen  *  Copyright (C) Intel Crop.
5ff3a3e9bSPekka Paalanen  */
6ff3a3e9bSPekka Paalanen 
7ff3a3e9bSPekka Paalanen #ifndef __PF_H_
8ff3a3e9bSPekka Paalanen #define __PF_H_
9ff3a3e9bSPekka Paalanen 
10ff3a3e9bSPekka Paalanen enum reason_type {
11ff3a3e9bSPekka Paalanen 	NOT_ME,	/* page fault is not in regions */
12ff3a3e9bSPekka Paalanen 	NOTHING,	/* access others point in regions */
13ff3a3e9bSPekka Paalanen 	REG_READ,	/* read from addr to reg */
14ff3a3e9bSPekka Paalanen 	REG_WRITE,	/* write from reg to addr */
15ff3a3e9bSPekka Paalanen 	IMM_WRITE,	/* write from imm to addr */
16ff3a3e9bSPekka Paalanen 	OTHERS	/* Other instructions can not intercept */
17ff3a3e9bSPekka Paalanen };
18ff3a3e9bSPekka Paalanen 
19ff3a3e9bSPekka Paalanen enum reason_type get_ins_type(unsigned long ins_addr);
20ff3a3e9bSPekka Paalanen unsigned int get_ins_mem_width(unsigned long ins_addr);
21ff3a3e9bSPekka Paalanen unsigned long get_ins_reg_val(unsigned long ins_addr, struct pt_regs *regs);
22ff3a3e9bSPekka Paalanen unsigned long get_ins_imm_val(unsigned long ins_addr);
23ff3a3e9bSPekka Paalanen 
24ff3a3e9bSPekka Paalanen #endif /* __PF_H_ */
25