Subversion Repositories HelenOS-historic

Rev

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

Rev 916 Rev 919
Line 134... Line 134...
134
	
134
	
135
	st8 [r31] = r24, -8 ;;		/* save ar.rsc */
135
	st8 [r31] = r24, -8 ;;		/* save ar.rsc */
136
	st8 [r31] = r25, -8 ;;		/* save ar.pfs */
136
	st8 [r31] = r25, -8 ;;		/* save ar.pfs */
137
	st8 [r31] = r26, -8		/* save ar.ifs */
137
	st8 [r31] = r26, -8		/* save ar.ifs */
138
	
138
	
-
 
139
	and r24 = ~(RSC_PL_MASK), r24 ;;
139
	and r30 = ~3, r24 ;;
140
	and r30 = ~(RSC_MODE_MASK), r24 ;;
140
	mov ar.rsc = r30 ;;		/* place RSE in enforced lazy mode */
141
	mov ar.rsc = r30 ;;		/* update RSE state */
141
	
142
	
142
	mov r27 = ar.rnat
143
	mov r27 = ar.rnat
143
	mov r28 = ar.bspstore ;;
144
	mov r28 = ar.bspstore ;;
144
	
145
	
145
	/*
146
	/*
Line 160... Line 161...
160
	st8 [r31] = r27, -8 ;;		/* save ar.rnat */
161
	st8 [r31] = r27, -8 ;;		/* save ar.rnat */
161
	st8 [r31] = r30, -8 ;;		/* save new value written to ar.bspstore */
162
	st8 [r31] = r30, -8 ;;		/* save new value written to ar.bspstore */
162
	st8 [r31] = r28, -8 ;;		/* save ar.bspstore */
163
	st8 [r31] = r28, -8 ;;		/* save ar.bspstore */
163
	st8 [r31] = r29, -8 		/* save ar.bsp */
164
	st8 [r31] = r29, -8 		/* save ar.bsp */
164
	
165
	
165
	mov ar.rsc = r24		/* restore RSE's setting */
166
	mov ar.rsc = r24		/* restore RSE's setting + kernel privileges */
166
	
167
	
167
    /* steps 6 - 15 are done by heavyweight_handler_inner() */
168
    /* steps 6 - 15 are done by heavyweight_handler_inner() */
168
	mov R_RET = b0 			/* save b0 belonging to interrupted context */
169
	mov R_RET = b0 			/* save b0 belonging to interrupted context */
169
	br.call.sptk.many b0 = heavyweight_handler_inner
170
	br.call.sptk.many b0 = heavyweight_handler_inner
170
0:	mov b0 = R_RET			/* restore b0 belonging to the interrupted context */
171
0:	mov b0 = R_RET			/* restore b0 belonging to the interrupted context */
Line 298... Line 299...
298
	 * ;;
299
	 * ;;
299
	 * srlz.d
300
	 * srlz.d
300
	 */
301
	 */
301
 
302
 
302
    /* 10. call handler */
303
    /* 10. call handler */
-
 
304
    	movl r1 = _hardcoded_load_address
-
 
305
    
303
    	mov b1 = loc2
306
    	mov b1 = loc2
304
	br.call.sptk.many b0 = b1
307
	br.call.sptk.many b0 = b1
305
 
308
 
306
    /* 11. return from handler */
309
    /* 11. return from handler */
307
0:
310
0: