Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef __ARCH_ARM_FAULT_H
0003 #define __ARCH_ARM_FAULT_H
0004 
0005 /*
0006  * Fault status register encodings.  We steal bit 31 for our own purposes.
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  /* __ARCH_ARM_FAULT_H */