ref: db3bf8271bd6afe732256b98e86fe38612cb5ff9
parent: addb36ee488757125c43c02076006dba8c9e69bc
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Fri May 10 10:05:04 EDT 2019
bcm64: use exclusive monitor on nrdy to wake up idlehands() when the exclusive monitor is cleared, a event is generated which we can use to wake up idlehands. that way we do not need to wait for the next timer interrupt until a cpu takes work from the run queue.
--- a/sys/src/9/bcm64/l.s
+++ b/sys/src/9/bcm64/l.s
@@ -293,10 +293,13 @@
TEXT idlehands(SB), 1, $-4
DMB $ISH
- MOVW nrdy(SB), R0
- CBNZ R0, _ready
- WFI
-_ready:
+ MOV $nrdy(SB), R1
+ LDXRW (R1), R0
+ CBZ R0, _goodnight
+ CLREX
+ SEVL
+_goodnight:
+ WFE
RETURN
TEXT cycles(SB), 1, $-4