aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>2005-02-27 10:37:32 +0000
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>2005-02-27 10:37:32 +0000
commit7ac608f74a2bce612ae8a10c633bf677fe8e8e95 (patch)
treec4bd34e45badb937ca1c025889f5ca0660aacdf9
parent8ed0d261a5ce2c6fea7688cee1d0effcba3128e1 (diff)
downloadxen-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--.rootkeys1
-rw-r--r--linux-2.4.29-xen-sparse/include/asm-xen/synch_bitops.h83
-rw-r--r--linux-2.4.29-xen-sparse/include/asm-xen/system.h16
-rwxr-xr-xlinux-2.4.29-xen-sparse/mkbuildtree1
-rw-r--r--linux-2.6.10-xen-sparse/arch/xen/i386/mm/init.c4
5 files changed, 18 insertions, 87 deletions
diff --git a/.rootkeys b/.rootkeys
index 548d82aed1..5b0c95014a 100644
--- a/.rootkeys
+++ b/.rootkeys
@@ -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));