File: uts4_cc.s

package info (click to toggle)
mysql-dfsg-5.0 5.0.51a-24%2Blenny5
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 106,168 kB
  • ctags: 94,516
  • sloc: cpp: 447,179; ansic: 411,410; perl: 38,307; sh: 37,449; tcl: 30,484; pascal: 14,851; yacc: 8,559; makefile: 5,078; java: 4,610; xml: 3,953; sql: 2,920; awk: 1,338; asm: 1,061; sed: 772
file content (27 lines) | stat: -rw-r--r-- 1,045 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 / See the file LICENSE for redistribution information.
 /
 / Copyright (c) 1997-2002
 /	Sleepycat Software.  All rights reserved.
 /
 / $Id: uts4_cc.s,v 11.2 2002/04/25 13:42:14 bostic Exp $
 /
 / int uts_lock ( int *p, int i );
 /             Update the lock word pointed to by p with the
 /             value i, using compare-and-swap.
 /             Returns 0 if update was successful.
 /             Returns 1 if update failed.
 /
         entry   uts_lock
 uts_lock:
         using   .,r15
         st      r2,8(sp)        / Save R2
         l       r2,64+0(sp)     / R2 -> word to update
         slr     r0, r0          / R0 = current lock value must be 0
         l       r1,64+4(sp)     / R1 = new lock value
         cs      r0,r1,0(r2)     / Try the update ...
         be      x               /  ... Success.  Return 0
         la      r0,1            /  ... Failure.  Return 1
 x:                              /
         l       r2,8(sp)        / Restore R2
         b       2(,r14)         / Return to caller
         drop    r15