summaryrefslogtreecommitdiff
path: root/lib9/lock-Hp-s800.s
blob: 26b6ca47e5c903b43d694a56aac3a85e87ee7598 (plain)
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
28
29
30
31
32
33
34
35
36
37
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