This adds KUAP support to 44x. This is done by checking
the content of SPRN_PID at the time it is read and written
into SPRN_MMUCR.

Signed-off-by: Christophe Leroy <christophe.le...@csgroup.eu>
---
 arch/powerpc/kernel/head_44x.S         | 16 ++++++++++++++++
 arch/powerpc/platforms/Kconfig.cputype |  1 +
 2 files changed, 17 insertions(+)

diff --git a/arch/powerpc/kernel/head_44x.S b/arch/powerpc/kernel/head_44x.S
index 02d2928d1e01..cf92a3434acd 100644
--- a/arch/powerpc/kernel/head_44x.S
+++ b/arch/powerpc/kernel/head_44x.S
@@ -334,6 +334,10 @@ interrupt_base:
        mfspr   r12,SPRN_MMUCR
        mfspr   r13,SPRN_PID            /* Get PID */
        rlwimi  r12,r13,0,24,31         /* Set TID */
+#ifdef CONFIG_PPC_KUAP
+       cmpwi   r13,0
+       beq     2f                      /* KUAP Fault */
+#endif
 
 4:
        mtspr   SPRN_MMUCR,r12
@@ -444,6 +448,10 @@ interrupt_base:
        mfspr   r12,SPRN_MMUCR
        mfspr   r13,SPRN_PID            /* Get PID */
        rlwimi  r12,r13,0,24,31         /* Set TID */
+#ifdef CONFIG_PPC_KUAP
+       cmpwi   r13,0
+       beq     2f                      /* KUAP Fault */
+#endif
 
 4:
        mtspr   SPRN_MMUCR,r12
@@ -575,6 +583,10 @@ finish_tlb_load_44x:
 3:     mfspr   r11,SPRN_SPRG3
        lwz     r11,PGDIR(r11)
        mfspr   r12,SPRN_PID            /* Get PID */
+#ifdef CONFIG_PPC_KUAP
+       cmpwi   r12,0
+       beq     2f                      /* KUAP Fault */
+#endif
 4:     mtspr   SPRN_MMUCR,r12          /* Set MMUCR */
 
        /* Mask of required permission bits. Note that while we
@@ -672,6 +684,10 @@ finish_tlb_load_44x:
 3:     mfspr   r11,SPRN_SPRG_THREAD
        lwz     r11,PGDIR(r11)
        mfspr   r12,SPRN_PID            /* Get PID */
+#ifdef CONFIG_PPC_KUAP
+       cmpwi   r12,0
+       beq     2f                      /* KUAP Fault */
+#endif
 4:     mtspr   SPRN_MMUCR,r12          /* Set MMUCR */
 
        /* Make up the required permissions */
diff --git a/arch/powerpc/platforms/Kconfig.cputype 
b/arch/powerpc/platforms/Kconfig.cputype
index a66ab0a991f9..30091551ab24 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -62,6 +62,7 @@ config 44x
        select HAVE_PCI
        select PHYS_64BIT
        select PPC_HAVE_KUEP
+       select PPC_HAVE_KUAP
 
 endchoice
 
-- 
2.31.1

Reply via email to