Module Name: src Committed By: matt Date: Fri Aug 21 17:45:19 UTC 2009
Modified Files: src/sys/arch/mips/mips [matt-nb5-mips64]: trap.c Log Message: Use PRIxVADDR Stop casting l_md.md_regs Cleanup code. curlwp is never NULL anymore. To generate a diff of this commit: cvs rdiff -u -r1.217.12.1 -r1.217.12.2 src/sys/arch/mips/mips/trap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/mips/mips/trap.c diff -u src/sys/arch/mips/mips/trap.c:1.217.12.1 src/sys/arch/mips/mips/trap.c:1.217.12.2 --- src/sys/arch/mips/mips/trap.c:1.217.12.1 Thu Aug 20 04:36:05 2009 +++ src/sys/arch/mips/mips/trap.c Fri Aug 21 17:45:19 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.217.12.1 2009/08/20 04:36:05 uebayasi Exp $ */ +/* $NetBSD: trap.c,v 1.217.12.2 2009/08/21 17:45:19 matt Exp $ */ /* * Copyright (c) 1992, 1993 @@ -78,7 +78,7 @@ #include <sys/cdefs.h> /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.217.12.1 2009/08/20 04:36:05 uebayasi Exp $"); +__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.217.12.2 2009/08/21 17:45:19 matt Exp $"); #include "opt_cputype.h" /* which mips CPU levels do we support? */ #include "opt_ddb.h" @@ -122,7 +122,7 @@ #include <sys/kgdb.h> #endif -const char *trap_type[] = { +const char * const trap_type[] = { "external interrupt", "TLB modification", "TLB miss (load or instr. fetch)", @@ -161,8 +161,8 @@ void ast(unsigned int); vaddr_t MachEmulateBranch(struct frame *, vaddr_t, unsigned int, int); /* XXX */ -void MachEmulateInst(u_int32_t, u_int32_t, vaddr_t, struct frame *); /* XXX */ -void MachFPTrap(u_int32_t, u_int32_t, vaddr_t, struct frame *); /* XXX */ +void MachEmulateInst(uint32_t, uint32_t, vaddr_t, struct frame *); /* XXX */ +void MachFPTrap(uint32_t, uint32_t, vaddr_t, struct frame *); /* XXX */ #define DELAYBRANCH(x) ((int)(x)<0) @@ -174,7 +174,7 @@ child_return(void *arg) { struct lwp *l = arg; - struct frame *frame = (struct frame *)l->l_md.md_regs; + struct frame *frame = l->l_md.md_regs; frame->f_regs[_R_V0] = 0; frame->f_regs[_R_V1] = 1; @@ -232,17 +232,15 @@ printf("trap: %s in %s mode\n", trap_type[TRAPTYPE(cause)], USERMODE(status) ? "user" : "kernel"); - printf("status=0x%x, cause=0x%x, epc=%#lx, vaddr=%#lx\n", - status, cause, opc, vaddr); - if (curlwp != NULL) { - fp = (struct frame *)l->l_md.md_regs; - printf("pid=%d cmd=%s usp=0x%x ", - p->p_pid, p->p_comm, (int)fp->f_regs[_R_SP]); - } else - printf("curlwp == NULL "); - printf("ksp=%p\n", &status); + printf("status=0x%x, cause=0x%x, epc=%#" PRIxVADDR + ", vaddr=%#" PRIxVADDR "\n", status, cause, opc, vaddr); + fp = l->l_md.md_regs; + printf("pid=%d cmd=%s usp=%#" PRIxREGISTER + " ksp=%p ra=%#" PRIxREGISTER "\n", + p->p_pid, p->p_comm, fp->f_regs[_R_SP], + &status, fp->f_regs[_R_RA]); #if defined(DDB) - kdb_trap(type, (mips_reg_t *) frame); + kdb_trap(type, frame->tf_regs); /* XXX force halt XXX */ #elif defined(KGDB) { @@ -260,7 +258,7 @@ db_set_ddb_regs(type, (mips_reg_t *) frame); PC_BREAK_ADVANCE(f); if (kgdb_trap(type, &ddb_regs)) { - ((mips_reg_t *)frame)[21] = f->f_regs[_R_PC]; + frame->tf_regs[TF_EPC] = f->f_regs[_R_PC]; return; } } @@ -290,9 +288,9 @@ MachTLBUpdate(vaddr, entry); pa = mips_tlbpfn_to_paddr(entry); if (!IS_VM_PHYSADDR(pa)) { - printf("ktlbmod: va %#lx pa %#llx\n", - vaddr, (long long)pa); - panic("ktlbmod: unmanaged page"); + panic("ktlbmod: unmanaged page:" + " va %#" PRIxVADDR " pa %#"PRIxPADDR, + vaddr, pa); } pmap_set_modified(pa); return; /* KERN */ @@ -325,9 +323,9 @@ MachTLBUpdate(vaddr, entry); pa = mips_tlbpfn_to_paddr(entry); if (!IS_VM_PHYSADDR(pa)) { - printf("utlbmod: va %#lx pa %#llx\n", - vaddr, (long long)pa); - panic("utlbmod: unmanaged page"); + panic("utlbmod: unmanaged page:" + " va %#"PRIxVADDR" pa %#"PRIxPADDR, + vaddr, pa); } pmap_set_modified(pa); if (type & T_USER) @@ -347,7 +345,7 @@ goto dopanic; /* check for fuswintr() or suswintr() getting a page fault */ if (l->l_addr->u_pcb.pcb_onfault == (void *)fswintrberr) { - frame->tf_regs[TF_EPC] = (int)fswintrberr; + frame->tf_regs[TF_EPC] = (intptr_t)fswintrberr; return; /* KERN */ } goto pagefault; @@ -378,8 +376,9 @@ rv = uvm_fault(map, va, ftype); #ifdef VMFAULT_TRACE printf( - "uvm_fault(%p (pmap %p), %lx (0x%x), %d) -> %d at pc %p\n", - map, vm->vm_map.pmap, va, vaddr, ftype, rv, (void*)opc); + "uvm_fault(%p (pmap %p), %#"PRIxVADDR + " (0x%x), %d) -> %d at pc %#"PRIxVADDR"\n", + map, vm->vm_map.pmap, va, vaddr, ftype, rv, opc); #endif /* * If this was a stack access we keep track of the maximum @@ -522,8 +521,9 @@ mips_dcache_wbinv_all(); /* XXXJRT -- necessary? */ if (rv < 0) - printf("Warning: can't restore instruction at 0x%lx: 0x%x\n", - l->l_md.md_ss_addr, l->l_md.md_ss_instr); + printf("Warning: can't restore instruction" + " at %#"PRIxVADDR": 0x%x\n", + l->l_md.md_ss_addr, l->l_md.md_ss_instr); l->l_md.md_ss_addr = 0; ksi.ksi_trap = type & ~T_USER; ksi.ksi_signo = SIGTRAP; @@ -537,7 +537,7 @@ if ((cause & MIPS_CR_COP_ERR) == 0x10000000) { struct frame *f; - f = (struct frame *)l->l_md.md_regs; + f = l->l_md.md_regs; savefpregs(fpcurlwp); /* yield FPA */ loadfpregs(l); /* load FPA */ fpcurlwp = l; @@ -562,12 +562,12 @@ case T_TRAP+T_USER: ksi.ksi_trap = type & ~T_USER; ksi.ksi_signo = SIGFPE; - fp = (struct frame *)l->l_md.md_regs; + fp = l->l_md.md_regs; ksi.ksi_addr = (void *)(intptr_t)fp->f_regs[_R_PC]; ksi.ksi_code = FPE_FLTOVF; /* XXX */ break; /* SIGNAL */ } - fp = (struct frame *)l->l_md.md_regs; + fp = l->l_md.md_regs; fp->f_regs[_R_CAUSE] = cause; fp->f_regs[_R_BADVADDR] = vaddr; (*p->p_emul->e_trapsignal)(l, &ksi); @@ -616,13 +616,13 @@ int mips_singlestep(struct lwp *l) { - struct frame *f = (struct frame *)l->l_md.md_regs; + struct frame *f = l->l_md.md_regs; struct proc *p = l->l_proc; vaddr_t pc, va; int rv; if (l->l_md.md_ss_addr) { - printf("SS %s (%d): breakpoint already set at %lx\n", + printf("SS %s (%d): breakpoint already set at %#"PRIxVADDR"\n", p->p_comm, p->p_pid, l->l_md.md_ss_addr); return EFAULT; } @@ -676,7 +676,7 @@ int rc; if (addr & 3) { - printf("kdbpeek: unaligned address %lx\n", addr); + printf("kdbpeek: unaligned address %#"PRIxVADDR"\n", addr); /* We might have been called from DDB, so do not go there. */ stacktrace(); rc = -1 ; @@ -695,7 +695,7 @@ mips_reg_t rc; if (addr & (sizeof(mips_reg_t) - 1)) { - printf("kdbrpeek: unaligned address %lx\n", addr); + printf("kdbrpeek: unaligned address %#"PRIxVADDR"\n", addr); /* We might have been called from DDB, so do not go there. */ stacktrace(); rc = -1 ; @@ -727,8 +727,8 @@ /* forward */ const char *fn_name(vaddr_t addr); -void stacktrace_subr(int, int, int, int, u_int, u_int, u_int, u_int, - void (*)(const char*, ...)); +void stacktrace_subr(mips_reg_t, mips_reg_t, mips_reg_t, mips_reg_t, + vaddr_t, vaddr_t, vaddr_t, vaddr_t, void (*)(const char*, ...)); #define MIPS_JR_RA 0x03e00008 /* instruction code for jr ra */ #define MIPS_JR_K0 0x03400008 /* instruction code for jr k0 */ @@ -740,8 +740,8 @@ * the console, or both. */ void -stacktrace_subr(int a0, int a1, int a2, int a3, - u_int pc, u_int sp, u_int fp, u_int ra, +stacktrace_subr(mips_reg_t a0, mips_reg_t a1, mips_reg_t a2, mips_reg_t a3, + vaddr_t pc, vaddr_t sp, vaddr_t fp, vaddr_t ra, void (*printfn)(const char*, ...)) { vaddr_t va, subr; @@ -1008,7 +1008,7 @@ for (i = 0; names[i].name; i++) if (names[i].addr == (void*)addr) return (names[i].name); - sprintf(buf, "%lx", addr); + sprintf(buf, "%#"PRIxVADDR, addr); return (buf); }