Changeset 39494010 in mainline
- Timestamp:
- 2005-12-26T01:05:47Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 1120276
- Parents:
- 5b1ced0
- Files:
-
- 4 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/sparc64/Makefile.inc
r5b1ced0 r39494010 61 61 arch/$(ARCH)/src/trap/trap_table.S \ 62 62 arch/$(ARCH)/src/trap/trap.c \ 63 arch/$(ARCH)/src/trap/interrupt.c 63 arch/$(ARCH)/src/trap/interrupt.c \ 64 arch/$(ARCH)/src/drivers/tick.c -
arch/sparc64/include/asm.h
r5b1ced0 r39494010 101 101 } 102 102 103 /** Read SOFTINT Register. 104 * 105 * @return Value of SOFTINT register. 106 */ 107 static inline __u64 softint_read(void) 108 { 109 __u64 v; 110 111 __asm__ volatile ("rd %%softint, %0\n" : "=r" (v)); 112 113 return v; 114 } 115 116 /** Write SOFTINT Register. 117 * 118 * @param New value of SOFTINT register. 119 */ 120 static inline void softint_write(__u64 v) 121 { 122 __asm__ volatile ("wr %0, %1, %%softint\n" : : "r" (v), "i" (0)); 123 } 103 124 104 125 /** Enable interrupts. -
arch/sparc64/include/interrupt.h
r5b1ced0 r39494010 30 30 #define __sparc64_INTERRUPT_H__ 31 31 32 #include <typedefs.h> 33 34 #define IVT_ITEMS 15 35 #define IVT_FIRST 1 36 37 extern void interrupt_register(int n, const char *name, iroutine f); 38 32 39 #endif -
arch/sparc64/include/register.h
r5b1ced0 r39494010 81 81 __u64 value; 82 82 struct { 83 unsigned int_dis : 1; /**< TICK_INT interrupt enable. */83 unsigned int_dis : 1; /**< TICK_INT interrupt disabled flag. */ 84 84 __u64 tick_cmpr : 63; /**< Compare value for TICK interrupts. */ 85 85 } __attribute__ ((packed)); … … 87 87 typedef union tick_compare_reg tick_compare_reg_t; 88 88 89 /** SOFTINT Register. */ 90 union softint_reg { 91 __u64 value; 92 struct { 93 __u64 : 47; 94 unsigned stick_int : 1; 95 unsigned int_level : 15; 96 unsigned tick_int : 1; 97 } __attribute__ ((packed)); 98 }; 99 typedef union softint_reg softint_reg_t; 100 89 101 #endif -
arch/sparc64/src/console.c
r5b1ced0 r39494010 31 31 #include <console/chardev.h> 32 32 #include <console/console.h> 33 #include <arch/asm.h> 34 #include <arch/register.h> 33 35 34 36 static void ofw_sparc64_putchar(chardev_t *d, const char ch); … … 51 53 void ofw_sparc64_putchar(chardev_t *d, const char ch) 52 54 { 55 pstate_reg_t pstate; 56 57 /* 58 * 32-bit OpenFirmware depends on PSTATE.AM bit set. 59 */ 60 pstate.value = pstate_read(); 61 pstate.am = true; 62 pstate_write(pstate.value); 63 53 64 if (ch == '\n') 54 65 ofw_putchar('\r'); 55 66 ofw_putchar(ch); 67 68 pstate.am = false; 69 pstate_write(pstate.value); 56 70 } -
arch/sparc64/src/sparc64.c
r5b1ced0 r39494010 31 31 #include <arch/trap/trap.h> 32 32 #include <arch/console.h> 33 #include <arch/drivers/tick.h> 33 34 34 35 void arch_pre_mm_init(void) … … 37 38 ofw_sparc64_console_init(); 38 39 trap_init(); 40 tick_init(); 39 41 } 40 42 -
arch/sparc64/src/trap/trap.c
r5b1ced0 r39494010 36 36 #include <arch/types.h> 37 37 #include <typedefs.h> 38 #include <arch/drivers/tick.h> 38 39 39 40 /** Initialize trap table. */ … … 59 60 trap_install_handler(TT_SPILL_0_NORMAL, SPILL_HANDLER_SIZE, true); 60 61 trap_install_handler(TT_FILL_0_NORMAL, FILL_HANDLER_SIZE, true); 61 62 trap_install_handler(TT_INTERRUPT_LEVEL_1, INTERRUPT_LEVEL_N_HANDLER_SIZE, false); 63 trap_install_handler(TT_INTERRUPT_LEVEL_2, INTERRUPT_LEVEL_N_HANDLER_SIZE, false); 64 trap_install_handler(TT_INTERRUPT_LEVEL_3, INTERRUPT_LEVEL_N_HANDLER_SIZE, false); 65 trap_install_handler(TT_INTERRUPT_LEVEL_4, INTERRUPT_LEVEL_N_HANDLER_SIZE, false); 66 trap_install_handler(TT_INTERRUPT_LEVEL_5, INTERRUPT_LEVEL_N_HANDLER_SIZE, false); 67 trap_install_handler(TT_INTERRUPT_LEVEL_6, INTERRUPT_LEVEL_N_HANDLER_SIZE, false); 68 trap_install_handler(TT_INTERRUPT_LEVEL_7, INTERRUPT_LEVEL_N_HANDLER_SIZE, false); 69 trap_install_handler(TT_INTERRUPT_LEVEL_8, INTERRUPT_LEVEL_N_HANDLER_SIZE, false); 70 trap_install_handler(TT_INTERRUPT_LEVEL_9, INTERRUPT_LEVEL_N_HANDLER_SIZE, false); 71 trap_install_handler(TT_INTERRUPT_LEVEL_10, INTERRUPT_LEVEL_N_HANDLER_SIZE, false); 72 trap_install_handler(TT_INTERRUPT_LEVEL_11, INTERRUPT_LEVEL_N_HANDLER_SIZE, false); 73 trap_install_handler(TT_INTERRUPT_LEVEL_12, INTERRUPT_LEVEL_N_HANDLER_SIZE, false); 74 trap_install_handler(TT_INTERRUPT_LEVEL_13, INTERRUPT_LEVEL_N_HANDLER_SIZE, false); 75 trap_install_handler(TT_INTERRUPT_LEVEL_14, INTERRUPT_LEVEL_N_HANDLER_SIZE, false); 76 trap_install_handler(TT_INTERRUPT_LEVEL_15, INTERRUPT_LEVEL_N_HANDLER_SIZE, false); 62 77 trap_install_handler(TT_INTERRUPT_VECTOR_TRAP, INTERRUPT_VECTOR_TRAP_HANDLER_SIZE, false); 63 78 } -
arch/sparc64/src/trap/trap_table.S
r5b1ced0 r39494010 61 61 CLEAN_WINDOW_HANDLER 62 62 63 /* TT = 0x41, TL = 0, interrupt_level_1 handler */ 64 .org trap_table + TT_INTERRUPT_LEVEL_1*ENTRY_SIZE 65 .global interrupt_level_1_handler 66 interrupt_level_1_handler: 67 INTERRUPT_LEVEL_N_HANDLER 1 68 69 /* TT = 0x42, TL = 0, interrupt_level_2 handler */ 70 .org trap_table + TT_INTERRUPT_LEVEL_2*ENTRY_SIZE 71 .global interrupt_level_2_handler 72 interrupt_level_2_handler: 73 INTERRUPT_LEVEL_N_HANDLER 2 74 75 /* TT = 0x43, TL = 0, interrupt_level_3 handler */ 76 .org trap_table + TT_INTERRUPT_LEVEL_3*ENTRY_SIZE 77 .global interrupt_level_3_handler 78 interrupt_level_3_handler: 79 INTERRUPT_LEVEL_N_HANDLER 3 80 81 /* TT = 0x44, TL = 0, interrupt_level_4 handler */ 82 .org trap_table + TT_INTERRUPT_LEVEL_4*ENTRY_SIZE 83 .global interrupt_level_4_handler 84 interrupt_level_4_handler: 85 INTERRUPT_LEVEL_N_HANDLER 4 86 87 /* TT = 0x45, TL = 0, interrupt_level_5 handler */ 88 .org trap_table + TT_INTERRUPT_LEVEL_5*ENTRY_SIZE 89 .global interrupt_level_5_handler 90 interrupt_level_5_handler: 91 INTERRUPT_LEVEL_N_HANDLER 5 92 93 /* TT = 0x46, TL = 0, interrupt_level_6 handler */ 94 .org trap_table + TT_INTERRUPT_LEVEL_6*ENTRY_SIZE 95 .global interrupt_level_6_handler 96 interrupt_level_6_handler: 97 INTERRUPT_LEVEL_N_HANDLER 6 98 99 /* TT = 0x47, TL = 0, interrupt_level_7 handler */ 100 .org trap_table + TT_INTERRUPT_LEVEL_7*ENTRY_SIZE 101 .global interrupt_level_7_handler 102 interrupt_level_7_handler: 103 INTERRUPT_LEVEL_N_HANDLER 7 104 105 /* TT = 0x48, TL = 0, interrupt_level_8 handler */ 106 .org trap_table + TT_INTERRUPT_LEVEL_8*ENTRY_SIZE 107 .global interrupt_level_8_handler 108 interrupt_level_8_handler: 109 INTERRUPT_LEVEL_N_HANDLER 8 110 111 /* TT = 0x49, TL = 0, interrupt_level_9 handler */ 112 .org trap_table + TT_INTERRUPT_LEVEL_9*ENTRY_SIZE 113 .global interrupt_level_9_handler 114 interrupt_level_9_handler: 115 INTERRUPT_LEVEL_N_HANDLER 9 116 117 /* TT = 0x4a, TL = 0, interrupt_level_10 handler */ 118 .org trap_table + TT_INTERRUPT_LEVEL_10*ENTRY_SIZE 119 .global interrupt_level_10_handler 120 interrupt_level_10_handler: 121 INTERRUPT_LEVEL_N_HANDLER 10 122 123 /* TT = 0x4b, TL = 0, interrupt_level_11 handler */ 124 .org trap_table + TT_INTERRUPT_LEVEL_11*ENTRY_SIZE 125 .global interrupt_level_11_handler 126 interrupt_level_11_handler: 127 INTERRUPT_LEVEL_N_HANDLER 11 128 129 /* TT = 0x4c, TL = 0, interrupt_level_12 handler */ 130 .org trap_table + TT_INTERRUPT_LEVEL_12*ENTRY_SIZE 131 .global interrupt_level_12_handler 132 interrupt_level_12_handler: 133 INTERRUPT_LEVEL_N_HANDLER 12 134 135 /* TT = 0x4d, TL = 0, interrupt_level_13 handler */ 136 .org trap_table + TT_INTERRUPT_LEVEL_13*ENTRY_SIZE 137 .global interrupt_level_13_handler 138 interrupt_level_13_handler: 139 INTERRUPT_LEVEL_N_HANDLER 13 140 141 /* TT = 0x4e, TL = 0, interrupt_level_14 handler */ 142 .org trap_table + TT_INTERRUPT_LEVEL_14*ENTRY_SIZE 143 .global interrupt_level_14_handler 144 interrupt_level_14_handler: 145 INTERRUPT_LEVEL_N_HANDLER 14 146 147 /* TT = 0x4f, TL = 0, interrupt_level_15 handler */ 148 .org trap_table + TT_INTERRUPT_LEVEL_15*ENTRY_SIZE 149 .global interrupt_level_15_handler 150 interrupt_level_15_handler: 151 INTERRUPT_LEVEL_N_HANDLER 15 152 63 153 /* TT = 0x60, TL = 0, interrupt_vector_trap handler */ 64 154 .org trap_table + TT_INTERRUPT_VECTOR_TRAP*ENTRY_SIZE -
generic/include/interrupt.h
r5b1ced0 r39494010 31 31 32 32 #include <arch/interrupt.h> 33 #include <typedefs.h> 33 34 34 35 #ifndef IVT_ITEMS 35 # 36 # define IVT_ITEMS 0 36 37 #endif 37 38 38 typedef void (* iroutine)(int n, void *stack); 39 #ifndef IVT_FIRST 40 # define IVT_FIRST 0 41 #endif 39 42 40 43 extern iroutine exc_register(int n, const char *name, iroutine f); -
generic/include/typedefs.h
r5b1ced0 r39494010 87 87 typedef struct cmd_info cmd_info_t; 88 88 89 typedef void (* iroutine)(int n, void *stack); 90 89 91 #endif -
generic/src/interrupt/interrupt.c
r5b1ced0 r39494010 75 75 ASSERT(n < IVT_ITEMS); 76 76 77 exc_table[n].f(n , stack);77 exc_table[n].f(n + IVT_FIRST, stack); 78 78 } 79 79 … … 84 84 } 85 85 86 /** KConsole cmd - print all exceptions */86 /** kconsole cmd - print all exceptions */ 87 87 static int exc_print_cmd(cmd_arg_t *argv) 88 88 { … … 96 96 if (!symbol) 97 97 symbol = "not found"; 98 printf("%d %s 0x%p(%s)\n", i,exc_table[i].name,98 printf("%d %s 0x%p(%s)\n", i + IVT_FIRST, exc_table[i].name, 99 99 exc_table[i].f,symbol); 100 100 if (!((i+1) % 20)) {
Note:
See TracChangeset
for help on using the changeset viewer.