|
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 */ |
|