Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
TEXT	_xinc(SB),$0	/* void _xinc(long *); */
2
TEXT	ainc(SB),$0	/* long ainc(long *); */
3
	MOVW	R3, R4
4
xincloop:
5
	LWAR	(R4), R3
6
	ADD	$1, R3
7
	DCBT	(R4)				/* fix 405 errata cpu_210 */
8
	STWCCC	R3, (R4)
9
	BNE	xincloop
10
	RETURN
11
 
12
TEXT	_xdec(SB),$0	/* long _xdec(long *); */
13
TEXT	adec(SB),$0	/* long adec(long *); */
14
	MOVW	R3, R4
15
xdecloop:
16
	LWAR	(R4), R3
17
	ADD	$-1, R3
18
	DCBT	(R4)				/* fix 405 errata cpu_210 */
19
	STWCCC	R3, (R4)
20
	BNE	xdecloop
21
	RETURN
22
 
23
TEXT	loadlink(SB), $0
24
 
25
	LWAR	(R3), R3
26
	RETURN
27
 
28
TEXT	storecond(SB), $0
29
 
30
	MOVW	val+4(FP), R4
31
	DCBT	(R3)				/* fix 405 errata cpu_210 */
32
	STWCCC	R4, (R3)
33
	BNE	storecondfail
34
	MOVW	$1, R3
35
	RETURN
36
storecondfail:
37
	MOVW	$0, R3
38
	RETURN
39
 
40
/*
41
 * int cas(uint *p, int ov, int nv);
42
 * int casp(void **p, void *ov, void *nv);
43
 */
44
 
45
TEXT	cas+0(SB),0,$0
46
TEXT	casp+0(SB),0,$0
47
	MOVW	ov+4(FP),R4
48
	MOVW	nv+8(FP),R8
49
	LWAR	(R3),R5
50
	CMP	R5,R4
51
	BNE	fail
52
	DCBT	(R3)				/* fix 405 errata cpu_210 */
53
	STWCCC	R8,(R3)
54
	BNE	fail1
55
	MOVW	$1,R3
56
	RETURN
57
fail:
58
	DCBT	(R3)				/* fix 405 errata cpu_210 */
59
	STWCCC	R5,(R3)	/* give up exclusive access */
60
fail1:
61
	MOVW	R0,R3
62
	RETURN
63
	END