|  | /* SPDX-License-Identifier: GPL-2.0 */ | 
|  | #ifndef __ARCH_ARM_FAULT_H | 
|  | #define __ARCH_ARM_FAULT_H | 
|  |  | 
|  | /* | 
|  | * Fault status register encodings.  We steal bit 31 for our own purposes. | 
|  | */ | 
|  | #define FSR_LNX_PF		(1 << 31) | 
|  | #define FSR_CM			(1 << 13) | 
|  | #define FSR_WRITE		(1 << 11) | 
|  | #define FSR_FS4			(1 << 10) | 
|  | #define FSR_FS3_0		(15) | 
|  | #define FSR_FS5_0		(0x3f) | 
|  |  | 
|  | #ifdef CONFIG_ARM_LPAE | 
|  | #define FSR_FS_AEA		17 | 
|  |  | 
|  | static inline int fsr_fs(unsigned int fsr) | 
|  | { | 
|  | return fsr & FSR_FS5_0; | 
|  | } | 
|  | #else | 
|  | #define FSR_FS_AEA		22 | 
|  |  | 
|  | static inline int fsr_fs(unsigned int fsr) | 
|  | { | 
|  | return (fsr & FSR_FS3_0) | (fsr & FSR_FS4) >> 6; | 
|  | } | 
|  | #endif | 
|  |  | 
|  | void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs); | 
|  | void early_abt_enable(void); | 
|  |  | 
|  | #endif	/* __ARCH_ARM_FAULT_H */ |