Subversion Repositories HelenOS-historic

Rev

Rev 55 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 55 Rev 59
Line 30... Line 30...
30
 
30
 
31
.global context_save
31
.global context_save
32
.global context_restore
32
.global context_restore
33
 
33
 
34
context_save:
34
context_save:
-
 
35
	alloc loc0 = ar.pfs, 1, 2, 0, 0
-
 
36
	
-
 
37
	/*
-
 
38
	 * TODO: save the rest of the context registers.
-
 
39
	 */
-
 
40
 
-
 
41
	st8 [in0] = r1, 8	;;
-
 
42
	st8 [in0] = r2, 8	;;
-
 
43
	st8 [in0] = r3, 8	;;
-
 
44
	st8 [in0] = r4, 8	;;
-
 
45
	st8 [in0] = r5, 8	;;
-
 
46
	st8 [in0] = r6, 8	;;
-
 
47
	st8 [in0] = r7, 8	;;
-
 
48
	st8 [in0] = r8, 8	;;
-
 
49
	st8 [in0] = r9, 8	;;
-
 
50
	st8 [in0] = r10, 8	;;
-
 
51
	st8 [in0] = r11, 8	;;
-
 
52
	st8 [in0] = r12, 8	;;	/* save sp */
-
 
53
	st8 [in0] = r13, 8	;;
-
 
54
	st8 [in0] = r14, 8	;;
-
 
55
	st8 [in0] = r15, 8	;;
-
 
56
	st8 [in0] = r16, 8	;;
-
 
57
	st8 [in0] = r17, 8	;;
-
 
58
	st8 [in0] = r18, 8	;;
-
 
59
	st8 [in0] = r19, 8	;;
-
 
60
	st8 [in0] = r20, 8	;;
-
 
61
	st8 [in0] = r21, 8	;;
-
 
62
	st8 [in0] = r22, 8	;;
-
 
63
	st8 [in0] = r23, 8	;;
-
 
64
	st8 [in0] = r24, 8	;;
-
 
65
	st8 [in0] = r25, 8	;;
-
 
66
	st8 [in0] = r26, 8	;;
-
 
67
	st8 [in0] = r27, 8	;;
-
 
68
	st8 [in0] = r28, 8	;;
-
 
69
	st8 [in0] = r29, 8	;;
-
 
70
	st8 [in0] = r30, 8	;;
-
 
71
	st8 [in0] = r31, 8	;;
-
 
72
 
-
 
73
	/* save pc */
-
 
74
	mov loc1 = b0		;;
-
 
75
	st8 [in0] = loc1, 8
-
 
76
	
-
 
77
	mov ar.pfs = loc0
-
 
78
	
-
 
79
	add r8 = r0, r0, 1 		/* context_save returns 1 */
35
	br.ret.sptk.many rp
80
	br.ret.sptk.many rp
36
 
81
 
37
context_restore:
82
context_restore:
38
	br.ret.sptk.many rp
-
 
39
 
83
	alloc loc0 = ar.pfs, 1, 2, 0, 0
-
 
84
 
-
 
85
	/*
-
 
86
	 * TODO: restore the rest of the context registers.
-
 
87
	 */
-
 
88
	
-
 
89
	ld8 r1 = [in0], 8	;;
-
 
90
	ld8 r2 = [in0], 8	;;
-
 
91
	ld8 r3 = [in0], 8	;;
-
 
92
	ld8 r4 = [in0], 8	;;
-
 
93
	ld8 r5 = [in0], 8	;;
-
 
94
	ld8 r6 = [in0], 8	;;
-
 
95
	ld8 r7 = [in0], 8	;;
-
 
96
	ld8 r8 = [in0], 8	;;
-
 
97
	ld8 r9 = [in0], 8	;;
-
 
98
	ld8 r10 = [in0], 8	;;
-
 
99
	ld8 r11 = [in0], 8	;;
-
 
100
	ld8 r12 = [in0], 8	;;	/* restore sp */
-
 
101
	ld8 r13 = [in0], 8	;;
-
 
102
	ld8 r14 = [in0], 8	;;
-
 
103
	ld8 r15 = [in0], 8	;;
-
 
104
	ld8 r16 = [in0], 8	;;
-
 
105
	ld8 r17 = [in0], 8	;;
-
 
106
	ld8 r18 = [in0], 8	;;
-
 
107
	ld8 r19 = [in0], 8	;;
-
 
108
	ld8 r20 = [in0], 8	;;
-
 
109
	ld8 r21 = [in0], 8	;;
-
 
110
	ld8 r22 = [in0], 8	;;
-
 
111
	ld8 r23 = [in0], 8	;;
-
 
112
	ld8 r24 = [in0], 8	;;
-
 
113
	ld8 r25 = [in0], 8	;;
-
 
114
	ld8 r26 = [in0], 8	;;
-
 
115
	ld8 r27 = [in0], 8	;;
-
 
116
	ld8 r28 = [in0], 8	;;
-
 
117
	ld8 r29 = [in0], 8	;;
-
 
118
	ld8 r30 = [in0], 8	;;
-
 
119
	ld8 r31 = [in0], 8	;;
-
 
120
 
-
 
121
	/* restore pc */
-
 
122
	ld8 loc1 = [in0], 8	;;
-
 
123
	mov b0 = loc1
-
 
124
	
-
 
125
	mov ar.pfs = loc0
-
 
126
	
-
 
127
	mov r8 = r0			/* context_restore returns 0 */
-
 
128
	br.ret.sptk.many rp
-
 
129