Branch data Line data Source code
1 : : /* SPDX-License-Identifier: GPL-2.0 */ 2 : : #ifndef __ARCH_ARM_FAULT_H 3 : : #define __ARCH_ARM_FAULT_H 4 : : 5 : : /* 6 : : * Fault status register encodings. We steal bit 31 for our own purposes. 7 : : */ 8 : : #define FSR_LNX_PF (1 << 31) 9 : : #define FSR_CM (1 << 13) 10 : : #define FSR_WRITE (1 << 11) 11 : : #define FSR_FS4 (1 << 10) 12 : : #define FSR_FS3_0 (15) 13 : : #define FSR_FS5_0 (0x3f) 14 : : 15 : : #ifdef CONFIG_ARM_LPAE 16 : : #define FSR_FS_AEA 17 17 : : 18 : : static inline int fsr_fs(unsigned int fsr) 19 : : { 20 : : return fsr & FSR_FS5_0; 21 : : } 22 : : #else 23 : : #define FSR_FS_AEA 22 24 : : 25 : : static inline int fsr_fs(unsigned int fsr) 26 : : { 27 : 3 : return (fsr & FSR_FS3_0) | (fsr & FSR_FS4) >> 6; 28 : : } 29 : : #endif 30 : : 31 : : void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs); 32 : : void early_abt_enable(void); 33 : : 34 : : #endif /* __ARCH_ARM_FAULT_H */