From fc47cd4ec8314c3df45a6cedc2d633bd52bca01e Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sat, 28 Oct 2023 13:01:17 +0200 Subject: 64bit: Fix types in lock.h simple locks use natural_t, and indexes for bt/bts/btr have to be 32bit. --- i386/i386/lock.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'i386') 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; \ }) -- cgit v1.2.3