summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ortho/mcode/ortho_code-x86-abi.adb3
-rw-r--r--ortho/mcode/ortho_code-x86-abi.ads2
-rw-r--r--ortho/mcode/ortho_code-x86-flags_linux.ads3
-rw-r--r--ortho/mcode/ortho_code-x86-flags_macosx.ads3
-rw-r--r--ortho/mcode/ortho_code-x86-flags_windows.ads3
5 files changed, 13 insertions, 1 deletions
diff --git a/ortho/mcode/ortho_code-x86-abi.adb b/ortho/mcode/ortho_code-x86-abi.adb
index 99b75e9..bb06d51 100644
--- a/ortho/mcode/ortho_code-x86-abi.adb
+++ b/ortho/mcode/ortho_code-x86-abi.adb
@@ -588,6 +588,9 @@ package body Ortho_Code.X86.Abi is
is
use Ortho_Code.Debug;
begin
+ -- Alignment of doubles is platform dependent.
+ Mode_Align (Mode_F64) := X86.Flags.Mode_F64_Align;
+
if Flag_Debug_Hli then
Disps.Init;
else
diff --git a/ortho/mcode/ortho_code-x86-abi.ads b/ortho/mcode/ortho_code-x86-abi.ads
index e974438..7b166da 100644
--- a/ortho/mcode/ortho_code-x86-abi.ads
+++ b/ortho/mcode/ortho_code-x86-abi.ads
@@ -23,7 +23,7 @@ package Ortho_Code.X86.Abi is
procedure Init;
procedure Finish;
- Mode_Align : constant Mode_Align_Array :=
+ Mode_Align : Mode_Align_Array :=
(Mode_U8 | Mode_I8 => 0,
Mode_U16 | Mode_I16 => 1,
Mode_U32 | Mode_I32 | Mode_F32 | Mode_P32 => 2,
diff --git a/ortho/mcode/ortho_code-x86-flags_linux.ads b/ortho/mcode/ortho_code-x86-flags_linux.ads
index 624c279..30bc7f7 100644
--- a/ortho/mcode/ortho_code-x86-flags_linux.ads
+++ b/ortho/mcode/ortho_code-x86-flags_linux.ads
@@ -25,4 +25,7 @@ package Ortho_Code.X86.Flags_Linux is
-- Prefered stack alignment.
-- Must be a power of 2.
Stack_Boundary : constant Unsigned_32 := 2 ** 3;
+
+ -- Alignment for double (64 bit float).
+ Mode_F64_Align : constant Natural := 2;
end Ortho_Code.X86.Flags_Linux;
diff --git a/ortho/mcode/ortho_code-x86-flags_macosx.ads b/ortho/mcode/ortho_code-x86-flags_macosx.ads
index c753106..a330852 100644
--- a/ortho/mcode/ortho_code-x86-flags_macosx.ads
+++ b/ortho/mcode/ortho_code-x86-flags_macosx.ads
@@ -25,4 +25,7 @@ package Ortho_Code.X86.Flags_Macosx is
-- Prefered stack alignment.
-- Must be a power of 2.
Stack_Boundary : constant Unsigned_32 := 2 ** 4;
+
+ -- Alignment for double (64 bit float).
+ Mode_F64_Align : constant Natural := 2;
end Ortho_Code.X86.Flags_Macosx;
diff --git a/ortho/mcode/ortho_code-x86-flags_windows.ads b/ortho/mcode/ortho_code-x86-flags_windows.ads
index a5ba579..3296aaf 100644
--- a/ortho/mcode/ortho_code-x86-flags_windows.ads
+++ b/ortho/mcode/ortho_code-x86-flags_windows.ads
@@ -25,4 +25,7 @@ package Ortho_Code.X86.Flags_Windows is
-- Prefered stack alignment.
-- Must be a power of 2.
Stack_Boundary : constant Unsigned_32 := 2 ** 3;
+
+ -- Alignment for double (64 bit float).
+ Mode_F64_Align : constant Natural := 3;
end Ortho_Code.X86.Flags_Windows;