Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rmk/linux
[linux-block.git] / arch / arm / lib / csumpartialcopyuser.S
index 6928781e6beebcf3aab564ef0a52461e3ad43e92..c289bde0474349c3158df92b57eacce9fd040407 100644 (file)
@@ -13,7 +13,8 @@
 
                .text
 
-#ifdef CONFIG_CPU_SW_DOMAIN_PAN
+#if defined(CONFIG_CPU_SW_DOMAIN_PAN)
+
                .macro  save_regs
                mrc     p15, 0, ip, c3, c0, 0
                stmfd   sp!, {r1, r2, r4 - r8, ip, lr}
                mcr     p15, 0, ip, c3, c0, 0
                ret     lr
                .endm
+
+#elif defined(CONFIG_CPU_TTBR0_PAN)
+
+               .macro  save_regs
+               mrc     p15, 0, ip, c2, c0, 2           @ read TTBCR
+               stmfd   sp!, {r1, r2, r4 - r8, ip, lr}
+               uaccess_enable ip
+               .endm
+
+               .macro  load_regs
+               ldmfd   sp!, {r1, r2, r4 - r8, ip, lr}
+               mcr     p15, 0, ip, c2, c0, 2           @ restore TTBCR
+               ret     lr
+               .endm
+
 #else
+
                .macro  save_regs
                stmfd   sp!, {r1, r2, r4 - r8, lr}
                .endm
@@ -33,6 +50,7 @@
                .macro  load_regs
                ldmfd   sp!, {r1, r2, r4 - r8, pc}
                .endm
+
 #endif
 
                .macro  load1b, reg1