Re-check for new ast after ast was handled. We should not return to
usermode with pending asts. Reviewed by: andrew Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D3667
This commit is contained in:
parent
aa2db6bfb4
commit
6aeac4c27b
@ -100,10 +100,11 @@ __FBSDID("$FreeBSD$");
|
||||
.macro do_ast
|
||||
/* Disable interrupts */
|
||||
mrs x19, daif
|
||||
1:
|
||||
msr daifset, #2
|
||||
|
||||
/* Read the current thread flags */
|
||||
1: ldr x1, [x18, #PC_CURTHREAD] /* Load curthread */
|
||||
ldr x1, [x18, #PC_CURTHREAD] /* Load curthread */
|
||||
ldr x2, [x1, #TD_FLAGS]
|
||||
|
||||
/* Check if we have either bits set */
|
||||
@ -120,9 +121,8 @@ __FBSDID("$FreeBSD$");
|
||||
mov x0, sp
|
||||
bl _C_LABEL(ast)
|
||||
|
||||
/* Disable interrupts */
|
||||
mrs x19, daif
|
||||
msr daifset, #2
|
||||
/* Re-check for new ast scheduled */
|
||||
b 1b
|
||||
|
||||
2:
|
||||
/* Restore interrupts */
|
||||
|
Loading…
x
Reference in New Issue
Block a user