might_sleep();
__asm__ __volatile__(
"# atomic down operation\n\t"
- LOCK_PREFIX "decl %0\n\t" /* --sem->count */
+ LOCK "decl %0\n\t" /* --sem->count */
"js 2f\n"
"1:\n"
LOCK_SECTION_START("")
"call __down_failed\n\t"
"jmp 1b\n"
LOCK_SECTION_END
- :"+m" (sem->count)
+ :"=m" (sem->count)
:
:"memory","ax");
}
might_sleep();
__asm__ __volatile__(
"# atomic interruptible down operation\n\t"
- LOCK_PREFIX "decl %1\n\t" /* --sem->count */
+ LOCK "decl %1\n\t" /* --sem->count */
"js 2f\n\t"
"xorl %0,%0\n"
"1:\n"
"call __down_failed_interruptible\n\t"
"jmp 1b\n"
LOCK_SECTION_END
- :"=a" (result), "+m" (sem->count)
+ :"=a" (result), "=m" (sem->count)
:
:"memory");
return result;
__asm__ __volatile__(
"# atomic interruptible down operation\n\t"
- LOCK_PREFIX "decl %1\n\t" /* --sem->count */
+ LOCK "decl %1\n\t" /* --sem->count */
"js 2f\n\t"
"xorl %0,%0\n"
"1:\n"
"call __down_failed_trylock\n\t"
"jmp 1b\n"
LOCK_SECTION_END
- :"=a" (result), "+m" (sem->count)
+ :"=a" (result), "=m" (sem->count)
:
:"memory");
return result;
{
__asm__ __volatile__(
"# atomic up operation\n\t"
- LOCK_PREFIX "incl %0\n\t" /* ++sem->count */
+ LOCK "incl %0\n\t" /* ++sem->count */
"jle 2f\n"
"1:\n"
LOCK_SECTION_START("")
"jmp 1b\n"
LOCK_SECTION_END
".subsection 0\n"
- :"+m" (sem->count)
+ :"=m" (sem->count)
:
:"memory","ax");
}