Module Name: src Committed By: msaitoh Date: Sun Nov 18 18:14:40 UTC 2012
Modified Files: src/sys/arch/mips/mips [netbsd-6]: mips_emul.c Log Message: Pull up following revision(s) (requested by skrll in ticket #661): sys/arch/mips/mips/mips_emul.c: revision 1.26 We need to jump out of two switches to emulate rdhwr rt,$29 correctly. Only one would result in segv. Fixes pthread apps on mips1. Tested using gxemul. To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.25.8.1 src/sys/arch/mips/mips/mips_emul.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/mips_emul.c diff -u src/sys/arch/mips/mips/mips_emul.c:1.25 src/sys/arch/mips/mips/mips_emul.c:1.25.8.1 --- src/sys/arch/mips/mips/mips_emul.c:1.25 Thu Aug 18 21:04:23 2011 +++ src/sys/arch/mips/mips/mips_emul.c Sun Nov 18 18:14:39 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: mips_emul.c,v 1.25 2011/08/18 21:04:23 matt Exp $ */ +/* $NetBSD: mips_emul.c,v 1.25.8.1 2012/11/18 18:14:39 msaitoh Exp $ */ /* * Copyright (c) 1999 Shuichiro URATA. All rights reserved. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: mips_emul.c,v 1.25 2011/08/18 21:04:23 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: mips_emul.c,v 1.25.8.1 2012/11/18 18:14:39 msaitoh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -457,7 +457,7 @@ mips_emul_special3(uint32_t inst, struct case 29: tf->tf_regs[instfmt.RType.rt] = (mips_reg_t)(intptr_t)curlwp->l_private; - break; + goto done; } /* FALLTHROUGH */ illopc: @@ -472,7 +472,7 @@ mips_emul_special3(uint32_t inst, struct (*curproc->p_emul->e_trapsignal)(curlwp, &ksi); return; } - +done: update_pc(tf, cause); }