diff options
-rw-r--r-- | ortho/mcode/ortho_code-x86-abi.adb | 3 | ||||
-rw-r--r-- | ortho/mcode/ortho_code-x86-abi.ads | 2 | ||||
-rw-r--r-- | ortho/mcode/ortho_code-x86-flags_linux.ads | 3 | ||||
-rw-r--r-- | ortho/mcode/ortho_code-x86-flags_macosx.ads | 3 | ||||
-rw-r--r-- | ortho/mcode/ortho_code-x86-flags_windows.ads | 3 |
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; |