Fixes some CAS loops
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 19 May 2011 21:09:36 +0000 (14:09 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:36:03 +0000 (17:36 -0700)
commit9c818c5d3c75d4e0091e671f3f637022db726c5b
treee06333490f4c059a4de252554c58ae7ce348c370
parentd7a05f354d2fd895b61a844af9d9d354eaf4f42f
Fixes some CAS loops

The old loops were caching sysc->flags in a register.

For the uthread code, those should have been atomic reads, which forces
a re-read.  I added the cmb()s in case the code changes in the future.
In general, comp_swap technically doesn't need "memory", and any loops
using it ought to provide their own cmb()s.  Still, I put it in CAS just
to avoid future bugs.
kern/arch/i686/atomic.h
kern/include/ros/bcq.h
user/parlib/include/i686/atomic.h
user/parlib/uthread.c