Module Name: src Committed By: tsutsui Date: Thu Feb 24 16:21:51 UTC 2011
Modified Files: src/sys/arch/mips/mips: locore.S Log Message: - use correct address to fetch an instruction that causes FP trap not in BDslot (broken since the first mips64 partial merge) - also fix leftover confusing comment that should have been removed when rev 1.82 was committed back in 1999. Previously the most ieeefp tests dump core: --- tp-start: t_except, 6 tc-start: masked_double tc-end: masked_double, failed, Test program received signal 4 (core dumped) tc-start: masked_float tc-end: masked_float, failed, Test program received signal 4 (core dumped) tc-start: masked_long_double tc-end: masked_long_double, failed, Test program received signal 4 (core dumped) tc-start: unmasked_double tc-end: unmasked_double, failed, Test program received signal 4 (core dumped) tc-start: unmasked_float tc-end: unmasked_float, failed, Test program received signal 4 (core dumped) tc-start: unmasked_long_double tc-end: unmasked_long_double, failed, Test program received signal 4 (core dumped) tp-end: t_except : tp-start: t_subnormal, 2 tc-start: test_double tc-end: test_double, failed, Test program received signal 4 (core dumped) tc-start: test_float tc-end: test_float, failed, Test program received signal 4 (core dumped) tp-end: t_subnormal --- Now they fail differently: --- tp-start: t_except, 6 tc-start: masked_double tc-end: masked_double, failed, Test program received signal 4 (core dumped) tc-start: masked_float tc-end: masked_float, passed tc-start: masked_long_double tc-se:*** Check failed: /usr/src/tests/lib/libc/ieeefp/t_except.c:227: ex1 & t->mask != t->mask tc-end: masked_long_double, failed, 1 checks failed; see output for more details tc-start: unmasked_double tc-se:*** Check failed: /usr/src/tests/lib/libc/ieeefp/t_except.c:269: sicode != t->sicode tc-end: unmasked_double, failed, 1 checks failed; see output for more details tc-start: unmasked_float tc-se:*** Check failed: /usr/src/tests/lib/libc/ieeefp/t_except.c:269: sicode != t->sicode tc-end: unmasked_float, failed, 1 checks failed; see output for more details tc-start: unmasked_long_double tc-se:*** Check failed: /usr/src/tests/lib/libc/ieeefp/t_except.c:269: sicode != t->sicode tc-end: unmasked_long_double, failed, 1 checks failed; see output for more details tp-end: t_except : tp-start: t_subnormal, 2 tc-start: test_double tc-end: test_double, failed, Test program received signal 4 (core dumped) tc-start: test_float tc-end: test_float, failed, Test program received signal 4 (core dumped) tp-end: t_subnormal --- To generate a diff of this commit: cvs rdiff -u -r1.180 -r1.181 src/sys/arch/mips/mips/locore.S 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/locore.S diff -u src/sys/arch/mips/mips/locore.S:1.180 src/sys/arch/mips/mips/locore.S:1.181 --- src/sys/arch/mips/mips/locore.S:1.180 Thu Feb 24 15:52:23 2011 +++ src/sys/arch/mips/mips/locore.S Thu Feb 24 16:21:50 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: locore.S,v 1.180 2011/02/24 15:52:23 tsutsui Exp $ */ +/* $NetBSD: locore.S,v 1.181 2011/02/24 16:21:50 tsutsui Exp $ */ /* * Copyright (c) 1992, 1993 @@ -635,11 +635,10 @@ b 2f INT_L a0, 4(a0) # a0 = coproc instruction /* - * This is not in the branch delay slot so calculate the resulting - * PC (epc + 4) into v0 and continue to MachEmulateFP(). + * This is not in the branch delay slot. */ 1: - INT_L a0, 4(a0) # a0 = coproc instruction + INT_L a0, 0(a0) # a0 = coproc instruction 2: /*