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:
kib 2015-09-22 16:29:55 +00:00
parent aa2db6bfb4
commit 6aeac4c27b

View File

@ -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 */