diff options
author | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2005-02-27 10:37:32 +0000 |
---|---|---|
committer | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2005-02-27 10:37:32 +0000 |
commit | 7ac608f74a2bce612ae8a10c633bf677fe8e8e95 (patch) | |
tree | c4bd34e45badb937ca1c025889f5ca0660aacdf9 /linux-2.4.29-xen-sparse | |
parent | 8ed0d261a5ce2c6fea7688cee1d0effcba3128e1 (diff) | |
download | xen-7ac608f74a2bce612ae8a10c633bf677fe8e8e95.tar.gz xen-7ac608f74a2bce612ae8a10c633bf677fe8e8e95.tar.bz2 xen-7ac608f74a2bce612ae8a10c633bf677fe8e8e95.zip |
bitkeeper revision 1.1159.258.16 (4221a2ecsI-7_TFUEYf9_8zVhzHq3Q)
Fix 2.4 build, and a small 2.6 bootstrap tweak.
Signed-off-by: Keir Fraser <keir@xensource.com>
Diffstat (limited to 'linux-2.4.29-xen-sparse')
-rw-r--r-- | linux-2.4.29-xen-sparse/include/asm-xen/synch_bitops.h | 83 | ||||
-rw-r--r-- | linux-2.4.29-xen-sparse/include/asm-xen/system.h | 16 | ||||
-rwxr-xr-x | linux-2.4.29-xen-sparse/mkbuildtree | 1 |
3 files changed, 17 insertions, 83 deletions
diff --git a/linux-2.4.29-xen-sparse/include/asm-xen/synch_bitops.h b/linux-2.4.29-xen-sparse/include/asm-xen/synch_bitops.h deleted file mode 100644 index 8093de0ac9..0000000000 --- a/linux-2.4.29-xen-sparse/include/asm-xen/synch_bitops.h +++ /dev/null @@ -1,83 +0,0 @@ -#ifndef __XEN_SYNCH_BITOPS_H__ -#define __XEN_SYNCH_BITOPS_H__ - -/* - * Copyright 1992, Linus Torvalds. - * Heavily modified to provide guaranteed strong synchronisation - * when communicating with Xen or other guest OSes running on other CPUs. - */ - -#include <linux/config.h> - -#define ADDR (*(volatile long *) addr) - -static __inline__ void synch_set_bit(int nr, volatile void * addr) -{ - __asm__ __volatile__ ( - "lock btsl %1,%0" - : "=m" (ADDR) : "Ir" (nr) : "memory" ); -} - -static __inline__ void synch_clear_bit(int nr, volatile void * addr) -{ - __asm__ __volatile__ ( - "lock btrl %1,%0" - : "=m" (ADDR) : "Ir" (nr) : "memory" ); -} - -static __inline__ void synch_change_bit(int nr, volatile void * addr) -{ - __asm__ __volatile__ ( - "lock btcl %1,%0" - : "=m" (ADDR) : "Ir" (nr) : "memory" ); -} - -static __inline__ int synch_test_and_set_bit(int nr, volatile void * addr) -{ - int oldbit; - __asm__ __volatile__ ( - "lock btsl %2,%1\n\tsbbl %0,%0" - : "=r" (oldbit), "=m" (ADDR) : "Ir" (nr) : "memory"); - return oldbit; -} - -static __inline__ int synch_test_and_clear_bit(int nr, volatile void * addr) -{ - int oldbit; - __asm__ __volatile__ ( - "lock btrl %2,%1\n\tsbbl %0,%0" - : "=r" (oldbit), "=m" (ADDR) : "Ir" (nr) : "memory"); - return oldbit; -} - -static __inline__ int synch_test_and_change_bit(int nr, volatile void * addr) -{ - int oldbit; - - __asm__ __volatile__ ( - "lock btcl %2,%1\n\tsbbl %0,%0" - : "=r" (oldbit), "=m" (ADDR) : "Ir" (nr) : "memory"); - return oldbit; -} - -static __inline__ int synch_const_test_bit(int nr, const volatile void * addr) -{ - return ((1UL << (nr & 31)) & - (((const volatile unsigned int *) addr)[nr >> 5])) != 0; -} - -static __inline__ int synch_var_test_bit(int nr, volatile void * addr) -{ - int oldbit; - __asm__ __volatile__ ( - "btl %2,%1\n\tsbbl %0,%0" - : "=r" (oldbit) : "m" (ADDR), "Ir" (nr) ); - return oldbit; -} - -#define synch_test_bit(nr,addr) \ -(__builtin_constant_p(nr) ? \ - synch_const_test_bit((nr),(addr)) : \ - synch_var_test_bit((nr),(addr))) - -#endif /* __XEN_SYNCH_BITOPS_H__ */ diff --git a/linux-2.4.29-xen-sparse/include/asm-xen/system.h b/linux-2.4.29-xen-sparse/include/asm-xen/system.h index 9be6e291fe..fda33efd3a 100644 --- a/linux-2.4.29-xen-sparse/include/asm-xen/system.h +++ b/linux-2.4.29-xen-sparse/include/asm-xen/system.h @@ -113,6 +113,22 @@ static inline unsigned long _get_base(char * addr) #endif /* __KERNEL__ */ +/** + * __ffs - find first bit in word. + * @word: The word to search + * + * Undefined if no bit exists, so code should check against 0 first. + * + * Taken from 2.6 for Xen. + */ +static inline unsigned long __ffs(unsigned long word) +{ + __asm__("bsfl %1,%0" + :"=r" (word) + :"rm" (word)); + return word; +} + static inline unsigned long get_limit(unsigned long segment) { unsigned long __limit; diff --git a/linux-2.4.29-xen-sparse/mkbuildtree b/linux-2.4.29-xen-sparse/mkbuildtree index d586153418..f72b2cd7b1 100755 --- a/linux-2.4.29-xen-sparse/mkbuildtree +++ b/linux-2.4.29-xen-sparse/mkbuildtree @@ -211,6 +211,7 @@ ln -sf ../../${LINUX_26}/include/asm-xen/gnttab.h ln -sf ../../${LINUX_26}/include/asm-xen/hypervisor.h ln -sf ../../${LINUX_26}/include/asm-xen/multicall.h ln -sf ../../${LINUX_26}/include/asm-xen/xen_proc.h +ln -sf ../../${LINUX_26}/include/asm-xen/asm-i386/synch_bitops.h mkdir -p linux-public && cd linux-public ln -sf ../../../${LINUX_26}/include/asm-xen/linux-public/privcmd.h |