Currently we use yield instruction (which is basically an alias of nop) and it has an impact on CPU usage. We should consider switching to "Wait-for-Event with timeout" instruction:
Example (generated by GPT):
// Armv8.7-A + FEAT_WFxT
// quick_spin_wait(): brief pause (~50µs) using WFET
.p2align 4
quick_spin_wait:
mrs x9, CNTVCT_EL0 // now
mrs x10, CNTFRQ_EL0 // counter Hz
mov x11, #50 // microseconds
mul x12, x10, x11 // Hz * usec
mov x13, #1000000
udiv x12, x12, x13 // ticks for ~50us
add x12, x9, x12 // absolute deadline
sevl
wfet x12 // clear event reg / quick bail
wfet x12 // sleep until event/timeout
ret
Hopefully, all of these are allowed in the user space.
Currently we use
yieldinstruction (which is basically an alias ofnop) and it has an impact on CPU usage. We should consider switching to "Wait-for-Event with timeout" instruction:Example (generated by GPT):
Hopefully, all of these are allowed in the user space.