Mwait cleanup
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 2 Jan 2015 19:36:01 +0000 (14:36 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 5 Jan 2015 21:24:09 +0000 (16:24 -0500)
commit7970b7dfc7faba6b8358faeb5d7bb44e141c5d01
tree2fdfac2740c3651beb71af5da44e50e7fe8d01f8
parentab8a061473ae0d892680d2e84ce9614265a57aff
Mwait cleanup

"rax" isn't the input specifier; it is "a".  That loads void* eax into rax, and
we don't need the movq to rax.

Also, we were leaving the monitor value in rax instead of using an appropriate
hint.  I don't know what passing gibberish does to mwait.  Incidentally,
nothing I pass here matters in qemu - the VM still hogs CPU time.

Finally, any real use of monitor/mwait needs to deal with the race on the
monitored address.  After we monitor, we should check and see if the address
has been changed, similar to how futexes and CAS work.  We'll probably need a
couple helpers and a nice top-level function for this.
kern/arch/x86/arch.h