Update.
[glibc.git] / db2 / mutex / alpha.dec
blob83ed3711361387ba683491ddfc50faf4cd8dfc68
1 /*
2  * @(#)alpha.dec        8.3 (Sleepycat Software) 1/18/97
3  *
4  * The DEC C asm acts as a pseudo-call.  The first argument is the assembly
5  * code, and the remaining arguments are assigned as in a procedure call, to
6  * r16, r17, etc. (represented in asm as %a0, %a1, and so forth).
7  *
8  * From: Dave Butenhof.
9  */
11 #include <c_asm.h>
13 #define TSL_SET(tsl)    (asm ("mb;                                      \
14     10: ldl_l   %v0,(%a0) ;                                             \
15         bne     %v0,30f ;                                               \
16         or      %v0,1,%r1 ;                                             \
17         stl_c   %r1,(%a0) ;                                             \
18         beq     %r1,20f ;                                               \
19         mb      ;                                                       \
20         br      %r31,30f ;                                              \
21     20: br      %r31,10b ;                                              \
22     30: ", (tsl)))
24 THIS WAS NOT CONVERTED TO TAKE A POINTER AS AN ARGUMENT...
25 #define TSL_UNSET(tsl)  (asm ("mb"), *(tsl) = 0)