summaryrefslogtreecommitdiffstats
path: root/sys/amd64/include/atomic.h
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2000-05-10 01:15:55 +0000
committerobrien <obrien@FreeBSD.org>2000-05-10 01:15:55 +0000
commit5cfeff679bd56ec01a2f0925fbc080aea7bef8a8 (patch)
tree2dbd8b81ad82b139d4252937f0ed6b86c738307a /sys/amd64/include/atomic.h
parent3ebd8383b54c2ecb61b9e91d31282d8abb6173a3 (diff)
downloadFreeBSD-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.h18
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)
OpenPOWER on IntegriCloud