Changeset cddc1639 in mainline for arch/sparc64/src/trap/trap.c
- Timestamp:
- 2005-12-15T21:40:19Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5753fbb
- Parents:
- 36e7ee98
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/sparc64/src/trap/trap.c
r36e7ee98 rcddc1639 29 29 #include <arch/trap/trap.h> 30 30 #include <arch/trap/trap_table.h> 31 #include <arch/trap/regwin.h> 31 32 #include <arch/asm.h> 32 33 #include <memstr.h> 34 #include <debug.h> 35 #include <arch/types.h> 36 #include <typedefs.h> 33 37 34 38 /** Initialize trap table. */ … … 39 43 */ 40 44 memcpy((void *) trap_table, (void *) tba_read(), TRAP_TABLE_SIZE); 45 46 /* 47 * Install kernel-provided handlers. 48 */ 49 trap_install_handler(TT_CLEAN_WINDOW, CLEAN_WINDOW_HANDLER_SIZE, false); 50 trap_install_handler(TT_SPILL_0_NORMAL, SPILL_HANDLER_SIZE, false); 51 trap_install_handler(TT_FILL_0_NORMAL, FILL_HANDLER_SIZE, false); 41 52 } 53 54 /** Copy trap handler to active trap table. 55 * 56 * The handler is copied from trap_table_kernel to trap_handler. 57 * 58 * @param tt Trap type. An index that uniquelly identifies handler code. 59 * @param len Length of the handler in bytes. Must be multiple of TRAP_TABLE_ENTRY_SIZE (i.e. 32). 60 * @param tlnonz If false, tt is considered from the lower half of trap table. If true, the upper half is chosen. 61 */ 62 void trap_install_handler(index_t tt, size_t len, bool tlnonz) 63 { 64 count_t cnt; 65 int i; 66 67 ASSERT(tt < TRAP_TABLE_ENTRY_COUNT/2); 68 ASSERT(len % TRAP_TABLE_ENTRY_SIZE == 0); 69 70 if (tlnonz) 71 tt += TRAP_TABLE_ENTRY_COUNT/2; 72 73 cnt = len/TRAP_TABLE_ENTRY_SIZE; 74 75 for (i = tt; i < tt + cnt; i++) { 76 trap_table[i] = trap_table_kernel[i]; 77 } 78 }
Note:
See TracChangeset
for help on using the changeset viewer.