Previously, it was possible to use Xen + Grsec patches on i686. This is no longer possible due to incompatible-pointer-type bugs.
Complete log of compile errors: https://dpaste.de/i0Tg/raw
--- a/arch/x86/xen/xen-ops.h 2017-01-01 23:08:10.879089161 +0100
+++ b/arch/x86/xen/xen-ops.h 2017-02-19 20:54:25.263588399 +0100
@@ -131,9 +131,9 @@
extern char name##_end[] __visible; \
extern char name##_reloc[] __visible
-DECL_ASM(void, xen_irq_enable_direct, void);
-DECL_ASM(void, xen_irq_disable_direct, void);
-DECL_ASM(unsigned long, xen_save_fl_direct, void);
+DECL_ASM(asmlinkage void, xen_irq_enable_direct, void);
+DECL_ASM(asmlinkage void, xen_irq_disable_direct, void);
+DECL_ASM(asmlinkage unsigned long, xen_save_fl_direct, void);
DECL_ASM(void, xen_restore_fl_direct, unsigned long);
/* These are not functions, and cannot be called normally */
AS arch/x86/xen/xen-asm.o
AS arch/x86/xen/xen-asm_32.o
arch/x86/xen/xen-asm_32.S: Assembler messages:
arch/x86/xen/xen-asm_32.S:31: Error: no such instruction: `pax_direct_call xen_force_evtchn_callback'
make[2]: *** [scripts/Makefile.build:393: arch/x86/xen/xen-asm_32.o] Error 1
make[1]: *** [scripts/Makefile.build:544: arch/x86/xen] Error 2
make: *** [Makefile:990: arch/x86] Error 2
make: *** Waiting for unfinished jobs....
--- a/arch/x86/xen/xen-asm_32.S 2017-02-01 01:37:19.489257092 +0100
+++ b/arch/x86/xen/xen-asm_32.S 2017-02-19 20:51:37.900221416 +0100
@@ -15,6 +15,7 @@
#include <asm/processor-flags.h>
#include <asm/segment.h>
#include <asm/asm.h>
+#include <asm/alternative-asm.h>
#include <xen/interface/xen.h>