summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2019-05-10 14:05:04 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2019-05-10 14:05:04 +0200
commitdb3bf8271bd6afe732256b98e86fe38612cb5ff9 (patch)
tree15e2332661668a0689083555ee22fea16a68ee87
parentaddb36ee488757125c43c02076006dba8c9e69bc (diff)
downloadplan9front-db3bf8271bd6afe732256b98e86fe38612cb5ff9.tar.xz
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.
-rw-r--r--sys/src/9/bcm64/l.s11
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/src/9/bcm64/l.s b/sys/src/9/bcm64/l.s
index 4e64773f7..69e9c3924 100644
--- a/sys/src/9/bcm64/l.s
+++ b/sys/src/9/bcm64/l.s
@@ -293,10 +293,13 @@ TEXT splx(SB), 1, $-4
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