From 46b16c85d0ffddbbada4fb846b6abfb0ea5ac0af Mon Sep 17 00:00:00 2001 From: jhb Date: Tue, 3 Jun 2003 14:46:16 +0000 Subject: Fix the asm constraints so that we use the correct constants when acquiring and releasing ACPI global locks instead of (ab)using the pointers to those locks as the constants. Also, rather than require that the address of the lock be stored in a register, use a memory constraint allowing the memory address to be used directly. Noticed by: peter --- sys/i386/include/acpica_machdep.h | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'sys') diff --git a/sys/i386/include/acpica_machdep.h b/sys/i386/include/acpica_machdep.h index 2624e63..a59cfe1 100644 --- a/sys/i386/include/acpica_machdep.h +++ b/sys/i386/include/acpica_machdep.h @@ -72,29 +72,27 @@ */ #define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \ do { \ - int dummy; \ - asm("1: movl (%1),%%eax;" \ + asm("1: movl %1,%%eax;" \ "movl %%eax,%%edx;" \ "andl %2,%%edx;" \ "btsl $0x1,%%edx;" \ "adcl $0x0,%%edx;" \ - "lock; cmpxchgl %%edx,(%1);" \ + "lock; cmpxchgl %%edx,%1;" \ "jnz 1b;" \ "cmpb $0x3,%%dl;" \ "sbbl %%eax,%%eax" \ - :"=a"(Acq),"=c"(dummy):"c"(GLptr),"i"(~1L):"dx"); \ + : "=a" (Acq), "+m" (GLptr) : "i" (~1L) : "edx"); \ } while(0) #define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) \ do { \ - int dummy; \ - asm("1: movl (%1),%%eax;" \ + asm("1: movl %1,%%eax;" \ "movl %%eax,%%edx;" \ "andl %2,%%edx;" \ - "lock; cmpxchgl %%edx,(%1);" \ + "lock; cmpxchgl %%edx,%1;" \ "jnz 1b;" \ "andl $0x1,%%eax" \ - :"=a"(Acq),"=c"(dummy):"c"(GLptr),"i"(~3L):"dx"); \ + : "=a" (Acq), "+m" (GLptr) : "i" (~3L) : "edx"); \ } while(0) -- cgit v1.1