From 5e31133ad0954a4137e12964e322cd4bcf044544 Mon Sep 17 00:00:00 2001 From: Xavier Leroy Date: Fri, 28 Jul 1995 14:17:50 +0000 Subject: Alignement des flottants mis dans la pile. git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@173 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02 --- asmcomp/emit_sparc.mlp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'asmcomp/emit_sparc.mlp') diff --git a/asmcomp/emit_sparc.mlp b/asmcomp/emit_sparc.mlp index fb2d6acaf6..ba60ca2b62 100644 --- a/asmcomp/emit_sparc.mlp +++ b/asmcomp/emit_sparc.mlp @@ -23,7 +23,7 @@ let frame_size () = let size = !stack_offset + 4 * num_stack_slots.(0) + 8 * num_stack_slots.(1) + - (if !contains_calls then 8 else 0) in + (if !contains_calls then 4 else 0) in Misc.align size 8 let slot_offset loc class = @@ -31,8 +31,8 @@ let slot_offset loc class = Incoming n -> frame_size() + n + 96 | Local n -> if class = 0 - then !stack_offset + n * 4 + 96 - else !stack_offset + num_stack_slots.(0) * 4 + n * 8 + 96 + then !stack_offset + num_stack_slots.(1) * 8 + n * 4 + 96 + else !stack_offset + n * 8 + 96 | Outgoing n -> n + 96 (* Return the other register in a register pair *) @@ -378,11 +378,12 @@ let emit_instr i = let l = Misc.log2 n in if n = 1 lsl l then begin let lbl = new_label() in - ` tst {emit_reg i.arg.(0)}\n`; + ` cmp {emit_reg i.arg.(0)}, 0\n`; ` bge {emit_label lbl}\n`; - ` mov {emit_reg i.arg.(0)}, %g1\n` (* in delay slot *) - ` add %g1, {emit_int (n-1)}, %g1\n` - `{emit_label lbl}: sra %g1, {emit_int n}, {emit_reg i.res.(0)}\n` + ` mov {emit_reg i.arg.(0)}, %g1\n`; (* in delay slot *) + ` add %g1, {emit_int (n-1)}, %g1\n`; + `{emit_label lbl}:\n`; + ` sra %g1, {emit_int l}, {emit_reg i.res.(0)}\n` end else begin ` sra {emit_reg i.arg.(0)}, 31, %g1\n`; ` wr %g0, %g1, %y\n`; -- cgit v1.2.1