Changeset c43fa55 in mainline
- Timestamp:
- 2005-12-16T10:44:02Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 07bd114e
- Parents:
- 5753fbb
- Location:
- arch/sparc64
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/sparc64/include/trap/trap_table.h
r5753fbb rc43fa55 46 46 47 47 extern trap_table_entry_t trap_table[TRAP_TABLE_ENTRY_COUNT]; 48 extern trap_table_entry_t trap_table_ kernel[TRAP_TABLE_ENTRY_COUNT];48 extern trap_table_entry_t trap_table_save[TRAP_TABLE_ENTRY_COUNT]; 49 49 #endif /* !__ASM__ */ 50 50 -
arch/sparc64/src/trap/trap.c
r5753fbb rc43fa55 40 40 { 41 41 /* 42 * Save kernel provided trap handlers. 43 */ 44 memcpy((void *) trap_table_save, (void *) trap_table, TRAP_TABLE_SIZE); 45 46 /* 42 47 * Copy OFW's trap table into kernel. 43 48 */ … … 74 79 75 80 for (i = tt; i < tt + cnt; i++) { 76 trap_table[i] = trap_table_ kernel[i];81 trap_table[i] = trap_table_save[i]; 77 82 } 78 83 } -
arch/sparc64/src/trap/trap_table.S
r5753fbb rc43fa55 28 28 29 29 /** 30 * This file contains two trap tables. First, trap_table, is the one 31 * to wich kernel copies OFW's own trap table and patches it with 32 * kernel-provided handlers from the second trap table, trap_table_kernel. 30 * This file contains two trap tables. 31 * First, trap_table, is the one wich contains handlers implemented by 32 * kernel. During initialization, these handlers are copied out to 33 * the second trap table, trap_table_save, and the first table is 34 * overwritten with copy of OFW's own trap table. The copy is then patched 35 * from the trap_table_save. 36 * 37 * This arrangement is beneficial because kernel handlers stay on their 38 * link-time addresses which is good for debugging. 33 39 */ 34 40 … … 41 47 #define ENTRY_SIZE TRAP_TABLE_ENTRY_SIZE 42 48 43 44 49 /* 45 * Trap table for copy of OFW's owntrap table.50 * Kernel trap table. 46 51 */ 47 52 .align TABLE_SIZE 48 53 .global trap_table 49 54 trap_table: 50 .space TABLE_SIZE, 051 52 53 /*54 * Kernel-provided trap handlers.55 */56 .global trap_table_kernel57 trap_table_kernel:58 55 59 56 /* TT = 0x24, TL = 0 *, clean_window handler */ 60 .org trap_table _kernel+ TT_CLEAN_WINDOW*ENTRY_SIZE57 .org trap_table + TT_CLEAN_WINDOW*ENTRY_SIZE 61 58 .global clean_window_handler 62 59 clean_window_handler: … … 64 61 65 62 /* TT = 0x80, TL = 0 *, spill_0_normal handler */ 66 .org trap_table _kernel+ TT_SPILL_0_NORMAL*ENTRY_SIZE63 .org trap_table + TT_SPILL_0_NORMAL*ENTRY_SIZE 67 64 .global spill_0_normal 68 65 spill_0_normal: … … 70 67 71 68 /* TT = 0xc0, TL = 0 *, fill_0_normal handler */ 72 .org trap_table _kernel+ TT_FILL_0_NORMAL*ENTRY_SIZE69 .org trap_table + TT_FILL_0_NORMAL*ENTRY_SIZE 73 70 fill_0_normal: 74 71 FILL_NORMAL_HANDLER … … 77 74 * Software traps for TL=0. 78 75 */ 79 .org trap_table _kernel+ 256*ENTRY_SIZE76 .org trap_table + 256*ENTRY_SIZE 80 77 tl_0_software_traps: 81 78 82 79 /* Reserved area. */ 83 .org trap_table _kernel+ 384*ENTRY_SIZE80 .org trap_table + 384*ENTRY_SIZE 84 81 .space 128*ENTRY_SIZE, 0 85 82 … … 87 84 * Hardware interrupts for TL>0. 88 85 */ 89 .org trap_table _kernel+ 512*ENTRY_SIZE86 .org trap_table + 512*ENTRY_SIZE 90 87 tl_non_0_hardware_traps: 91 88 … … 93 90 * Register window spill/fill traps for TL>0. 94 91 */ 95 .org trap_table _kernel+ 640*ENTRY_SIZE92 .org trap_table + 640*ENTRY_SIZE 96 93 tl_non_0_regwin_traps: 97 94 … … 99 96 * Software traps for TL>0. 100 97 */ 101 .org trap_table _kernel+ 768*ENTRY_SIZE98 .org trap_table + 768*ENTRY_SIZE 102 99 tl_non_0_software_traps: 103 100 104 101 /* Reserved area. */ 105 .org trap_table _kernel+ 896*ENTRY_SIZE102 .org trap_table + 896*ENTRY_SIZE 106 103 .space 128*ENTRY_SIZE, 0 104 105 106 /* 107 * Save trap table. 108 */ 109 .global trap_table_save 110 trap_table_save: 111 .space TABLE_SIZE, 0
Note:
See TracChangeset
for help on using the changeset viewer.