Restore release semantic for the old thread unlock on arm64.

With the introduction of pmap_switch(), the DSB instruction on the
address map switch is not necessary executed, which is fixed by
changing the unlock store to release.  Also remove comment which
documented pre-pmap_switch() code.

Reviewed by:	andrew
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
This commit is contained in:
kib 2018-06-08 18:32:26 +00:00
parent c63bab5082
commit 11ea0b8f38

View File

@ -165,10 +165,9 @@ ENTRY(cpu_switch)
mov x0, x19
/*
* Release the old thread. This doesn't need to be a store-release
* as the above dsb instruction will provide release semantics.
* Release the old thread.
*/
str x2, [x0, #TD_LOCK]
stlr x2, [x0, #TD_LOCK]
#if defined(SCHED_ULE) && defined(SMP)
/* Spin if TD_LOCK points to a blocked_lock */
ldr x2, =_C_LABEL(blocked_lock)