From 2bcefeb887381b6c31a0c7fc9778e28b70390d26 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sun, 3 Feb 2002 02:26:07 +0000 Subject: [PATCH] (__pthread_spin_lock): Use a different register in the delayed slot. Use branch likely. --- linuxthreads/sysdeps/mips/pspinlock.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/linuxthreads/sysdeps/mips/pspinlock.c b/linuxthreads/sysdeps/mips/pspinlock.c index ab73d1dd405..00e61909618 100644 --- a/linuxthreads/sysdeps/mips/pspinlock.c +++ b/linuxthreads/sysdeps/mips/pspinlock.c @@ -29,20 +29,21 @@ int __pthread_spin_lock (pthread_spinlock_t *lock) { - unsigned int tmp; + unsigned int tmp1, tmp2; asm volatile ("\t\t\t# spin_lock\n\t" + "ll %1,%3\n" "1:\n\t" - "ll %1,%2\n\t" ".set push\n\t" ".set noreorder\n\t" "bnez %1,1b\n\t" - " li %1,1\n\t" - ".set pop\n\t" - "sc %1,%0\n\t" - "beqz %1,1b" - : "=m" (*lock), "=&r" (tmp) + " li %2,1\n\t" + "sc %2,%0\n\t" + "beqzl %2,1b\n\t" + " ll %1,%3\n\t" + ".set pop" + : "=m" (*lock), "=&r" (tmp1), "=&r" (tmp2) : "m" (*lock) : "memory"); -- 2.47.2