/kernel/trunk/arch/sparc64/src/trap/trap_table.S |
---|
37,7 → 37,12 |
* This arrangement is beneficial because kernel handlers stay on their |
* link-time addresses which is good for debugging. |
*/ |
.register %g2, #scratch |
.register %g3, #scratch |
.register %g6, #scratch |
.register %g7, #scratch |
.text |
#include <arch/trap/trap_table.h> |
202,3 → 207,20 |
.global trap_table_save |
trap_table_save: |
.space TABLE_SIZE, 0 |
/* Trap handler that explicitly saves global registers. |
* |
* Input registers: |
* %l0 Address of function to call. |
* Output registers: |
* %l1 - %l7 Copy of %g1 - %g7 |
*/ |
.global saving_handler |
saving_handler: |
SAVE_GLOBALS |
call %l0 |
nop |
RESTORE_GLOBALS |
restore /* matches the save instruction from the top-level handler */ |
retry |