666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
|
}
return false;
#elif defined(OF_X86_ASM) || defined(OF_AMD64_ASM)
int r;
__asm__ (
"xorl %0, %0\n\t"
"lock\n\t"
"cmpxchg %2, %3\n\t"
"sete %b0\n\t"
"movzbl %b0, %0"
: "=&d"(r) /* use d instead of r due to gcc bug */
: "a"(o), "r"(n), "m"(*p)
: "cc"
|
<
|
666
667
668
669
670
671
672
673
674
675
676
677
678
679
|
}
return false;
#elif defined(OF_X86_ASM) || defined(OF_AMD64_ASM)
int r;
__asm__ (
"lock\n\t"
"cmpxchg %2, %3\n\t"
"sete %b0\n\t"
"movzbl %b0, %0"
: "=&d"(r) /* use d instead of r due to gcc bug */
: "a"(o), "r"(n), "m"(*p)
: "cc"
|
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
|
}
return false;
#elif defined(OF_X86_ASM) || defined(OF_AMD64_ASM)
int r;
__asm__ (
"xorl %0, %0\n\t"
"lock\n\t"
"cmpxchg %2, %3\n\t"
"sete %b0\n\t"
"movzbl %b0, %0"
: "=&d"(r) /* use d instead of r due to gcc bug */
: "a"(o), "r"(n), "m"(*p)
: "cc"
|
<
|
699
700
701
702
703
704
705
706
707
708
709
710
711
712
|
}
return false;
#elif defined(OF_X86_ASM) || defined(OF_AMD64_ASM)
int r;
__asm__ (
"lock\n\t"
"cmpxchg %2, %3\n\t"
"sete %b0\n\t"
"movzbl %b0, %0"
: "=&d"(r) /* use d instead of r due to gcc bug */
: "a"(o), "r"(n), "m"(*p)
: "cc"
|
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
|
}
return false;
#elif defined(OF_X86_ASM) || defined(OF_AMD64_ASM)
int r;
__asm__ (
"xorl %0, %0\n\t"
"lock\n\t"
"cmpxchg %2, %3\n\t"
"sete %b0\n\t"
"movzbl %b0, %0"
: "=&d"(r) /* use d instead of r due to gcc bug */
: "a"(o), "r"(n), "m"(*p)
: "cc"
|
<
|
732
733
734
735
736
737
738
739
740
741
742
743
744
745
|
}
return false;
#elif defined(OF_X86_ASM) || defined(OF_AMD64_ASM)
int r;
__asm__ (
"lock\n\t"
"cmpxchg %2, %3\n\t"
"sete %b0\n\t"
"movzbl %b0, %0"
: "=&d"(r) /* use d instead of r due to gcc bug */
: "a"(o), "r"(n), "m"(*p)
: "cc"
|