From 36472a1ef8b80f65ef9dd7f77503b1c117bfdccc Mon Sep 17 00:00:00 2001 From: Mark Huang Date: Fri, 17 Sep 2004 15:28:58 +0000 Subject: [PATCH] Initial revision --- arch/um/sys-i386/bitops.c | 70 ++++++++++++++++++++++++++++++++++++++ scripts/elfconfig.h | 5 +++ scripts/mk_elfconfig | Bin 0 -> 6015 bytes scripts/modpost | Bin 0 -> 24656 bytes 4 files changed, 75 insertions(+) create mode 100644 arch/um/sys-i386/bitops.c create mode 100644 scripts/elfconfig.h create mode 100644 scripts/mk_elfconfig create mode 100644 scripts/modpost 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 0000000000000000000000000000000000000000..cff1abc37343e5ec3724da8cecd4f37c2d5477f9 GIT binary patch literal 6015 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 S%f^evRPj37ycMY`ef|fW>#QyS literal 0 HcmV?d00001 diff --git a/scripts/modpost b/scripts/modpost new file mode 100644 index 0000000000000000000000000000000000000000..9bbb6fc9a4234cac458a3892acd043ec63ee6f9e GIT binary patch literal 24656 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