]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: fix floating point exception on Plan 9
authorAkshat Kumar <seed@mail.nanosouffle.net>
Tue, 10 Apr 2012 19:14:10 +0000 (15:14 -0400)
committerRuss Cox <rsc@golang.org>
Tue, 10 Apr 2012 19:14:10 +0000 (15:14 -0400)
Change 5660047 moved an FLDCW instruction
that disables invalid operand traps into
runtime·asminit, which is called from
runtime·mstart. Thus, runtime·check is being
called prior to setting the appropriate control bits,
which on any QNaN comparison will cause Plan 9
to take an invalid operand trap. This change loads
the control bits (for Plan 9) prior to runtime·check.
Ideally, this should be done before the QNaN checks
on any system, but possibly other kernels simply
don't ever trap on invalid operands.

R=golang-dev, rminnich
CC=golang-dev, john, rsc
https://golang.org/cl/5939045

src/pkg/runtime/rt0_plan9_386.s

index b56c8b325d1f1422383f4eb08ad8166ad0027b3e..56f3a0f6c72a81f82c3dcc7823c7350bf0ad9987 100644 (file)
@@ -25,6 +25,7 @@ argv_fix:
        ADDL    $4, BP
        LOOP    argv_fix
        
+       CALL    runtime·asminit(SB)
        JMP     _rt0_386(SB)
 
 DATA  runtime·isplan9(SB)/4, $1