Changeset 25d7709 in mainline for arch/mips32/src
- Timestamp:
- 2006-03-13T20:08:16Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 631ca4d
- Parents:
- 45d6add
- Location:
- arch/mips32/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/mips32/src/debugger.c
r45d6add r25d7709 180 180 } else { /* We are add extended */ 181 181 cur->flags = BKPOINT_FUNCCALL; 182 cur->bkfunc = (void (*)(void *, struct exception_regdump*)) argv[1].intval;182 cur->bkfunc = (void (*)(void *, istate_t *)) argv[1].intval; 183 183 } 184 184 if (is_jump(cur->instruction)) … … 290 290 * next instruction. 291 291 */ 292 void debugger_bpoint( struct exception_regdump *pstate)292 void debugger_bpoint(istate_t *istate) 293 293 { 294 294 bpinfo_t *cur = NULL; 295 __address fireaddr = pstate->epc;295 __address fireaddr = istate->epc; 296 296 int i; 297 297 … … 330 330 if (!(cur->flags & BKPOINT_FUNCCALL)) 331 331 printf("***Breakpoint %d: 0x%p in %s.\n", i, 332 fireaddr, get_symtab_entry( pstate->epc));332 fireaddr, get_symtab_entry(istate->epc)); 333 333 334 334 /* Return first instruction back */ … … 345 345 get_symtab_entry(fireaddr)); 346 346 /* Move on to next instruction */ 347 pstate->epc += 4;347 istate->epc += 4; 348 348 } 349 349 if (cur) … … 352 352 /* Allow zero bkfunc, just for counting */ 353 353 if (cur->bkfunc) 354 cur->bkfunc(cur, pstate);354 cur->bkfunc(cur, istate); 355 355 } else { 356 356 printf("***Type 'exit' to exit kconsole.\n"); -
arch/mips32/src/drivers/arc.c
r45d6add r25d7709 350 350 iroutine old_timer; 351 351 /** Do polling on timer interrupt */ 352 static void timer_replace(int n, void *stack)352 static void timer_replace(int n, istate_t *istate) 353 353 { 354 354 arc_keyboard_poll(); 355 old_timer(n, stack);355 old_timer(n, istate); 356 356 arc_keyboard_poll(); 357 357 } -
arch/mips32/src/drivers/msim.c
r45d6add r25d7709 84 84 85 85 /** Process keyboard interrupt. */ 86 static void msim_interrupt(int n, void *stack)86 static void msim_interrupt(int n, istate_t *istate) 87 87 { 88 88 char ch = 0; -
arch/mips32/src/drivers/serial.c
r45d6add r25d7709 113 113 iroutine old_timer; 114 114 /** Do polling on timer interrupt */ 115 static void timer_replace(int n, void *stack)115 static void timer_replace(int n, istate_t *istate) 116 116 { 117 old_timer(n, stack);118 serial_interrupt(n, stack);117 old_timer(n, istate); 118 serial_interrupt(n, istate); 119 119 } 120 120 -
arch/mips32/src/exception.c
r45d6add r25d7709 63 63 }; 64 64 65 static void print_regdump( struct exception_regdump *pstate)65 static void print_regdump(istate_t *istate) 66 66 { 67 67 char *pcsymbol = ""; 68 68 char *rasymbol = ""; 69 69 70 char *s = get_symtab_entry( pstate->epc);70 char *s = get_symtab_entry(istate->epc); 71 71 if (s) 72 72 pcsymbol = s; 73 s = get_symtab_entry( pstate->ra);73 s = get_symtab_entry(istate->ra); 74 74 if (s) 75 75 rasymbol = s; 76 76 77 printf("PC: %X(%s) RA: %X(%s), SP(%P)\n", pstate->epc,pcsymbol,78 pstate->ra,rasymbol, pstate->sp);79 } 80 81 static void unhandled_exception(int n, struct exception_regdump *pstate)82 { 83 print_regdump( pstate);77 printf("PC: %X(%s) RA: %X(%s), SP(%P)\n",istate->epc,pcsymbol, 78 istate->ra,rasymbol, istate->sp); 79 } 80 81 static void unhandled_exception(int n, istate_t *istate) 82 { 83 print_regdump(istate); 84 84 panic("unhandled exception %s\n", exctable[n]); 85 85 } 86 86 87 static void breakpoint_exception(int n, struct exception_regdump *pstate)87 static void breakpoint_exception(int n, istate_t *istate) 88 88 { 89 89 #ifdef CONFIG_DEBUG 90 debugger_bpoint( pstate);90 debugger_bpoint(istate); 91 91 #else 92 92 /* it is necessary to not re-execute BREAK instruction after 93 93 returning from Exception handler 94 94 (see page 138 in R4000 Manual for more information) */ 95 pstate->epc += 4;95 istate->epc += 4; 96 96 #endif 97 97 } 98 98 99 static void tlbmod_exception(int n, struct exception_regdump *pstate)100 { 101 tlb_modified( pstate);102 } 103 104 static void tlbinv_exception(int n, struct exception_regdump *pstate)105 { 106 tlb_invalid( pstate);99 static void tlbmod_exception(int n, istate_t *istate) 100 { 101 tlb_modified(istate); 102 } 103 104 static void tlbinv_exception(int n, istate_t *istate) 105 { 106 tlb_invalid(istate); 107 107 } 108 108 109 109 #ifdef CONFIG_FPU_LAZY 110 static void cpuns_exception(int n, struct exception_regdump *pstate)110 static void cpuns_exception(int n, istate_t *istate) 111 111 { 112 112 if (cp0_cause_coperr(cp0_cause_read()) == fpu_cop_id) … … 117 117 #endif 118 118 119 static void interrupt_exception(int n, struct exception_regdump *pstate)119 static void interrupt_exception(int n, istate_t *istate) 120 120 { 121 121 __u32 cause; … … 127 127 for (i = 0; i < 8; i++) 128 128 if (cause & (1 << i)) 129 exc_dispatch(i+INT_OFFSET, pstate);129 exc_dispatch(i+INT_OFFSET, istate); 130 130 } 131 131 132 132 #include <debug.h> 133 133 /** Handle syscall userspace call */ 134 static void syscall_exception(int n, struct exception_regdump *pstate)134 static void syscall_exception(int n, istate_t *istate) 135 135 { 136 136 interrupts_enable(); 137 if ( pstate->a3 < SYSCALL_END)138 pstate->v0 = syscall_table[pstate->a3](pstate->a0,139 pstate->a1,140 pstate->a2);137 if (istate->a3 < SYSCALL_END) 138 istate->v0 = syscall_table[istate->a3](istate->a0, 139 istate->a1, 140 istate->a2); 141 141 else 142 panic("Undefined syscall %d", pstate->a3); 142 panic("Undefined syscall %d", istate->a3); 143 istate->epc += 4; 143 144 interrupts_disable(); 144 pstate->epc += 4; 145 } 146 147 148 void exception(struct exception_regdump *pstate) 145 } 146 147 void exception(istate_t *istate) 149 148 { 150 149 int cause; … … 164 163 cp0_status_um_bit)); 165 164 166 /* Save pstate so that the threads can access it */167 /* If THREAD-> pstate is set, this is nested exception,165 /* Save istate so that the threads can access it */ 166 /* If THREAD->istate is set, this is nested exception, 168 167 * do not rewrite it 169 168 */ 170 if (THREAD && !THREAD-> pstate)171 THREAD-> pstate = pstate;169 if (THREAD && !THREAD->istate) 170 THREAD->istate = istate; 172 171 173 172 cause = cp0_cause_read(); 174 173 excno = cp0_cause_excno(cause); 175 174 /* Dispatch exception */ 176 exc_dispatch(excno, pstate);175 exc_dispatch(excno, istate); 177 176 178 177 /* Set to NULL, so that we can still support nested … … 180 179 * TODO: We should probably set EXL bit before this command, 181 180 * nesting. On the other hand, if some exception occurs between 182 * here and ERET, it won't set anything on the pstate anyway.181 * here and ERET, it won't set anything on the istate anyway. 183 182 */ 184 183 if (THREAD) 185 THREAD-> pstate = NULL;184 THREAD->istate = NULL; 186 185 } 187 186 -
arch/mips32/src/fpu_context.c
r45d6add r25d7709 37 37 #ifdef ARCH_HAS_FPU 38 38 cp0_status_write(cp0_status_read() & ~cp0_status_fpu_bit); 39 if (THREAD && THREAD-> pstate)40 THREAD-> pstate->status &= ~cp0_status_fpu_bit;39 if (THREAD && THREAD->istate) 40 THREAD->istate->status &= ~cp0_status_fpu_bit; 41 41 #endif 42 42 } … … 46 46 #ifdef ARCH_HAS_FPU 47 47 cp0_status_write(cp0_status_read() | cp0_status_fpu_bit); 48 if (THREAD && THREAD-> pstate)49 THREAD-> pstate->status |= cp0_status_fpu_bit;48 if (THREAD && THREAD->istate) 49 THREAD->istate->status |= cp0_status_fpu_bit; 50 50 #endif 51 51 } -
arch/mips32/src/interrupt.c
r45d6add r25d7709 75 75 } 76 76 77 static void timer_exception(int n, void *stack)77 static void timer_exception(int n, istate_t *istate) 78 78 { 79 79 cp0_compare_write(cp0_count_read() + cp0_compare_value); … … 81 81 } 82 82 83 static void swint0(int n, void *stack)83 static void swint0(int n, istate_t *istate) 84 84 { 85 85 cp0_cause_write(cp0_cause_read() & ~(1 << 8)); /* clear SW0 interrupt */ 86 86 } 87 87 88 static void swint1(int n, void *stack)88 static void swint1(int n, istate_t *istate) 89 89 { 90 90 cp0_cause_write(cp0_cause_read() & ~(1 << 9)); /* clear SW1 interrupt */ -
arch/mips32/src/mm/tlb.c
r45d6add r25d7709 40 40 #include <debug.h> 41 41 42 static void tlb_refill_fail( struct exception_regdump *pstate);43 static void tlb_invalid_fail( struct exception_regdump *pstate);44 static void tlb_modified_fail( struct exception_regdump *pstate);42 static void tlb_refill_fail(istate_t *istate); 43 static void tlb_invalid_fail(istate_t *istate); 44 static void tlb_modified_fail(istate_t *istate); 45 45 46 46 static pte_t *find_mapping_and_check(__address badvaddr); … … 82 82 * Process TLB Refill Exception. 83 83 * 84 * @param pstate Interrupted register context.85 */ 86 void tlb_refill( struct exception_regdump *pstate)84 * @param istate Interrupted register context. 85 */ 86 void tlb_refill(istate_t *istate) 87 87 { 88 88 entry_lo_t lo; … … 127 127 fail: 128 128 spinlock_unlock(&AS->lock); 129 tlb_refill_fail( pstate);129 tlb_refill_fail(istate); 130 130 } 131 131 … … 134 134 * Process TLB Invalid Exception. 135 135 * 136 * @param pstate Interrupted register context.137 */ 138 void tlb_invalid( struct exception_regdump *pstate)136 * @param istate Interrupted register context. 137 */ 138 void tlb_invalid(istate_t *istate) 139 139 { 140 140 tlb_index_t index; … … 196 196 fail: 197 197 spinlock_unlock(&AS->lock); 198 tlb_invalid_fail( pstate);198 tlb_invalid_fail(istate); 199 199 } 200 200 … … 203 203 * Process TLB Modified Exception. 204 204 * 205 * @param pstate Interrupted register context.206 */ 207 void tlb_modified( struct exception_regdump *pstate)205 * @param istate Interrupted register context. 206 */ 207 void tlb_modified(istate_t *istate) 208 208 { 209 209 tlb_index_t index; … … 272 272 fail: 273 273 spinlock_unlock(&AS->lock); 274 tlb_modified_fail( pstate);275 } 276 277 void tlb_refill_fail( struct exception_regdump *pstate)274 tlb_modified_fail(istate); 275 } 276 277 void tlb_refill_fail(istate_t *istate) 278 278 { 279 279 char *symbol = ""; 280 280 char *sym2 = ""; 281 281 282 char *s = get_symtab_entry( pstate->epc);282 char *s = get_symtab_entry(istate->epc); 283 283 if (s) 284 284 symbol = s; 285 s = get_symtab_entry( pstate->ra);285 s = get_symtab_entry(istate->ra); 286 286 if (s) 287 287 sym2 = s; 288 panic("%X: TLB Refill Exception at %X(%s<-%s)\n", cp0_badvaddr_read(), pstate->epc, symbol, sym2);289 } 290 291 292 void tlb_invalid_fail( struct exception_regdump *pstate)288 panic("%X: TLB Refill Exception at %X(%s<-%s)\n", cp0_badvaddr_read(), istate->epc, symbol, sym2); 289 } 290 291 292 void tlb_invalid_fail(istate_t *istate) 293 293 { 294 294 char *symbol = ""; 295 295 296 char *s = get_symtab_entry( pstate->epc);296 char *s = get_symtab_entry(istate->epc); 297 297 if (s) 298 298 symbol = s; 299 panic("%X: TLB Invalid Exception at %X(%s)\n", cp0_badvaddr_read(), pstate->epc, symbol);300 } 301 302 void tlb_modified_fail( struct exception_regdump *pstate)299 panic("%X: TLB Invalid Exception at %X(%s)\n", cp0_badvaddr_read(), istate->epc, symbol); 300 } 301 302 void tlb_modified_fail(istate_t *istate) 303 303 { 304 304 char *symbol = ""; 305 305 306 char *s = get_symtab_entry( pstate->epc);306 char *s = get_symtab_entry(istate->epc); 307 307 if (s) 308 308 symbol = s; 309 panic("%X: TLB Modified Exception at %X(%s)\n", cp0_badvaddr_read(), pstate->epc, symbol);309 panic("%X: TLB Modified Exception at %X(%s)\n", cp0_badvaddr_read(), istate->epc, symbol); 310 310 } 311 311
Note:
See TracChangeset
for help on using the changeset viewer.