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 | |
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>
-rw-r--r-- | .rootkeys | 1 | ||||
-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 | ||||
-rw-r--r-- | linux-2.6.10-xen-sparse/arch/xen/i386/mm/init.c | 4 |
5 files changed, 18 insertions, 87 deletions
@@ -107,7 +107,6 @@ 41224663YBCUMX1kVo_HRUtgaHTi7w linux-2.4.29-xen-sparse/include/asm-xen/queues.h 3e5a4e68uJz-xI0IBVMD7xRLQKJDFg linux-2.4.29-xen-sparse/include/asm-xen/segment.h 3e5a4e68Nfdh6QcOKUTGCaYkf2LmYA linux-2.4.29-xen-sparse/include/asm-xen/smp.h -4062f7e2PzFOUGT0PaE7A0VprTU3JQ linux-2.4.29-xen-sparse/include/asm-xen/synch_bitops.h 3e5a4e68mTr0zcp9SXDbnd-XLrrfxw linux-2.4.29-xen-sparse/include/asm-xen/system.h 3f1056a9L_kqHcFheV00KbKBzv9j5w linux-2.4.29-xen-sparse/include/asm-xen/vga.h 40659defgWA92arexpMGn8X3QMDj3w linux-2.4.29-xen-sparse/include/asm-xen/xor.h 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 diff --git a/linux-2.6.10-xen-sparse/arch/xen/i386/mm/init.c b/linux-2.6.10-xen-sparse/arch/xen/i386/mm/init.c index 1ad543ccc2..08d4f0c0ce 100644 --- a/linux-2.6.10-xen-sparse/arch/xen/i386/mm/init.c +++ b/linux-2.6.10-xen-sparse/arch/xen/i386/mm/init.c @@ -179,9 +179,7 @@ static void __init kernel_physical_mapping_init(pgd_t *pgd_base) pte += pte_ofs; for (; pte_ofs < PTRS_PER_PTE && pfn < max_low_pfn; pte++, pfn++, pte_ofs++) { /* XEN: Only map initial RAM allocation. */ - if (pfn >= max_ram_pfn) - break; - if (pte_present(*pte)) + if ((pfn >= max_ram_pfn) || pte_present(*pte)) continue; if (is_kernel_text(address)) set_pte(pte, pfn_pte(pfn, PAGE_KERNEL_EXEC)); |