mirror of
https://github.com/torvalds/linux.git
synced 2024-12-29 14:21:47 +00:00
powerpc/kuap: Wire-up KUAP on 44x
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.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/7d6c3f1978a26feada74b084f651e8cf1e3b3a47.1634627931.git.christophe.leroy@csgroup.eu
This commit is contained in:
parent
43afcf8f01
commit
f6fad4fb55
@ -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
|
||||
@ -572,6 +580,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
|
||||
@ -669,6 +681,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 */
|
||||
|
@ -64,6 +64,7 @@ config 44x
|
||||
select PHYS_64BIT
|
||||
select PPC_HAVE_KUEP
|
||||
select PPC_KUEP
|
||||
select PPC_HAVE_KUAP
|
||||
|
||||
endchoice
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user