Subversion Repositories HelenOS-historic

Rev

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

Rev 664 Rev 666
Line 35... Line 35...
35
 * from the trap_table_save.
35
 * from the trap_table_save.
36
 *
36
 *
37
 * This arrangement is beneficial because kernel handlers stay on their
37
 * This arrangement is beneficial because kernel handlers stay on their
38
 * link-time addresses which is good for debugging.
38
 * link-time addresses which is good for debugging.
39
 */
39
 */
40
 
40
 
-
 
41
.register %g2, #scratch
-
 
42
.register %g3, #scratch
-
 
43
.register %g6, #scratch
-
 
44
.register %g7, #scratch 
-
 
45
 
41
.text
46
.text
42
 
47
 
43
#include <arch/trap/trap_table.h>
48
#include <arch/trap/trap_table.h>
44
#include <arch/trap/regwin.h>
49
#include <arch/trap/regwin.h>
45
#include <arch/trap/interrupt.h>
50
#include <arch/trap/interrupt.h>
Line 200... Line 205...
200
 */
205
 */
201
.align TABLE_SIZE
206
.align TABLE_SIZE
202
.global trap_table_save
207
.global trap_table_save
203
trap_table_save:
208
trap_table_save:
204
	.space TABLE_SIZE, 0
209
	.space TABLE_SIZE, 0
-
 
210
 
-
 
211
 
-
 
212
/* Trap handler that explicitly saves global registers.
-
 
213
 *
-
 
214
 * Input registers:
-
 
215
 * 	%l0	 	Address of function to call.
-
 
216
 * Output registers:
-
 
217
 *	 %l1 - %l7 	Copy of %g1 - %g7
-
 
218
 */
-
 
219
.global saving_handler
-
 
220
saving_handler:
-
 
221
	SAVE_GLOBALS
-
 
222
	call %l0
-
 
223
	nop
-
 
224
	RESTORE_GLOBALS
-
 
225
	restore		/* matches the save instruction from the top-level handler */
-
 
226
	retry