Subversion Repositories HelenOS

Rev

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

Rev 94 Rev 100
Line 34... Line 34...
34
context_save:
34
context_save:
35
	alloc loc0 = ar.pfs, 1, 11, 0, 0
35
	alloc loc0 = ar.pfs, 1, 11, 0, 0
36
	mov loc1 = ar.unat	;;
36
	mov loc1 = ar.unat	;;
37
	/* loc2 */
37
	/* loc2 */
38
	mov loc3 = ar.rsc
38
	mov loc3 = ar.rsc
-
 
39
 
-
 
40
	.auto
-
 
41
 
-
 
42
	/*
-
 
43
	 * Flush dirty registers to backing store.
-
 
44
	 * After this ar.bsp and ar.bspstore are equal.
-
 
45
	 */
-
 
46
	flushrs
39
	mov loc4 = ar.bsp
47
	mov loc4 = ar.bsp	
-
 
48
	
-
 
49
	/*
-
 
50
	 * Put RSE to enforced lazy mode.
-
 
51
	 * So that ar.rnat can be read.
-
 
52
	 */
-
 
53
	movl loc5 = ~3
-
 
54
	and loc5 = loc3, loc5
-
 
55
	mov ar.rsc = loc5
40
	mov loc5 = ar.rnat
56
	mov loc5 = ar.rnat
-
 
57
 
-
 
58
	.explicit
-
 
59
 
41
	mov loc6 = ar.lc
60
	mov loc6 = ar.lc
42
	mov loc7 = ar.ec
61
	mov loc7 = ar.ec
43
	mov loc8 = ar.ccv
62
	mov loc8 = ar.ccv
44
	mov loc9 = ar.csd
63
	mov loc9 = ar.csd
45
	mov loc10 = ar.ssd
64
	mov loc10 = ar.ssd
Line 143... Line 162...
143
	ld8 loc7 = [in0], 8	;;	/* load ar.ec */
162
	ld8 loc7 = [in0], 8	;;	/* load ar.ec */
144
	ld8 loc8 = [in0], 8	;;	/* load ar.ccv */
163
	ld8 loc8 = [in0], 8	;;	/* load ar.ccv */
145
	ld8 loc9 = [in0], 8	;;	/* load ar.csd */
164
	ld8 loc9 = [in0], 8	;;	/* load ar.csd */
146
	ld8 loc10 = [in0], 8	;;	/* load ar.ssd */
165
	ld8 loc10 = [in0], 8	;;	/* load ar.ssd */
147
	
166
	
-
 
167
	.auto	
-
 
168
 
-
 
169
	/*
-
 
170
	 * Invalidate the ALAT
-
 
171
	 */
-
 
172
	invala
-
 
173
 
148
	/*
174
	/*
149
	 * Restore application registers
175
	 * Restore application registers
150
	 */
176
	 */
-
 
177
 
-
 
178
	mov ar.bspstore = loc4
-
 
179
	mov ar.rnat = loc5
-
 
180
	mov ar.pfs = loc0
-
 
181
	mov ar.rsc = loc3
-
 
182
 
-
 
183
	.explicit
-
 
184
 
151
	mov ar.unat = loc2	;;
185
	mov ar.unat = loc2	;;
152
	/* TODO: restore ar.rsc, ar.rnat, ar.bspstore */	
-
 
153
	mov ar.lc = loc6
186
	mov ar.lc = loc6
154
	mov ar.ec = loc7
187
	mov ar.ec = loc7
155
	mov ar.ccv = loc8
188
	mov ar.ccv = loc8
156
	mov ar.csd = loc9
189
	mov ar.csd = loc9
157
	mov ar.ssd = loc10
190
	mov ar.ssd = loc10
Line 215... Line 248...
215
	 * Restore predicate registers
248
	 * Restore predicate registers
216
	 */
249
	 */
217
	ld8 loc2 = [in0], 8	;;
250
	ld8 loc2 = [in0], 8	;;
218
	mov pr = loc2, ~0
251
	mov pr = loc2, ~0
219
	
252
	
220
	mov ar.pfs = loc0
-
 
221
	mov ar.unat = loc1
253
	mov ar.unat = loc1
222
	
254
	
223
	mov r8 = r0			/* context_restore returns 0 */
255
	mov r8 = r0			/* context_restore returns 0 */
224
	br.ret.sptk.many b0
256
	br.ret.sptk.many b0