diff -u linux-2.6.32.8/arch/x86/mm/fault.c linux-2.6.32.8/arch/x86/mm/fault.c
--- linux-2.6.32.8/arch/x86/mm/fault.c	2010-01-25 17:39:40.326401486 -0500
+++ linux-2.6.32.8/arch/x86/mm/fault.c	2010-02-10 11:52:17.689241922 -0500
@@ -1508,7 +1508,7 @@
 	printk("\n");
 
 	printk(KERN_ERR "PAX: bytes at SP-%lu: ", (unsigned long)sizeof(long));
-	for (i = -1; i < 80 / sizeof(long); i++) {
+	for (i = -1; i < 80 / (long)sizeof(long); i++) {
 		unsigned long c;
 		if (get_user(c, (__force unsigned long __user *)sp+i))
 #ifdef CONFIG_X86_32
diff -u linux-2.6.32.8/security/Kconfig linux-2.6.32.8/security/Kconfig
--- linux-2.6.32.8/security/Kconfig	2010-01-25 20:02:43.052267501 -0500
+++ linux-2.6.32.8/security/Kconfig	2010-02-10 11:52:20.518387265 -0500
@@ -98,7 +98,7 @@
 
 config PAX_NOEXEC
 	bool "Enforce non-executable pages"
-	depends on (PAX_EI_PAX || PAX_PT_PAX_FLAGS || PAX_HAVE_ACL_FLAGS || PAX_HOOK_ACL_FLAGS) && (ALPHA || IA64 || MIPS32 || MIPS64 || PARISC || PPC32 || PPC64 || SPARC32 || SPARC64 || X86)
+	depends on (PAX_EI_PAX || PAX_PT_PAX_FLAGS || PAX_HAVE_ACL_FLAGS || PAX_HOOK_ACL_FLAGS) && (ALPHA || IA64 || MIPS32 || MIPS64 || PARISC || PPC32 || PPC64 || SPARC32 || SPARC64 || X86 || (ARM && (CPU_V6 || CPU_V7)))
 	help
 	  By design some architectures do not allow for protecting memory
 	  pages against execution or even if they do, Linux does not make
only in patch2:
unchanged:
--- linux-2.6.32.8/arch/arm/mm/fault.c	2010-02-09 07:57:19.000000000 -0500
+++ linux-2.6.32.8/arch/arm/mm/fault.c	2010-02-10 12:19:14.385136510 -0500
@@ -337,6 +337,14 @@ do_page_fault(unsigned long addr, unsign
 		 * Something tried to access memory that
 		 * isn't in our memory map..
 		 */
+
+#ifdef CONFIG_PAX_PAGEEXEC
+		if (fsr & FSR_LNX_PF) {
+			pax_report_fault(regs, (void *)regs->ARM_pc, (void *)regs->ARM_sp);
+			do_group_exit(SIGKILL);
+		}
+#endif
+
 		sig = SIGSEGV;
 		code = fault == VM_FAULT_BADACCESS ?
 			SEGV_ACCERR : SEGV_MAPERR;
@@ -357,6 +365,33 @@ do_page_fault(unsigned long addr, unsign
 }
 #endif					/* CONFIG_MMU */
 
+#ifdef CONFIG_PAX_PAGEEXEC
+void pax_report_insns(void *pc, void *sp)
+{
+	long i;
+
+	printk(KERN_ERR "PAX: bytes at PC: ");
+	for (i = 0; i < 20; i++) {
+		unsigned char c;
+		if (get_user(c, (__force unsigned char __user *)pc+i))
+			printk(KERN_CONT "?? ");
+		else
+			printk(KERN_CONT "%02x ", c);
+	}
+	printk("\n");
+
+	printk(KERN_ERR "PAX: bytes at SP-%lu: ", (unsigned long)sizeof(long));
+	for (i = -1; i < 80 / (long)sizeof(long); i++) {
+		unsigned long c;
+		if (get_user(c, (__force unsigned long __user *)sp+i))
+			printk(KERN_CONT "???????? ");
+		else
+			printk(KERN_CONT "%0*lx ", 2 * (int)sizeof(long), c);
+	}
+	printk("\n");
+}
+#endif
+
 /*
  * First Level Translation Fault Handler
  *
