summaryrefslogtreecommitdiff
path: root/i386
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2023-10-28 13:01:17 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2023-10-28 13:04:43 +0200
commitfc47cd4ec8314c3df45a6cedc2d633bd52bca01e (patch)
tree7e6db17e857aeb3002bf1f72c5138f58783c6eb8 /i386
parent11f470d2203e2bd0362657e46f8b5c78d1ec9e55 (diff)
64bit: Fix types in lock.h
simple locks use natural_t, and indexes for bt/bts/btr have to be 32bit.
Diffstat (limited to 'i386')
-rw-r--r--i386/i386/lock.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/i386/i386/lock.h b/i386/i386/lock.h
index 56370440..b325ae0d 100644
--- a/i386/i386/lock.h
+++ b/i386/i386/lock.h
@@ -45,10 +45,10 @@
*/
#define _simple_lock_xchg_(lock, new_val) \
- ({ int _old_val_; \
- asm volatile("xchgl %0, %2" \
+({ natural_t _old_val_; \
+ asm volatile("xchg %0, %2" \
: "=r" (_old_val_) \
- : "0" (new_val), "m" (*(lock)) : "memory" \
+ : "0" ((natural_t)(new_val)), "m" (*(lock)) : "memory" \
); \
_old_val_; \
})
@@ -62,7 +62,7 @@
#define _simple_lock(l) \
({ \
while(_simple_lock_xchg_(l, 1)) \
- while (*(volatile int *)&(l)->lock_data) \
+ while (*(volatile natural_t *)&(l)->lock_data) \
cpu_pause(); \
0; \
})
@@ -85,7 +85,7 @@
btsl %0, %1 \n\
jb 0b" \
: \
- : "r" (bit), "m" (*(volatile int *)(l)) : "memory"); \
+ : "r" ((int)(bit)), "m" (*(volatile int *)(l)) : "memory"); \
0; \
})
@@ -94,7 +94,7 @@
asm volatile(" lock \n\
btrl %0, %1" \
: \
- : "r" (bit), "m" (*(volatile int *)(l)) : "memory"); \
+ : "r" ((int)(bit)), "m" (*(volatile int *)(l)) : "memory"); \
0; \
})
@@ -108,7 +108,7 @@
asm volatile(" lock \n\
btsl %0, %1" \
: \
- : "r" (bit), "m" (*(l)) ); \
+ : "r" ((int)(bit)), "m" (*(l)) ); \
0; \
})
@@ -117,7 +117,7 @@
asm volatile(" lock \n\
btrl %0, %1" \
: \
- : "r" (bit), "m" (*(l)) ); \
+ : "r" ((int)(bit)), "m" (*(l)) ); \
0; \
})