|
@@ -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()
|
|
|
|
|
|
-
|
|
|
|
-static inline 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;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-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;
|
|
|
|
-}
|
|
|
|
|
|
+int __acpi_acquire_global_lock(unsigned int *lock);
|
|
|
|
+int __acpi_release_global_lock(unsigned int *lock);
|
|
|
|
|
|
#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))
|