/kernel/trunk/arch/sparc64/include/trap/regwin.h |
---|
118,12 → 118,14 |
mov %r0, %l5 |
mov %r0, %l6 |
mov %r0, %l7 |
mov %r0, %i0 |
mov %r0, %i1 |
mov %r0, %i2 |
mov %r0, %i3 |
mov %r0, %i4 |
mov %r0, %i5 |
mov %r0, %o0 |
mov %r0, %o1 |
mov %r0, %o2 |
mov %r0, %o3 |
mov %r0, %o4 |
mov %r0, %o5 |
mov %r0, %o6 |
mov %r0, %o7 |
retry |
.endm |
#endif /* __ASM__ */ |
/kernel/trunk/arch/sparc64/include/trap/interrupt.h |
---|
34,6 → 34,7 |
#define __sparc64_INTERRUPT_H__ |
#include <arch/trap/trap_table.h> |
#include <arch/stack.h> |
#define TT_INTERRUPT_LEVEL_1 0x41 |
#define TT_INTERRUPT_LEVEL_2 0x42 |
58,12 → 59,10 |
#ifdef __ASM__ |
.macro INTERRUPT_LEVEL_N_HANDLER n |
save %sp, -128, %sp |
save %sp, -STACK_WINDOW_SAVE_AREA_SIZE, %sp |
mov \n - 1, %o0 |
call exc_dispatch |
mov %fp, %o1 |
restore |
retry |
SAVING_HANDLER exc_dispatch |
.endm |
.macro INTERRUPT_VECTOR_TRAP_HANDLER |
/kernel/trunk/arch/sparc64/include/trap/trap_table.h |
---|
33,6 → 33,8 |
#include <arch/types.h> |
#endif /* __ASM__ */ |
#include <arch/stack.h> |
#define TRAP_TABLE_ENTRY_COUNT 1024 |
#define TRAP_TABLE_ENTRY_SIZE 32 |
#define TRAP_TABLE_SIZE (TRAP_TABLE_ENTRY_COUNT*TRAP_TABLE_ENTRY_SIZE) |
48,4 → 50,32 |
extern trap_table_entry_t trap_table_save[TRAP_TABLE_ENTRY_COUNT]; |
#endif /* !__ASM__ */ |
#ifdef __ASM__ |
.macro SAVE_GLOBALS |
mov %g1, %l1 |
mov %g2, %l2 |
mov %g3, %l3 |
mov %g4, %l4 |
mov %g5, %l5 |
mov %g6, %l6 |
mov %g7, %l7 |
.endm |
.macro RESTORE_GLOBALS |
mov %l1, %g1 |
mov %l2, %g2 |
mov %l3, %g3 |
mov %l4, %g4 |
mov %l5, %g5 |
mov %l6, %g6 |
mov %l7, %g7 |
.endm |
.macro SAVING_HANDLER f |
set \f, %l0 |
b saving_handler |
nop |
.endm |
#endif /* __ASM__ */ |
#endif |