Messages in this thread | | | Subject | RE: [ACPI] ACPI global lock macros | Date | Thu, 11 Dec 2003 15:27:09 +0800 | From | "Yu, Luming" <> |
| |
I have filed a tracker http://bugme.osdl.org/show_bug.cgi?id=1669 , And a proposal patch based on Paul's proposal filed there. --Luming
-----Original Message----- From: acpi-devel-admin@lists.sourceforge.net [mailto:acpi-devel-admin@lists.sourceforge.net]On Behalf Of Yu, Luming Sent: 2003?12?11? 15:06 To: Paul Menage; agrover@groveronline.com Cc: linux-kernel@vger.kernel.org; acpi-devel@lists.sourceforge.net Subject: RE: [ACPI] ACPI global lock macros
>>#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \ >> do { \ >> asm volatile("1:movl (%1),%%eax;" \ >> "movl %%eax,%%edx;" \ >> "andl %2,%%edx;" \ >> "btsl $0x1,%%edx;" \ >> "adcl $0x0,%%edx;" \ >> "lock; cmpxchgl %%edx,(%1);" \ >> "jnz 1b;" \ >> "cmpb $0x3,%%dl;" \ >> "sbbl %0,%0" \ >> :"=r"(Acq):"r"(GLptr),"i"(~1L):"dx", "ax"); \ >> } while(0)
Above code have a bug! Considering below code:
u8 acquired = FALSE;
ACPI_ACQUIRE_GLOBAL_LOC(acpi_gbl_common_fACS.global_lock, acquired); if(acquired) { .... }
Gcc will complain " ERROR: '%cl' not allowed with sbbl ". And I think any other compiler will complain that too !
How about below changes to your proposal code.
< "sbbl %0,%0" \ < :"=r"(Acq):"r"(GLptr),"i"(~1L):"dx","ax"); \ --- > "sbbl %%eax,%%eax" \ > :"=a"(Acq):"r"(GLptr),"i"(~1L):"dx"); \
PS. I'm very curious about how could you find this bug.
Thanks Luming
------------------------------------------------------- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ _______________________________________________ Acpi-devel mailing list Acpi-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/acpi-devel - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |