From bac99bab420c2aedd48896d0bd0ae0b4ff6c5c96 Mon Sep 17 00:00:00 2001 From: Len Brown Date: Tue, 30 Mar 2004 07:06:05 -0500 Subject: [PATCH] [ACPI] allow building ACPI w/ CMPXCHG when CONFIG_M386=y http://bugzilla.kernel.org/show_bug.cgi?id=2391 --- arch/i386/kernel/acpi/boot.c | 4 ++++ include/asm-i386/acpi.h | 9 --------- include/asm-i386/system.h | 5 +---- 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/arch/i386/kernel/acpi/boot.c b/arch/i386/kernel/acpi/boot.c index c4e2c06f10f20..f46ad9ac5aa7c 100644 --- a/arch/i386/kernel/acpi/boot.c +++ b/arch/i386/kernel/acpi/boot.c @@ -67,6 +67,10 @@ int acpi_sci_override_gsi __initdata; static u64 acpi_lapic_addr __initdata = APIC_DEFAULT_PHYS_BASE; #endif +#ifndef __HAVE_ARCH_CMPXCHG +#warning ACPI uses CMPXCHG, i486 and later hardware +#endif + /* -------------------------------------------------------------------------- Boot-time Configuration -------------------------------------------------------------------------- */ diff --git a/include/asm-i386/acpi.h b/include/asm-i386/acpi.h index b303c70f88877..2a4b35f628fd8 100644 --- a/include/asm-i386/acpi.h +++ b/include/asm-i386/acpi.h @@ -54,15 +54,6 @@ #define ACPI_ENABLE_IRQS() local_irq_enable() #define ACPI_FLUSH_CPU_CACHE() wbinvd() -/* - * A brief explanation as GNU inline assembly is a bit hairy - * %0 is the output parameter in EAX ("=a") - * %1 and %2 are the input parameters in ECX ("c") - * and an immediate value ("i") respectively - * All actual register references are preceded with "%%" as in "%%edx" - * Immediate values in the assembly are preceded by "$" as in "$0x1" - * The final asm parameter are the operation altered non-output registers. - */ static inline int __acpi_acquire_global_lock (unsigned int *lock) diff --git a/include/asm-i386/system.h b/include/asm-i386/system.h index 909ba6a3a9c8d..6b1d2e84a20d5 100644 --- a/include/asm-i386/system.h +++ b/include/asm-i386/system.h @@ -241,6 +241,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz #ifdef CONFIG_X86_CMPXCHG #define __HAVE_ARCH_CMPXCHG 1 +#endif static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) @@ -273,10 +274,6 @@ static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, ((__typeof__(*(ptr)))__cmpxchg((ptr),(unsigned long)(o),\ (unsigned long)(n),sizeof(*(ptr)))) -#else -/* Compiling for a 386 proper. Is it worth implementing via cli/sti? */ -#endif - #ifdef __KERNEL__ struct alt_instr { __u8 *instr; /* original instruction */ -- 2.53.0