Last fix due to w3seek.  I will stop working on this stuff until I have 
time to be thorough.
Modified: trunk/reactos/lib/rosrtl/misc/intrlck.c

Modified: trunk/reactos/lib/rosrtl/misc/intrlck.c
--- trunk/reactos/lib/rosrtl/misc/intrlck.c	2005-03-08 23:01:54 UTC (rev 13892)
+++ trunk/reactos/lib/rosrtl/misc/intrlck.c	2005-03-08 23:07:10 UTC (rev 13893)
@@ -136,8 +136,9 @@
                   "lock\n\txchgl %0,(%1)"
                   :"=r" (ret):"r" (target), "0" (value):"memory" );
 #elif defined(_M_PPC)
-        ret = *(volatile LONG *)target;
-        while( InterlockedCompareExchange( target, value, ret ) != ret );
+        do {
+            ret = *(volatile LONG *)target;
+        } while( InterlockedCompareExchange( target, value, ret ) != ret );
 #endif
 	return ret;
 }