00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00037 #ifndef __sparc64_TRAP_INTERRUPT_H__
00038 #define __sparc64_TRAP_INTERRUPT_H__
00039
00040 #include <arch/trap/trap_table.h>
00041 #include <arch/stack.h>
00042
00043 #define TT_INTERRUPT_LEVEL_1 0x41
00044 #define TT_INTERRUPT_LEVEL_2 0x42
00045 #define TT_INTERRUPT_LEVEL_3 0x43
00046 #define TT_INTERRUPT_LEVEL_4 0x44
00047 #define TT_INTERRUPT_LEVEL_5 0x45
00048 #define TT_INTERRUPT_LEVEL_6 0x46
00049 #define TT_INTERRUPT_LEVEL_7 0x47
00050 #define TT_INTERRUPT_LEVEL_8 0x48
00051 #define TT_INTERRUPT_LEVEL_9 0x49
00052 #define TT_INTERRUPT_LEVEL_10 0x4a
00053 #define TT_INTERRUPT_LEVEL_11 0x4b
00054 #define TT_INTERRUPT_LEVEL_12 0x4c
00055 #define TT_INTERRUPT_LEVEL_13 0x4d
00056 #define TT_INTERRUPT_LEVEL_14 0x4e
00057 #define TT_INTERRUPT_LEVEL_15 0x4f
00058
00059 #define TT_INTERRUPT_VECTOR_TRAP 0x60
00060
00061 #define INTERRUPT_LEVEL_N_HANDLER_SIZE TRAP_TABLE_ENTRY_SIZE
00062 #define INTERRUPT_VECTOR_TRAP_HANDLER_SIZE TRAP_TABLE_ENTRY_SIZE
00063
00064 #ifdef __ASM__
00065 .macro INTERRUPT_LEVEL_N_HANDLER n
00066 save %sp, -PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE, %sp
00067 mov \n - 1, %o0
00068 mov %fp, %o1
00069 PREEMPTIBLE_HANDLER exc_dispatch
00070 .endm
00071
00072 .macro INTERRUPT_VECTOR_TRAP_HANDLER
00073 retry
00074 .endm
00075 #endif
00076
00077 #endif
00078