make sure use the kernel space after change ASID

after the SWITCH_TO_APP_PAGETABLE, the ASID is changed
to the application ASID, but there are still some
instruction before ERET, since these instruction is
not use the kernel address space, it may use the application's
TLB, which will cause fault, this patch can make sure that
after SWITCH_TO_APP_PAGETABLE sentry is still use kernel
address space which is mapped as Global.

Signed-off-by: Min Le <lemin.lm@antgroup.com>
This commit is contained in:
Min Le 2020-09-24 20:16:41 +08:00
parent 742e58b873
commit 2c849c72b9
1 changed files with 8 additions and 0 deletions

View File

@ -461,6 +461,14 @@ TEXT ·kernelExitToEl0(SB),NOSPLIT,$0
MOVD PTRACE_PSTATE(RSV_REG_APP), R1 MOVD PTRACE_PSTATE(RSV_REG_APP), R1
WORD $0xd5184001 //MSR R1, SPSR_EL1 WORD $0xd5184001 //MSR R1, SPSR_EL1
// need use kernel space address to excute below code, since
// after SWITCH_TO_APP_PAGETABLE the ASID is changed to app's
// ASID.
WORD $0x10000061 // ADR R1, do_exit_to_el0
ORR $0xffff000000000000, R1, R1
JMP (R1)
do_exit_to_el0:
// RSV_REG & RSV_REG_APP will be loaded at the end. // RSV_REG & RSV_REG_APP will be loaded at the end.
REGISTERS_LOAD(RSV_REG_APP, 0) REGISTERS_LOAD(RSV_REG_APP, 0)