]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
(__pthread_spin_lock): Use a different register in the delayed slot.
authorUlrich Drepper <drepper@redhat.com>
Sun, 3 Feb 2002 02:26:07 +0000 (02:26 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sun, 3 Feb 2002 02:26:07 +0000 (02:26 +0000)
Use branch likely.

linuxthreads/sysdeps/mips/pspinlock.c

index ab73d1dd405f21ded9b948389b7a39c9a96ddbca..00e619096186b9827573bcff123d08d56cff2ae7 100644 (file)
 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");