|
66 | 66 | * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
|
67 | 67 | * Portions Copyright (c) 1994, Regents of the University of California
|
68 | 68 | *
|
69 |
| - * $PostgreSQL: pgsql/src/include/storage/s_lock.h,v 1.136 2005/08/2614:47:35 tgl Exp $ |
| 69 | + * $PostgreSQL: pgsql/src/include/storage/s_lock.h,v 1.137 2005/08/2622:04:42 tgl Exp $ |
70 | 70 | *
|
71 | 71 | *-------------------------------------------------------------------------
|
72 | 72 | */
|
@@ -464,25 +464,25 @@ typedef unsigned int slock_t;
|
464 | 464 | static __inline__int
|
465 | 465 | tas(volatileslock_t*lock)
|
466 | 466 | {
|
467 |
| -registervolatileslock_t*__l=lock; |
468 |
| -registerint__r; |
| 467 | +registervolatileslock_t*_l=lock; |
| 468 | +registerint_res; |
| 469 | +registerint_tmp; |
469 | 470 |
|
470 | 471 | __asm__ __volatile__(
|
471 | 472 | " .set push \n"
|
472 | 473 | " .set mips2 \n"
|
473 | 474 | " .set noreorder \n"
|
474 | 475 | " .set nomacro \n"
|
475 |
| -"1: ll %0, %1 \n" |
476 |
| -" bne %0, $0, 1f \n" |
477 |
| -" xori %0, 1 \n" |
478 |
| -" sc %0, %1 \n" |
479 |
| -" beq %0, $0, 1b \n" |
480 |
| -" sync \n" |
| 476 | +" ll %0, %2 \n" |
| 477 | +" or %1, %0, $1 \n" |
| 478 | +" sc %1, %2 \n" |
| 479 | +" xori %1, $1 \n" |
| 480 | +" or %0, %0, %1 \n" |
481 | 481 | "1: .set pop "
|
482 |
| -:"=&r" (__r),"+R" (*__l) |
| 482 | +:"=&r" (_res),"=&r" (_tmp),"+R" (*_l) |
483 | 483 | :
|
484 |
| -:"memory","cc"); |
485 |
| -return__r; |
| 484 | +:"memory"); |
| 485 | +return_res; |
486 | 486 | }
|
487 | 487 |
|
488 | 488 | #endif/* __mips__ && !__sgi */
|
|