--- src/include/storage/s_lock.h +++ src/include/storage/s_lock.h @@ -159,19 +159,17 @@ static __inline__ int tas(volatile slock_t *lock) { - int _res; + int _res, _dummy; __asm__ __volatile__( - " la 1,1 \n" - " l 2,%2 \n" - " slr 0,0 \n" - " cs 0,1,0(2) \n" - " lr %1,0 \n" -: "=m"(lock), "=d"(_res) -: "m"(lock) -: "0", "1", "2"); + " lhi %1,1 \n" + " l %0,0(%3) \n" + "0: cs %0,%1,0(%3) \n" + " jl 0b" +: "=&d" (_res), "=&d" (_dummy), "+m" (*lock) +: "a" (lock) : "cc"); - return (_res); + return _res; } #endif /* __s390__ */ --- src/makefiles/Makefile.linux +++ src/makefiles/Makefile.linux @@ -4,7 +4,7 @@ shlib_symbolic = -Wl,-Bsymbolic allow_nonpic_in_shlib = yes DLSUFFIX = .so -CFLAGS_SL = -fpic +CFLAGS_SL = -fPIC %.so: %.o $(CC) -shared -o $@ $<