* the rights to redistribute these changes.
*/
-#ifndef _PPC_HW_LOCK_H_
-#define _PPC_HW_LOCK_H_
+#ifndef _PPC_LOCK_H_
+#define _PPC_LOCK_H_
+
+#include <sys/appleapiopts.h>
+
+#ifdef __APPLE_API_PRIVATE
#include <kern/macro_help.h>
#include <kern/assert.h>
+#include <mach/etap_events.h>
+#include <mach/etap.h>
-#define NEED_ATOMIC 1
+extern unsigned int LockTimeOut; /* Number of hardware ticks of a lock timeout */
-#define mutex_try _mutex_try
-#define mutex_lock(m) \
-MACRO_BEGIN \
- assert(assert_wait_possible()); \
- _mutex_lock((m)); \
-MACRO_END
+#if defined(MACH_KERNEL_PRIVATE)
-extern unsigned int LockTimeOut; /* Number of hardware ticks of a lock timeout */
+#include <cpus.h>
+
+#if !(NCPUS == 1 || ETAP_LOCK_TRACE || USLOCK_DEBUG)
+
+#include <ppc/hw_lock_types.h>
+
+#define __slock_held_func__(l) hw_lock_held(l)
+
+extern void ppc_usimple_lock_init(simple_lock_t,etap_event_t);
+extern void ppc_usimple_lock(simple_lock_t);
+extern void ppc_usimple_unlock_rwmb(simple_lock_t);
+extern void ppc_usimple_unlock_rwcmb(simple_lock_t);
+extern unsigned int ppc_usimple_lock_try(simple_lock_t);
+
+#define MACHINE_SIMPLE_LOCK
+
+#define simple_lock_init(l,t) ppc_usimple_lock_init(l,t)
+#define simple_lock(l) ppc_usimple_lock(l)
+#define simple_unlock(l) ppc_usimple_unlock_rwcmb(l)
+#define simple_unlock_rwmb(l) ppc_usimple_unlock_rwmb(l)
+#define simple_lock_try(l) ppc_usimple_lock_try(l)
+#define simple_lock_addr(l) (&(l))
+#define thread_sleep_simple_lock(l, e, i) \
+ thread_sleep_fast_usimple_lock((l), (e), (i))
+
+#define mutex_unlock(l) mutex_unlock_rwcmb(l)
+
+#endif /* !(NCPUS == 1 || ETAP_LOCK_TRACE || USLOCK_DEBUG) */
+
+#endif /* MACH_KERNEL_PRIVATE */
+
+#endif /* __APPLE_API_PRIVATE */
-#endif /* _PPC_HW_LOCK_H_ */
+#endif /* _PPC_LOCK_H_ */