0001
0002 #ifndef __ARCH_ARM_FAULT_H
0003 #define __ARCH_ARM_FAULT_H
0004
0005
0006
0007
0008 #define FSR_LNX_PF (1 << 31)
0009 #define FSR_CM (1 << 13)
0010 #define FSR_WRITE (1 << 11)
0011 #define FSR_FS4 (1 << 10)
0012 #define FSR_FS3_0 (15)
0013 #define FSR_FS5_0 (0x3f)
0014
0015 #ifdef CONFIG_ARM_LPAE
0016 #define FSR_FS_AEA 17
0017 #define FS_PERM_NOLL 0xC
0018 #define FS_PERM_NOLL_MASK 0x3C
0019
0020 static inline int fsr_fs(unsigned int fsr)
0021 {
0022 return fsr & FSR_FS5_0;
0023 }
0024 #else
0025 #define FSR_FS_AEA 22
0026 #define FS_L1_PERM 0xD
0027 #define FS_L2_PERM 0xF
0028
0029 static inline int fsr_fs(unsigned int fsr)
0030 {
0031 return (fsr & FSR_FS3_0) | (fsr & FSR_FS4) >> 6;
0032 }
0033 #endif
0034
0035 void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs);
0036 void early_abt_enable(void);
0037
0038 #endif