summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--asmcomp/power/emit.mlp12
-rw-r--r--asmcomp/power/proc.ml10
-rw-r--r--asmrun/power-aix.S14
-rw-r--r--asmrun/power-elf.S6
-rw-r--r--asmrun/power-rhapsody.S6
-rw-r--r--asmrun/stack.h4
6 files changed, 26 insertions, 26 deletions
diff --git a/asmcomp/power/emit.mlp b/asmcomp/power/emit.mlp
index 8e7c3d124..3c3af5e9e 100644
--- a/asmcomp/power/emit.mlp
+++ b/asmcomp/power/emit.mlp
@@ -29,18 +29,18 @@ open Emitaux
(* Layout of the stack *)
(* In the TOC-based model:
- The bottom 24 bytes of the stack are reserved at all times
+ The bottom 32 bytes of the stack are reserved at all times
for a standard linkage area.
In this area, the word at offset +20 is used by glue code and others to
save the TOC register.
The bottom two words are used as temporaries and for trap frames.
- The stack is kept 8-aligned.
+ The stack is kept 16-aligned.
In the absolute-address model:
No reserved space at the bottom of the stack.
- The stack is kept 8-aligned. *)
+ The stack is kept 16-aligned. *)
-let stack_linkage_area = if toc then 24 else 0
-let trap_frame_size = if toc then 24 else 8
+let stack_linkage_area = if toc then 32 else 0
+let trap_frame_size = if toc then 32 else 16
let stack_offset = ref 0
@@ -50,7 +50,7 @@ let frame_size () =
!stack_offset + (* Trap frame, outgoing parameters *)
4 * num_stack_slots.(0) + 8 * num_stack_slots.(1) + (* Local variables *)
(if !contains_calls then 4 else 0) in (* The return address *)
- Misc.align size 8
+ Misc.align size 16
let slot_offset loc cls =
match loc with
diff --git a/asmcomp/power/proc.ml b/asmcomp/power/proc.ml
index 6bf8a746a..740b53131 100644
--- a/asmcomp/power/proc.ml
+++ b/asmcomp/power/proc.ml
@@ -128,10 +128,10 @@ let calling_conventions
ofs := !ofs + size_float
end
done;
- let final_ofs = if toc && !ofs > 0 then !ofs + 24 else !ofs in
- (loc, Misc.align final_ofs 8)
- (* Keep stack 8-aligned.
- Under PowerOpen, keep a free 24 byte linkage area at the bottom
+ let final_ofs = if toc && !ofs > 0 then !ofs + 32 else !ofs in
+ (loc, Misc.align final_ofs 16)
+ (* Keep stack 16-aligned.
+ Under PowerOpen, keep a free 32 byte linkage area at the bottom
if we need to stack-allocate some arguments. *)
let incoming ofs = Incoming ofs
@@ -185,7 +185,7 @@ let poweropen_external_conventions first_int last_int
end;
int := !int + 2
done;
- (loc, Misc.align !ofs 8) (* Keep stack 8-aligned *)
+ (loc, Misc.align !ofs 16) (* Keep stack 16-aligned *)
let loc_external_arguments =
match Config.system with
diff --git a/asmrun/power-aix.S b/asmrun/power-aix.S
index 587af7263..3baa5f966 100644
--- a/asmrun/power-aix.S
+++ b/asmrun/power-aix.S
@@ -240,7 +240,7 @@
lwz 29, 4(1)
mtlr 0
lwz 2, 20(1)
- addi 1, 1, 24
+ addi 1, 1, 32
# Branch to handler
blr
@@ -295,9 +295,9 @@ L..102:
stfd 30, -96(1)
stfd 31, -88(1)
# Allocate and link stack frame
- stwu 1, -280(1)
+ stwu 1, -288(1)
# Set up a callback link
- addi 1, 1, -24
+ addi 1, 1, -32
lwz 9, L..caml_bottom_of_stack(2)
lwz 10, L..caml_last_return_address(2)
lwz 12, L..caml_gc_regs(2)
@@ -311,7 +311,7 @@ L..102:
bl L..103
b L..104
L..103:
- addi 1, 1, -24
+ addi 1, 1, -32
lwz 9, L..caml_exception_pointer(2)
mflr 0
lwz 29, 0(9)
@@ -339,7 +339,7 @@ L..105:
# Pop the trap frame, restoring caml_exception_pointer
lwz 9, 4(1)
lwz 10, L..caml_exception_pointer(2)
- addi 1, 1, 24
+ addi 1, 1, 32
stw 9, 0(10)
# Pop the callback link, restoring the global variables
L..106:
@@ -352,12 +352,12 @@ L..106:
stw 7, 0(10)
stw 8, 0(11)
stw 9, 0(12)
- addi 1, 1, 24
+ addi 1, 1, 32
# Update allocation pointer
lwz 11, L..young_ptr(2)
stw 31, 0(11)
# Deallocate stack frame
- addi 1, 1, 280
+ addi 1, 1, 288
# Restore callee-save registers
lwz 13, -76(1)
lwz 14, -72(1)
diff --git a/asmrun/power-elf.S b/asmrun/power-elf.S
index f6cb1bac8..52f3441cd 100644
--- a/asmrun/power-elf.S
+++ b/asmrun/power-elf.S
@@ -221,7 +221,7 @@ raise_caml_exception:
lwz 0, 0(1)
lwz 29, 4(1)
mtlr 0
- addi 1, 1, 8
+ addi 1, 1, 16
/* Branch to handler */
blr
@@ -291,7 +291,7 @@ caml_start_program:
bl .L103
b .L104
.L103:
- addi 1, 1, -8
+ addi 1, 1, -16
mflr 0
stw 0, 0(1)
Loadglobal(11, caml_exception_pointer, 11)
@@ -310,7 +310,7 @@ caml_start_program:
/* Pop the trap frame, restoring caml_exception_pointer */
lwz 9, 4(1)
Storeglobal(9, caml_exception_pointer, 11)
- addi 1, 1, 8
+ addi 1, 1, 16
/* Pop the callback link, restoring the global variables */
.L106:
lwz 9, 0(1)
diff --git a/asmrun/power-rhapsody.S b/asmrun/power-rhapsody.S
index f1fb9ce76..0d56983df 100644
--- a/asmrun/power-rhapsody.S
+++ b/asmrun/power-rhapsody.S
@@ -221,7 +221,7 @@ _raise_caml_exception:
lwz r0, 0(r1)
lwz r29, 4(r1)
mtlr r0
- addi r1, r1, 8
+ addi r1, r1, 16
/* Branch to handler */
blr
@@ -290,7 +290,7 @@ L102:
bl L103
b L104
L103:
- addi r1, r1, -8
+ addi r1, r1, -16
mflr r0
stw r0, 0(r1)
Loadglobal r11, _caml_exception_pointer, r11
@@ -309,7 +309,7 @@ L105:
/* Pop the trap frame, restoring caml_exception_pointer */
lwz r9, 4(r1)
Storeglobal r9, _caml_exception_pointer, r11
- addi r1, r1, 8
+ addi r1, r1, 16
/* Pop the callback link, restoring the global variables */
L106:
lwz r9, 0(r1)
diff --git a/asmrun/stack.h b/asmrun/stack.h
index 50101abd7..b2f2a4c80 100644
--- a/asmrun/stack.h
+++ b/asmrun/stack.h
@@ -54,9 +54,9 @@
#define Mark_scanned(sp, retaddr) (*((long *)((sp) - 4)) = (retaddr) | 1)
#define Mask_already_scanned(retaddr) ((retaddr) & ~1)
#ifdef SYS_aix
-#define Trap_frame_size 24
+#define Trap_frame_size 32
#else
-#define Trap_frame_size 8
+#define Trap_frame_size 16
#endif
#define Callback_link(sp) ((struct caml_context *)((sp) + Trap_frame_size))
#endif