patch-2.2.18 linux/include/asm-arm/proc-armo/ptrace.h
Next file: linux/include/asm-arm/proc-armo/semaphore.h
Previous file: linux/include/asm-arm/proc-armo/processor.h
Back to the patch index
Back to the overall index
- Lines: 74
- Date:
Fri Sep 15 23:32:34 2000
- Orig file:
v2.2.17/include/asm-arm/proc-armo/ptrace.h
- Orig date:
Fri Apr 21 12:46:49 2000
diff -u --new-file --recursive --exclude-from /usr/src/exclude v2.2.17/include/asm-arm/proc-armo/ptrace.h linux/include/asm-arm/proc-armo/ptrace.h
@@ -1,12 +1,26 @@
/*
* linux/include/asm-arm/proc-armo/ptrace.h
*
- * Copyright (C) 1996 Russell King
+ * Copyright (C) 1996-1999 Russell King
*/
-
#ifndef __ASM_PROC_PTRACE_H
#define __ASM_PROC_PTRACE_H
+#define USR26_MODE 0x00
+#define FIQ26_MODE 0x01
+#define IRQ26_MODE 0x02
+#define SVC26_MODE 0x03
+#define MODE_MASK 0x03
+#define F_BIT (1 << 26)
+#define I_BIT (1 << 27)
+#define CC_V_BIT (1 << 28)
+#define CC_C_BIT (1 << 29)
+#define CC_Z_BIT (1 << 30)
+#define CC_N_BIT (1 << 31)
+#define PCMASK 0xfc000003
+
+#ifndef __ASSEMBLY__
+
/* this struct defines the way the registers are stored on the
stack during a system call. */
@@ -30,19 +44,9 @@
#define ARM_r2 uregs[2]
#define ARM_r1 uregs[1]
#define ARM_r0 uregs[0]
-#define ARM_ORIG_r0 uregs[16] /* -1 */
+#define ARM_ORIG_r0 uregs[16]
-#define USR26_MODE 0x00
-#define FIQ26_MODE 0x01
-#define IRQ26_MODE 0x02
-#define SVC26_MODE 0x03
-#define MODE_MASK 0x03
-#define F_BIT (1 << 26)
-#define I_BIT (1 << 27)
-#define CC_V_BIT (1 << 28)
-#define CC_C_BIT (1 << 29)
-#define CC_Z_BIT (1 << 30)
-#define CC_N_BIT (1 << 31)
+#ifdef __KERNEL__
#define processor_mode(regs) \
((regs)->ARM_pc & MODE_MASK)
@@ -70,11 +74,21 @@
*/
static inline int valid_user_regs(struct pt_regs *regs)
{
- if (!user_mode(regs) || regs->ARM_pc & (F_BIT | I_BIT))
+ if (user_mode(regs) &&
+ (regs->ARM_pc & (F_BIT | I_BIT)) == 0)
return 1;
+ /*
+ * force it to be something sensible
+ */
+ regs->ARM_pc &= ~(MODE_MASK | F_BIT | I_BIT);
+
return 0;
}
+
+#endif /* __KERNEL__ */
+
+#endif /* __ASSEMBLY__ */
#endif
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)