x86: finalize bitops unification
PATCH 1/1 x86: finalize bitops unification
x86: finalize bitops unification
include/asm-x86/bitops_32.h and include/asm-x86/bitops_64.h are now almost identical. The 64-bit version sets ARCH_HAS_FAST_MULTIPLIER and has an extra inline function set_bit_string. The define currently has no influence on the generated code, but it can be argued that setting it on i386 is the right thing to do anyhow. The addition of the extra inline function on i386 does not hurt either.
---
Hi Ingo,
This patch finishes the bitops unification.
Greetings,
Alexander
include/asm-x86/bitops.h | 38 +++++++++++++++++++++++++++++++++----- include/asm-x86/bitops_32.h | 30 ------------------------------ include/asm-x86/bitops_64.h | 42 ------------------------------------------ 3 files changed, 33 insertions(+), 77 deletions(-)
include/asm-x86/bitops.h +33 -5
@@ -401,10 +401,38 @@ static inline int fls(int x)#undef BIT_ADDR#undef ADDR -#ifdef CONFIG_X86_32 -# include "bitops_32.h" -#else -# include "bitops_64.h" -#endif +static inline void set_bit_string (unsigned long *bitmap, +unsigned long i,int len) +{ +unsigned long end = i + len; +while (i < end) { +__set_bit (i, bitmap); + i++; + } +} + +#ifdef __KERNEL__ + +#include <asm-generic/bitops/sched.h> + +#define ARCH_HAS_FAST_MULTIPLIER 1 + +#include <asm-generic/bitops/hweight.h> +#endif /* __KERNEL__ */ + +#include <asm-generic/bitops/fls64.h> + +#ifdef __KERNEL__ + +#include <asm-generic/bitops/ext2-non-atomic.h> + +#define ext2_set_bit_atomic (lock, nr, addr) \ + test_and_set_bit((nr), (unsigned long *)(addr)) +#define ext2_clear_bit_atomic (lock, nr, addr) \ + test_and_clear_bit((nr), (unsigned long *)(addr)) + +#include <asm-generic/bitops/minix.h> + +#endif /* __KERNEL__ */ #endif /* _ASM_X86_BITOPS_H */
include/asm-x86/bitops_32.h deleted +0 -30
@@ -1,30 +0,0 @@ -#ifndef _I386_BITOPS_H -#define _I386_BITOPS_H - -/* -* Copyright 1992, Linus Torvalds. -*/ -#ifdef __KERNEL__ - -#include <asm-generic/bitops/sched.h> - -#include <asm-generic/bitops/hweight.h> - -#endif /* __KERNEL__ */ - -#include <asm-generic/bitops/fls64.h> - -#ifdef __KERNEL__ - -#include <asm-generic/bitops/ext2-non-atomic.h> - -#define ext2_set_bit_atomic (lock, nr, addr) \ - test_and_set_bit((nr), (unsigned long *)(addr)) -#define ext2_clear_bit_atomic (lock, nr, addr) \ - test_and_clear_bit((nr), (unsigned long *)(addr)) - -#include <asm-generic/bitops/minix.h> - -#endif /* __KERNEL__ */ - -#endif /* _I386_BITOPS_H */
include/asm-x86/bitops_64.h deleted +0 -42
42 lines not on this page · raw message
PATCH 1/1 Build fix for uml/i386
Build fix for uml/i386, which was broken by:
x86: remove x86-specific implementations of find_first_bit
---
Hi Ingo,
I broke uml again :(
This patch fixes the problem for i386. These changes should have been included in:
x86: generic versions of find_first_(zero_)bit, convert i386
Greetings,
Alexander
arch/um/Kconfig.i386 | 4 ++++ arch/um/sys-i386/Makefile | 2 +- 2 files changed, 5 insertions(+), 1 deletions(-)
arch/um/Kconfig.i386 +4 -0
@@ -43,6 +43,10 @@ config ARCH_REUSE_HOST_VSYSCALL_AREA bool default y +config GENERIC_FIND_FIRST_BIT + bool + default y + config GENERIC_FIND_NEXT_BIT bool default y
arch/um/sys-i386/Makefile +1 -1
@@ -6,7 +6,7 @@ obj-y = bug.o bugs.o checksum.o delay.o fault.o ksyms.o ldt.o ptrace.o \ ptrace_user.o setjmp.o signal.o stub.o stub_segv.o syscalls.o sysrq.o \ sys_call_table.o tls.o -subarch-obj-y = lib/bitops_32.o lib/semaphore_32.o lib/string_32.o +subarch-obj-y = lib/semaphore_32.o lib/string_32.o subarch-obj-$(CONFIG_HIGHMEM) += mm/highmem_32.o subarch-obj-$(CONFIG_MODULES) += kernel/module_32.o
PATCH 1/1 Build fix for uml/x86_64
In reply to Alexander van HeukelumBuild fix for uml/x86_64, which was broken by:
x86: remove x86-specific implementations of find_first_bit
---
Hi Ingo,
I broke uml again :(
This patch fixes the problem for x86_64. These changes should have been included in:
x86: switch x86_64 to generic find_first_bit
Greetings,
Alexander
arch/um/Kconfig.x86_64 | 4 ++++ arch/um/sys-x86_64/Makefile | 2 +- 2 files changed, 5 insertions(+), 1 deletions(-)
arch/um/Kconfig.x86_64 +4 -0
@@ -31,6 +31,10 @@ config SMP_BROKEN bool default y +config GENERIC_FIND_FIRST_BIT + bool + default y + config GENERIC_FIND_NEXT_BIT bool default y
arch/um/sys-x86_64/Makefile +1 -1
@@ -10,7 +10,7 @@ obj-y = bug.o bugs.o delay.o fault.o ldt.o mem.o ptrace.o ptrace_user.o \ obj-$(CONFIG_MODULES) += um_module.o -subarch-obj-y = lib/bitops_64.o lib/csum-partial_64.o lib/memcpy_64.o lib/thunk_64.o +subarch-obj-y = lib/csum-partial_64.o lib/memcpy_64.o lib/thunk_64.o subarch-obj-$(CONFIG_MODULES) += kernel/module_64.o ldt-y = ../sys-i386/ldt.o
Re: [PATCH] Build fix for uml/x86_64
Quoted 28 lines · Alexander van Heukelum
Build fix for uml/x86_64, which was broken by:
x86: remove x86-specific implementations offind_first_bitSigned-off-by Alexander van Heukelum <[email protected]>---
Hi Ingo,
I broke uml again :(
This patch fixes the problem for
x86_64. These changes should have been included in:x86: switch
x86_64to genericfind_first_bitGreetings,
Alexanderarch/um/Kconfig.x86_64 | 4 ++++ arch/um/sys-x86_64/Makefile | 2 +- 2 files changed, 5 insertions(+), 1 deletions(-)arch/um/Kconfig.x86_64 +0
-0
arch/um/Kconfig.x86_64 config SMP_BROKEN · line 37
Quoted 7 lines
arch/um/Kconfig.x86_64 +4
-0@@ -31,6 +31,10 @@ config SMP_BROKEN bool default y +config GENERIC_FIND_FIRST_BIT + bool + default y +
def_bool y
Cheers,
Harvey
PATCH 1/1 uml: cleanup: use def_bool in Kconfig files
Cleanup: use def_bool in User-mode Linux' Kconfig files.
---
Quoted 5 lines · Harvey Harrison
Review
Quoted 4 lines
(quoted diff) +4
-0+config GENERIC_FIND_FIRST_BIT + bool + default y +
def_booly
Indeed! But it is hardly the only occurence of the long version. Should we add this patch? If so, should it go via the -x86 tree, as this depends on changes I introduced for the bitops unification?
Greetings,
Alexander
arch/um/Kconfig | 50 +++++++++++++++++------------------------------ arch/um/Kconfig.char | 6 +--- arch/um/Kconfig.i386 | 27 ++++++++----------------- arch/um/Kconfig.x86_64 | 33 ++++++++++--------------------- 4 files changed, 40 insertions(+), 76 deletions(-)
arch/um/Kconfig +18 -32
@@ -5,16 +5,13 @@ config DEFCONFIG_LIST # UML uses the generic IRQ subsystem config GENERIC_HARDIRQS - bool - default y + def_bool y config UML - bool - default y + def_bool y config MMU - bool - default y + def_bool y config NO_IOMEM def_bool y
@@ -22,51 +19,43 @@ config NO_IOMEM mainmenu "Linux/Usermode Kernel Configuration" config ISA - bool + def_bool n config SBUS - bool + def_bool n config PCI - bool + def_bool n config PCMCIA - bool + def_bool n # Yet to do! config TRACE_IRQFLAGS_SUPPORT - bool - default n + def_bool n config LOCKDEP_SUPPORT - bool - default y + def_bool y config STACKTRACE_SUPPORT - bool - default n + def_bool n config GENERIC_CALIBRATE_DELAY - bool - default y + def_bool y config GENERIC_BUG - bool - default y + def_bool y depends on BUG config GENERIC_TIME - bool - default y + def_bool y config GENERIC_CLOCKEVENTS - bool - default y + def_bool y # Used in kernel/irq/manage.c and include/linux/irq.h config IRQ_RELEASE_METHOD - bool - default y + def_bool y config HZ int
@@ -90,13 +79,11 @@ source "mm/Kconfig" source "kernel/time/Kconfig" config LD_SCRIPT_STATIC - bool - default y + def_bool y depends on STATIC_LINK config LD_SCRIPT_DYN - bool - default y + def_bool y depends on !LD_SCRIPT_STATIC source "fs/Kconfig.binfmt"
@@ -261,7 +248,6 @@ endif #This is just to shut up some Kconfig warnings, so no prompt. config INPUT - bool - default n + def_bool n source "arch/um/Kconfig.debug"
arch/um/Kconfig.char +2 -4
@@ -8,8 +8,7 @@ config STDERR_CONSOLE console driver which dumps all printk messages to stderr. config STDIO_CONSOLE - bool - default y + def_bool y config SSL bool "Virtual serial line"
@@ -68,8 +67,7 @@ config XTERM_CHAN It is safe to say 'Y' here. config NOCONFIG_CHAN - bool - default !(XTERM_CHAN && TTY_CHAN && PTY_CHAN && PORT_CHAN && NULL_CHAN) + def_bool !(XTERM_CHAN && TTY_CHAN && PTY_CHAN && PORT_CHAN && NULL_CHAN) config CON_ZERO_CHAN string "Default main console channel initialization"
arch/um/Kconfig.i386 +9 -18
@@ -5,23 +5,19 @@ source "arch/x86/Kconfig.cpu" endmenu config UML_X86 - bool - default y + def_bool y config X86_32 - bool - default y + def_bool y config RWSEM_XCHGADD_ALGORITHM def_bool y config 64BIT - bool - default n + def_bool n config SEMAPHORE_SLEEPERS - bool - default y + def_bool y config 3_LEVEL_PGTABLES bool "Three-level pagetables (EXPERIMENTAL)"
@@ -36,24 +32,19 @@ config 3_LEVEL_PGTABLES N (on x86-64 it's automatically enabled, instead, as it's safe there). config ARCH_HAS_SC_SIGNALS - bool - default y + def_bool y config ARCH_REUSE_HOST_VSYSCALL_AREA - bool - default y + def_bool y config GENERIC_FIND_FIRST_BIT - bool - default y + def_bool y config GENERIC_FIND_NEXT_BIT - bool - default y + def_bool y config GENERIC_HWEIGHT - bool - default y + def_bool y config ARCH_SUPPORTS_AOUT def_bool y
arch/um/Kconfig.x86_64 +11 -22
@@ -1,47 +1,36 @@ config UML_X86 - bool - default y + def_bool y config 64BIT - bool - default y + def_bool y #XXX: this is so in the underlying arch, but it's wrong!!! config RWSEM_GENERIC_SPINLOCK - bool - default y + def_bool y config SEMAPHORE_SLEEPERS - bool - default y + def_bool y config 3_LEVEL_PGTABLES - bool - default y + def_bool y config ARCH_HAS_SC_SIGNALS - bool - default n + def_bool n config ARCH_REUSE_HOST_VSYSCALL_AREA - bool - default n + def_bool n config SMP_BROKEN - bool - default y + def_bool y config GENERIC_FIND_FIRST_BIT - bool - default y + def_bool y config GENERIC_FIND_NEXT_BIT - bool - default y + def_bool y config GENERIC_HWEIGHT - bool - default y + def_bool y config ARCH_SUPPORTS_AOUT def_bool y
Quoted 3 lines · Alexander van Heukelum
Hi Ingo,
This patch finishes the bitops unification.
thanks Alexander, applied.
Ingo