ACPI: uninline ACPI global locking functions
- Fixes a build problem with CONFIG_M386=y (include file dependencies get messy). - Share the implementation between x86 and x86_64 - These are too big to inline anyway. Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
965a3d4472
commit
d0a9081b1e
@ -1319,3 +1319,25 @@ static int __init setup_acpi_sci(char *s)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
early_param("acpi_sci", setup_acpi_sci);
|
early_param("acpi_sci", setup_acpi_sci);
|
||||||
|
|
||||||
|
int __acpi_acquire_global_lock(unsigned int *lock)
|
||||||
|
{
|
||||||
|
unsigned int old, new, val;
|
||||||
|
do {
|
||||||
|
old = *lock;
|
||||||
|
new = (((old & ~0x3) + 2) + ((old >> 1) & 0x1));
|
||||||
|
val = cmpxchg(lock, old, new);
|
||||||
|
} while (unlikely (val != old));
|
||||||
|
return (new < 3) ? -1 : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int __acpi_release_global_lock(unsigned int *lock)
|
||||||
|
{
|
||||||
|
unsigned int old, new, val;
|
||||||
|
do {
|
||||||
|
old = *lock;
|
||||||
|
new = old & ~0x3;
|
||||||
|
val = cmpxchg(lock, old, new);
|
||||||
|
} while (unlikely (val != old));
|
||||||
|
return old & 0x1;
|
||||||
|
}
|
||||||
|
@ -56,30 +56,8 @@
|
|||||||
#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()
|
||||||
|
|
||||||
|
int __acpi_acquire_global_lock(unsigned int *lock);
|
||||||
static inline int
|
int __acpi_release_global_lock(unsigned int *lock);
|
||||||
__acpi_acquire_global_lock (unsigned int *lock)
|
|
||||||
{
|
|
||||||
unsigned int old, new, val;
|
|
||||||
do {
|
|
||||||
old = *lock;
|
|
||||||
new = (((old & ~0x3) + 2) + ((old >> 1) & 0x1));
|
|
||||||
val = cmpxchg(lock, old, new);
|
|
||||||
} while (unlikely (val != old));
|
|
||||||
return (new < 3) ? -1 : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int
|
|
||||||
__acpi_release_global_lock (unsigned int *lock)
|
|
||||||
{
|
|
||||||
unsigned int old, new, val;
|
|
||||||
do {
|
|
||||||
old = *lock;
|
|
||||||
new = old & ~0x3;
|
|
||||||
val = cmpxchg(lock, old, new);
|
|
||||||
} while (unlikely (val != old));
|
|
||||||
return old & 0x1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \
|
#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \
|
||||||
((Acq) = __acpi_acquire_global_lock((unsigned int *) GLptr))
|
((Acq) = __acpi_acquire_global_lock((unsigned int *) GLptr))
|
||||||
|
@ -54,30 +54,8 @@
|
|||||||
#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()
|
||||||
|
|
||||||
|
int __acpi_acquire_global_lock(unsigned int *lock);
|
||||||
static inline int
|
int __acpi_release_global_lock(unsigned int *lock);
|
||||||
__acpi_acquire_global_lock (unsigned int *lock)
|
|
||||||
{
|
|
||||||
unsigned int old, new, val;
|
|
||||||
do {
|
|
||||||
old = *lock;
|
|
||||||
new = (((old & ~0x3) + 2) + ((old >> 1) & 0x1));
|
|
||||||
val = cmpxchg(lock, old, new);
|
|
||||||
} while (unlikely (val != old));
|
|
||||||
return (new < 3) ? -1 : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int
|
|
||||||
__acpi_release_global_lock (unsigned int *lock)
|
|
||||||
{
|
|
||||||
unsigned int old, new, val;
|
|
||||||
do {
|
|
||||||
old = *lock;
|
|
||||||
new = old & ~0x3;
|
|
||||||
val = cmpxchg(lock, old, new);
|
|
||||||
} while (unlikely (val != old));
|
|
||||||
return old & 0x1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \
|
#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \
|
||||||
((Acq) = __acpi_acquire_global_lock((unsigned int *) GLptr))
|
((Acq) = __acpi_acquire_global_lock((unsigned int *) GLptr))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user