From: Mark Huang Date: Fri, 17 Sep 2004 15:28:58 +0000 (+0000) Subject: Initial revision X-Git-Tag: before-enable-kexec-patch~79 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=36472a1ef8b80f65ef9dd7f77503b1c117bfdccc;p=linux-2.6.git Initial revision --- diff --git a/arch/um/sys-i386/bitops.c b/arch/um/sys-i386/bitops.c new file mode 100644 index 000000000..97db3853d --- /dev/null +++ b/arch/um/sys-i386/bitops.c @@ -0,0 +1,70 @@ +#include +#include + +/** + * find_next_bit - find the first set bit in a memory region + * @addr: The address to base the search on + * @offset: The bitnumber to start searching at + * @size: The maximum size to search + */ +int find_next_bit(const unsigned long *addr, int size, int offset) +{ + const unsigned long *p = addr + (offset >> 5); + int set = 0, bit = offset & 31, res; + + if (bit) { + /* + * Look for nonzero in the first 32 bits: + */ + __asm__("bsfl %1,%0\n\t" + "jne 1f\n\t" + "movl $32, %0\n" + "1:" + : "=r" (set) + : "r" (*p >> bit)); + if (set < (32 - bit)) + return set + offset; + set = 32 - bit; + p++; + } + /* + * No set bit yet, search remaining full words for a bit + */ + res = find_first_bit (p, size - 32 * (p - addr)); + return (offset + set + res); +} +EXPORT_SYMBOL(find_next_bit); + +/** + * find_next_zero_bit - find the first zero bit in a memory region + * @addr: The address to base the search on + * @offset: The bitnumber to start searching at + * @size: The maximum size to search + */ +int find_next_zero_bit(const unsigned long *addr, int size, int offset) +{ + unsigned long * p = ((unsigned long *) addr) + (offset >> 5); + int set = 0, bit = offset & 31, res; + + if (bit) { + /* + * Look for zero in the first 32 bits. + */ + __asm__("bsfl %1,%0\n\t" + "jne 1f\n\t" + "movl $32, %0\n" + "1:" + : "=r" (set) + : "r" (~(*p >> bit))); + if (set < (32 - bit)) + return set + offset; + set = 32 - bit; + p++; + } + /* + * No zero yet, search remaining full bytes for a zero + */ + res = find_first_zero_bit (p, size - 32 * (p - (unsigned long *) addr)); + return (offset + set + res); +} +EXPORT_SYMBOL(find_next_zero_bit); diff --git a/scripts/elfconfig.h b/scripts/elfconfig.h new file mode 100644 index 000000000..1b2f317b3 --- /dev/null +++ b/scripts/elfconfig.h @@ -0,0 +1,5 @@ +#define KERNEL_ELFCLASS ELFCLASS32 +#define KERNEL_ELFDATA ELFDATA2LSB +#define HOST_ELFCLASS ELFCLASS32 +#define HOST_ELFDATA ELFDATA2LSB +#define MODULE_SYMBOL_PREFIX "" diff --git a/scripts/mk_elfconfig b/scripts/mk_elfconfig new file mode 100644 index 000000000..cff1abc37 Binary files /dev/null and b/scripts/mk_elfconfig differ diff --git a/scripts/modpost b/scripts/modpost new file mode 100644 index 000000000..9bbb6fc9a Binary files /dev/null and b/scripts/modpost differ