Commit bac99bab authored by Len Brown's avatar Len Brown Committed by Len Brown

[ACPI] allow building ACPI w/ CMPXCHG when CONFIG_M386=y

http://bugzilla.kernel.org/show_bug.cgi?id=2391
parent faea09e7
...@@ -67,6 +67,10 @@ int acpi_sci_override_gsi __initdata; ...@@ -67,6 +67,10 @@ int acpi_sci_override_gsi __initdata;
static u64 acpi_lapic_addr __initdata = APIC_DEFAULT_PHYS_BASE; static u64 acpi_lapic_addr __initdata = APIC_DEFAULT_PHYS_BASE;
#endif #endif
#ifndef __HAVE_ARCH_CMPXCHG
#warning ACPI uses CMPXCHG, i486 and later hardware
#endif
/* -------------------------------------------------------------------------- /* --------------------------------------------------------------------------
Boot-time Configuration Boot-time Configuration
-------------------------------------------------------------------------- */ -------------------------------------------------------------------------- */
......
...@@ -54,15 +54,6 @@ ...@@ -54,15 +54,6 @@
#define ACPI_ENABLE_IRQS() local_irq_enable() #define ACPI_ENABLE_IRQS() local_irq_enable()
#define ACPI_FLUSH_CPU_CACHE() wbinvd() #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 static inline int
__acpi_acquire_global_lock (unsigned int *lock) __acpi_acquire_global_lock (unsigned int *lock)
......
...@@ -241,6 +241,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz ...@@ -241,6 +241,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz
#ifdef CONFIG_X86_CMPXCHG #ifdef CONFIG_X86_CMPXCHG
#define __HAVE_ARCH_CMPXCHG 1 #define __HAVE_ARCH_CMPXCHG 1
#endif
static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
unsigned long new, int size) unsigned long new, int size)
...@@ -273,10 +274,6 @@ static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, ...@@ -273,10 +274,6 @@ static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
((__typeof__(*(ptr)))__cmpxchg((ptr),(unsigned long)(o),\ ((__typeof__(*(ptr)))__cmpxchg((ptr),(unsigned long)(o),\
(unsigned long)(n),sizeof(*(ptr)))) (unsigned long)(n),sizeof(*(ptr))))
#else
/* Compiling for a 386 proper. Is it worth implementing via cli/sti? */
#endif
#ifdef __KERNEL__ #ifdef __KERNEL__
struct alt_instr { struct alt_instr {
__u8 *instr; /* original instruction */ __u8 *instr; /* original instruction */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment