Index: 2.6-pre/include/asm-ppc/rwsem.h =================================================================== --- 2.6-pre.orig/include/asm-ppc/rwsem.h 2005-06-03 14:06:47.000000000 -0300 +++ 2.6-pre/include/asm-ppc/rwsem.h 2005-06-03 14:18:17.000000000 -0300 @@ -16,7 +16,7 @@ /* * the semaphore definition */ -struct rw_semaphore { +struct compat_rw_semaphore { /* XXX this should be able to be an atomic_t -- paulus */ signed long count; #define RWSEM_UNLOCKED_VALUE 0x00000000 @@ -41,20 +41,26 @@ #define __RWSEM_DEBUG_INIT /* */ #endif +#ifndef __RWSEM_INITIALIZER #define __RWSEM_INITIALIZER(name) \ { RWSEM_UNLOCKED_VALUE, RAW_SPIN_LOCK_UNLOCKED, \ LIST_HEAD_INIT((name).wait_list) \ __RWSEM_DEBUG_INIT } +#endif -#define DECLARE_RWSEM(name) \ - struct rw_semaphore name = __RWSEM_INITIALIZER(name) +#define COMPAT_DECLARE_RWSEM(name) \ + struct compat_rw_semaphore name = __RWSEM_INITIALIZER(name) -extern struct rw_semaphore *rwsem_down_read_failed(struct rw_semaphore *sem); -extern struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem); -extern struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem); -extern struct rw_semaphore *rwsem_downgrade_wake(struct rw_semaphore *sem); +extern struct compat_rw_semaphore *rwsem_down_read_failed( + struct compat_rw_semaphore *sem); +extern struct compat_rw_semaphore *rwsem_down_write_failed( + struct compat_rw_semaphore *sem); +extern struct compat_rw_semaphore *rwsem_wake( + struct compat_rw_semaphore *sem); +extern struct compat_rw_semaphore *rwsem_downgrade_wake( + struct compat_rw_semaphore *sem); -static inline void init_rwsem(struct rw_semaphore *sem) +static inline void compat_init_rwsem(struct compat_rw_semaphore *sem) { sem->count = RWSEM_UNLOCKED_VALUE; spin_lock_init(&sem->wait_lock); @@ -67,7 +73,7 @@ /* * lock for reading */ -static inline void __down_read(struct rw_semaphore *sem) +static inline void __down_read(struct compat_rw_semaphore *sem) { if (atomic_inc_return((atomic_t *)(&sem->count)) > 0) smp_wmb(); @@ -75,7 +81,7 @@ rwsem_down_read_failed(sem); } -static inline int __down_read_trylock(struct rw_semaphore *sem) +static inline int __down_read_trylock(struct compat_rw_semaphore *sem) { int tmp; @@ -92,7 +98,7 @@ /* * lock for writing */ -static inline void __down_write(struct rw_semaphore *sem) +static inline void __down_write(struct compat_rw_semaphore *sem) { int tmp; @@ -104,7 +110,7 @@ rwsem_down_write_failed(sem); } -static inline int __down_write_trylock(struct rw_semaphore *sem) +static inline int __down_write_trylock(struct compat_rw_semaphore *sem) { int tmp; @@ -117,7 +123,7 @@ /* * unlock after reading */ -static inline void __up_read(struct rw_semaphore *sem) +static inline void __up_read(struct compat_rw_semaphore *sem) { int tmp; @@ -130,7 +136,7 @@ /* * unlock after writing */ -static inline void __up_write(struct rw_semaphore *sem) +static inline void __up_write(struct compat_rw_semaphore *sem) { smp_wmb(); if (atomic_sub_return(RWSEM_ACTIVE_WRITE_BIAS, @@ -141,7 +147,7 @@ /* * implement atomic add functionality */ -static inline void rwsem_atomic_add(int delta, struct rw_semaphore *sem) +static inline void rwsem_atomic_add(int delta, struct compat_rw_semaphore *sem) { atomic_add(delta, (atomic_t *)(&sem->count)); } @@ -149,7 +155,7 @@ /* * downgrade write lock to read lock */ -static inline void __downgrade_write(struct rw_semaphore *sem) +static inline void __downgrade_write(struct compat_rw_semaphore *sem) { int tmp; @@ -162,7 +168,7 @@ /* * implement exchange and add functionality */ -static inline int rwsem_atomic_update(int delta, struct rw_semaphore *sem) +static inline int rwsem_atomic_update(int delta, struct compat_rw_semaphore *sem) { smp_mb(); return atomic_add_return(delta, (atomic_t *)(&sem->count)); Index: 2.6-pre/include/asm-ppc/semaphore.h =================================================================== --- 2.6-pre.orig/include/asm-ppc/semaphore.h 2005-06-03 13:46:22.000000000 -0300 +++ 2.6-pre/include/asm-ppc/semaphore.h 2005-06-03 14:30:12.000000000 -0300 @@ -25,7 +25,7 @@ #include #include -struct semaphore { +struct compat_semaphore { /* * Note that any negative value of count is equivalent to 0, * but additionally indicates that some process(es) might be @@ -35,42 +35,42 @@ wait_queue_head_t wait; }; -#define __SEMAPHORE_INITIALIZER(name, n) \ +#define __COMPAT_SEMAPHORE_INITIALIZER(name, n) \ { \ .count = ATOMIC_INIT(n), \ .wait = __WAIT_QUEUE_HEAD_INITIALIZER((name).wait) \ } #define __MUTEX_INITIALIZER(name) \ - __SEMAPHORE_INITIALIZER(name, 1) + __COMPAT_SEMAPHORE_INITIALIZER(name, 1) -#define __DECLARE_SEMAPHORE_GENERIC(name, count) \ - struct semaphore name = __SEMAPHORE_INITIALIZER(name,count) +#define __COMPAT_DECLARE_SEMAPHORE_GENERIC(name, count) \ + struct compat_semaphore name = __COMPAT_SEMAPHORE_INITIALIZER(name,count) -#define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name, 1) -#define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name, 0) +#define DECLARE_MUTEX(name) __COMPAT_DECLARE_SEMAPHORE_GENERIC(name, 1) +#define DECLARE_MUTEX_LOCKED(name) __COMPAT_DECLARE_SEMAPHORE_GENERIC(name, 0) -static inline void sema_init (struct semaphore *sem, int val) +static inline void compat_sema_init (struct compat_semaphore *sem, int val) { atomic_set(&sem->count, val); init_waitqueue_head(&sem->wait); } -static inline void init_MUTEX (struct semaphore *sem) +static inline void compat_init_MUTEX (struct compat_semaphore *sem) { - sema_init(sem, 1); + compat_sema_init(sem, 1); } -static inline void init_MUTEX_LOCKED (struct semaphore *sem) +static inline void compat_init_MUTEX_LOCKED (struct compat_semaphore *sem) { - sema_init(sem, 0); + compat_sema_init(sem, 0); } -extern void __down(struct semaphore * sem); -extern int __down_interruptible(struct semaphore * sem); -extern void __up(struct semaphore * sem); +extern void __compat_down(struct compat_semaphore * sem); +extern int __compat_down_interruptible(struct compat_semaphore * sem); +extern void __up(struct compat_semaphore * sem); -extern inline void down(struct semaphore * sem) +extern inline void compat_down(struct compat_semaphore * sem) { might_sleep(); @@ -78,23 +78,23 @@ * Try to get the semaphore, take the slow path if we fail. */ if (atomic_dec_return(&sem->count) < 0) - __down(sem); + __compat_down(sem); smp_wmb(); } -extern inline int down_interruptible(struct semaphore * sem) +extern inline int compat_down_interruptible(struct compat_semaphore * sem) { int ret = 0; might_sleep(); if (atomic_dec_return(&sem->count) < 0) - ret = __down_interruptible(sem); + ret = __compat_down_interruptible(sem); smp_wmb(); return ret; } -extern inline int down_trylock(struct semaphore * sem) +extern inline int compat_down_trylock(struct compat_semaphore * sem) { int ret; @@ -103,11 +103,11 @@ return ret; } -extern inline void up(struct semaphore * sem) +extern inline void compat_up(struct compat_semaphore * sem) { smp_wmb(); if (atomic_inc_return(&sem->count) <= 0) - __up(sem); + __compat_up(sem); } #endif /* CONFIG_PREEMPT_RT */ Index: 2.6-pre/drivers/char/blocker.c =================================================================== --- 2.6-pre.orig/drivers/char/blocker.c 2005-06-03 14:57:52.000000000 -0300 +++ 2.6-pre/drivers/char/blocker.c 2005-06-03 15:05:59.000000000 -0300 @@ -17,6 +17,8 @@ u64 tsc; #ifdef ARCHARM tsc = *oscr; +#elif defined(CONFIG_PPC) + tsc = sched_clock(); #else __asm__ __volatile__("rdtsc" : "=A" (tsc)); #endif Index: 2.6-pre/kernel/latency.c =================================================================== --- 2.6-pre.orig/kernel/latency.c 2005-06-03 13:46:19.000000000 -0300 +++ 2.6-pre/kernel/latency.c 2005-06-03 14:35:21.000000000 -0300 @@ -22,6 +22,7 @@ #include #include #include +#include #ifdef __i386__ static inline cycles_t cycles(void)