diff options
Diffstat (limited to 'lib9/lock-Hp-s800.s')
| -rw-r--r-- | lib9/lock-Hp-s800.s | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib9/lock-Hp-s800.s b/lib9/lock-Hp-s800.s new file mode 100644 index 00000000..26b6ca47 --- /dev/null +++ b/lib9/lock-Hp-s800.s @@ -0,0 +1,38 @@ +; +; /* +; * To get lock routine, compile this into a .s, then SUBSTITUTE +; * a LOAD AND CLEAR WORD instruction for the load and store of +; * l->key. +; * +; */ +; typedef struct Lock { +; int key; +; } Lock; +; +; int +; mutexlock(Lock *l) +; { +; int key; +; +; key = l->key; +; l->key = 0; +; return key != 0; +; } + + .LEVEL 1.1 + + .SPACE $TEXT$,SORT=8 + .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=0x2c,CODE_ONLY,SORT=24 +mutexlock + .PROC + .CALLINFO FRAME=0,ARGS_SAVED + .ENTRY +; SUBSTITUTED LDW 0(%r26),%r31 +; SUBSTITUTED STWS %r0,0(%r26) + LDCWS 0(%r26),%r31 ; SUBSTITUTED + COMICLR,= 0,%r31,%r28 + LDI 1,%r28 + .EXIT + BV,N %r0(%r2) + .PROCEND + .end |
