[project @ 2000-01-25 14:40:32 by sewardj]
authorsewardj <unknown>
Tue, 25 Jan 2000 14:40:32 +0000 (14:40 +0000)
committersewardj <unknown>
Tue, 25 Jan 2000 14:40:32 +0000 (14:40 +0000)
x86: free up all FP regs before doing a ccall.  This appears to be a
part of the x86 calling convention(s).

ghc/compiler/nativeGen/PprMach.lhs

index ac051ee..8c686d4 100644 (file)
@@ -1000,7 +1000,10 @@ pprInstr (JMP (OpImm imm)) = (<>) (ptext SLIT("\tjmp ")) (pprImm imm)
 pprInstr (JMP op) = (<>) (ptext SLIT("\tjmp *")) (pprOperand L op)
 
 pprInstr (CALL imm)
-   = hcat [ ptext SLIT("\tffree %st(0) ; call "), pprImm imm ]
+   = vcat [ ptext SLIT("\tffree %st(0) ;ffree %st(1) ;ffree %st(2) ;ffree %st(3)"),
+            ptext SLIT("\tffree %st(4) ;ffree %st(5) ;ffree %st(6) ;ffree %st(7)"),
+            hcat [ ptext SLIT("\tcall "), pprImm imm ]
+          ]
 
 
 -- Simulating a flat register set on the x86 FP stack is tricky.