|
@@ -1659,15 +1659,19 @@ asmlinkage void syscall_trace_exit(struct pt_regs *regs)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
/*
|
|
|
- * Bits which are always architecturally RES0 per ARM DDI 0487A.h
|
|
|
|
|
|
|
+ * SPSR_ELx bits which are always architecturally RES0 per ARM DDI 0487C.a
|
|
|
|
|
+ * We also take into account DIT (bit 24), which is not yet documented, and
|
|
|
|
|
+ * treat PAN and UAO as RES0 bits, as they are meaningless at EL0, and may be
|
|
|
|
|
+ * allocated an EL0 meaning in future.
|
|
|
* Userspace cannot use these until they have an architectural meaning.
|
|
* Userspace cannot use these until they have an architectural meaning.
|
|
|
|
|
+ * Note that this follows the SPSR_ELx format, not the AArch32 PSR format.
|
|
|
* We also reserve IL for the kernel; SS is handled dynamically.
|
|
* We also reserve IL for the kernel; SS is handled dynamically.
|
|
|
*/
|
|
*/
|
|
|
#define SPSR_EL1_AARCH64_RES0_BITS \
|
|
#define SPSR_EL1_AARCH64_RES0_BITS \
|
|
|
- (GENMASK_ULL(63,32) | GENMASK_ULL(27, 22) | GENMASK_ULL(20, 10) | \
|
|
|
|
|
- GENMASK_ULL(5, 5))
|
|
|
|
|
|
|
+ (GENMASK_ULL(63,32) | GENMASK_ULL(27, 25) | GENMASK_ULL(23, 22) | \
|
|
|
|
|
+ GENMASK_ULL(20, 10) | GENMASK_ULL(5, 5))
|
|
|
#define SPSR_EL1_AARCH32_RES0_BITS \
|
|
#define SPSR_EL1_AARCH32_RES0_BITS \
|
|
|
- (GENMASK_ULL(63,32) | GENMASK_ULL(24, 22) | GENMASK_ULL(20,20))
|
|
|
|
|
|
|
+ (GENMASK_ULL(63,32) | GENMASK_ULL(23, 22) | GENMASK_ULL(20,20))
|
|
|
|
|
|
|
|
static int valid_compat_regs(struct user_pt_regs *regs)
|
|
static int valid_compat_regs(struct user_pt_regs *regs)
|
|
|
{
|
|
{
|