Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/arch/mips/mips/trap.c,v rcsdiff: /ftp/cvs/cvsroot/src/sys/arch/mips/mips/trap.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.132.2.1 retrieving revision 1.133 diff -u -p -r1.132.2.1 -r1.133 --- src/sys/arch/mips/mips/trap.c 2000/06/22 17:01:37 1.132.2.1 +++ src/sys/arch/mips/mips/trap.c 2000/05/30 01:23:53 1.133 @@ -1,4 +1,4 @@ -/* $NetBSD: trap.c,v 1.132.2.1 2000/06/22 17:01:37 minoura Exp $ */ +/* $NetBSD: trap.c,v 1.133 2000/05/30 01:23:53 nisimura Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -44,7 +44,7 @@ #include /* RCS ID & Copyright macro defns */ -__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.132.2.1 2000/06/22 17:01:37 minoura Exp $"); +__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.133 2000/05/30 01:23:53 nisimura Exp $"); #include "opt_cputype.h" /* which mips CPU levels do we support? */ #include "opt_inet.h" @@ -55,7 +55,6 @@ __KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.1 #include "opt_natm.h" #include "opt_ktrace.h" #include "opt_ddb.h" -#include "opt_syscall_debug.h" #if !defined(MIPS1) && !defined(MIPS3) #error Neither "MIPS1" (r2000 family), "MIPS3" (r4000 family) was configured. @@ -392,6 +391,7 @@ trap(status, cause, vaddr, opc, frame) u_quad_t sticks = 0; struct proc *p = curproc; vm_prot_t ftype; + extern struct proc *fpcurproc; extern void fswintrberr __P((void)); uvmexp.traps++; @@ -430,7 +430,7 @@ trap(status, cause, vaddr, opc, frame) if (KERNLAND(vaddr)) { pt_entry_t *pte; unsigned entry; - paddr_t pa; + vaddr_t pa; pte = kvtopte(vaddr); entry = pte->pt_entry; @@ -446,10 +446,9 @@ trap(status, cause, vaddr, opc, frame) pte->pt_entry = entry; vaddr &= ~PGOFSET; MachTLBUpdate(vaddr, entry); - pa = mips_tlbpfn_to_paddr(entry); + pa = pfn_to_vad(entry); if (!IS_VM_PHYSADDR(pa)) { - printf("ktlbmod: va %x pa %llx\n", - vaddr, (long long)pa); + printf("ktlbmod: va %x pa %lx\n", vaddr, pa); panic("ktlbmod: unmanaged page"); } pmap_set_modified(pa); @@ -460,7 +459,7 @@ trap(status, cause, vaddr, opc, frame) { pt_entry_t *pte; unsigned entry; - paddr_t pa; + vaddr_t pa; pmap_t pmap; pmap = p->p_vmspace->vm_map.pmap; @@ -481,10 +480,9 @@ trap(status, cause, vaddr, opc, frame) vaddr = (vaddr & ~PGOFSET) | (pmap->pm_asid << MIPS_TLB_PID_SHIFT); MachTLBUpdate(vaddr, entry); - pa = mips_tlbpfn_to_paddr(entry); + pa = pfn_to_vad(entry); if (!IS_VM_PHYSADDR(pa)) { - printf("utlbmod: va %x pa %llx\n", - vaddr, (long long)pa); + printf("utlbmod: va %x pa %lx\n", vaddr, pa); panic("utlbmod: unmanaged page"); } pmap_set_modified(pa); @@ -676,13 +674,13 @@ trap(status, cause, vaddr, opc, frame) f = (struct frame *)p->p_md.md_regs; savefpregs(fpcurproc); /* yield FPA */ loadfpregs(p); /* load FPA */ - fpcurproc = p; p->p_md.md_flags |= MDP_FPUSED; f->f_regs[SR] |= MIPS_SR_COP_1_BIT; } #else MachFPInterrupt(status, cause, opc, p->p_md.md_regs); #endif + fpcurproc = p; userret(p, opc, sticks); return; /* GEN */ case T_FPE+T_USER: