diff options
author | obrien <obrien@FreeBSD.org> | 2000-05-10 01:15:55 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 2000-05-10 01:15:55 +0000 |
commit | 5cfeff679bd56ec01a2f0925fbc080aea7bef8a8 (patch) | |
tree | 2dbd8b81ad82b139d4252937f0ed6b86c738307a /sys/amd64/include/atomic.h | |
parent | 3ebd8383b54c2ecb61b9e91d31282d8abb6173a3 (diff) | |
download | FreeBSD-src-5cfeff679bd56ec01a2f0925fbc080aea7bef8a8.zip FreeBSD-src-5cfeff679bd56ec01a2f0925fbc080aea7bef8a8.tar.gz |
When using _asm{} in GCC, one must specify the operand's size if one
specifies the instruction's operation size. GCC will default to 32-bit
operands reguardless of the prototype (ie, formal parameters' type)
of an inline function.
Diffstat (limited to 'sys/amd64/include/atomic.h')
-rw-r--r-- | sys/amd64/include/atomic.h | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/sys/amd64/include/atomic.h b/sys/amd64/include/atomic.h index 05167aa..e6af303 100644 --- a/sys/amd64/include/atomic.h +++ b/sys/amd64/include/atomic.h @@ -103,15 +103,15 @@ atomic_##NAME##_##TYPE(volatile u_##TYPE *p, u_##TYPE v)\ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 9) /* egcs 1.1.2+ version */ -ATOMIC_ASM(set, char, "orb %2,%0", v) -ATOMIC_ASM(clear, char, "andb %2,%0", ~v) -ATOMIC_ASM(add, char, "addb %2,%0", v) -ATOMIC_ASM(subtract, char, "subb %2,%0", v) - -ATOMIC_ASM(set, short, "orw %2,%0", v) -ATOMIC_ASM(clear, short, "andw %2,%0", ~v) -ATOMIC_ASM(add, short, "addw %2,%0", v) -ATOMIC_ASM(subtract, short, "subw %2,%0", v) +ATOMIC_ASM(set, char, "orb %b2,%0", v) +ATOMIC_ASM(clear, char, "andb %b2,%0", ~v) +ATOMIC_ASM(add, char, "addb %b2,%0", v) +ATOMIC_ASM(subtract, char, "subb %b2,%0", v) + +ATOMIC_ASM(set, short, "orw %w2,%0", v) +ATOMIC_ASM(clear, short, "andw %w2,%0", ~v) +ATOMIC_ASM(add, short, "addw %w2,%0", v) +ATOMIC_ASM(subtract, short, "subw %w2,%0", v) ATOMIC_ASM(set, int, "orl %2,%0", v) ATOMIC_ASM(clear, int, "andl %2,%0", ~v) |