2
0
Эх сурвалжийг харах

+ describe for each supported target the default guaranteed stack alignment

git-svn-id: trunk@22278 -
Jonas Maebe 13 жил өмнө
parent
commit
bd31004fdb

+ 2 - 0
compiler/systems.pas

@@ -207,6 +207,8 @@ interface
           }
           first_parm_offset : longint;
           stacksize    : longint;
+          { stack alignment }
+          stackalign   : byte;
           abi          : tabi;
        end;
 

+ 2 - 0
compiler/systems/i_aix.pas

@@ -88,6 +88,7 @@ unit i_aix;
               );
             first_parm_offset : 8;
             stacksize    : 32*1024*1024;
+            stackalign   : 16;
             abi : abi_powerpc_aix;
           );
 
@@ -150,6 +151,7 @@ unit i_aix;
               );
             first_parm_offset : 8;
             stacksize    : 10*1024*1024;
+            stackalign   : 16;
             abi : abi_powerpc_aix
           );
 

+ 2 - 0
compiler/systems/i_amiga.pas

@@ -87,6 +87,7 @@ unit i_amiga;
               );
             first_parm_offset : 8;
             stacksize    : 262144;
+            stackalign   : 2;
             abi : abi_default;
           );
 
@@ -148,6 +149,7 @@ unit i_amiga;
               );
             first_parm_offset : 8;
             stacksize    : 262144;
+            stackalign   : 16;
             abi : abi_powerpc_sysv;
           );
 

+ 1 - 1
compiler/systems/i_atari.pas

@@ -73,9 +73,9 @@ unit i_atari;
             dbg          : dbg_stabs;
             script       : script_unix;
             endian       : endian_big;
-            stackalignment : 2;
             maxCrecordalignment : 4;
             stacksize    : 8192;
+            stackalign   : 2;
             DllScanSupported:false;
             use_function_relative_addresses : false
           );

+ 1 - 0
compiler/systems/i_beos.pas

@@ -98,6 +98,7 @@ unit i_beos;
               so i use this new value.  
             }
             stacksize    : 16 * 1024 * 1024;
+            stackalign   : 4;
             abi : abi_default
           );
 

+ 14 - 0
compiler/systems/i_bsd.pas

@@ -117,6 +117,7 @@ unit i_bsd;
               );
             first_parm_offset : 8;
             stacksize   : 262144;
+            stackalign   : 4;
             abi          : abi_default;
           );
 
@@ -182,6 +183,7 @@ unit i_bsd;
               );
             first_parm_offset : 16;
             stacksize    : 256*1024;
+            stackalign   : 16;
             abi          : abi_default;
           );
 
@@ -244,6 +246,7 @@ unit i_bsd;
               );
             first_parm_offset : 8;
             stacksize   : 262144;
+            stackalign   : 4;
             abi          : abi_default;
           );
 
@@ -305,6 +308,7 @@ unit i_bsd;
               );
             first_parm_offset : 8;
             stacksize   : 262144;
+            stackalign   : 4;
             abi          : abi_default;
           );
 
@@ -369,6 +373,7 @@ unit i_bsd;
               );
             first_parm_offset : 16;
             stacksize    : 256*1024;
+            stackalign   : 16;
             abi          : abi_default;
           );
 
@@ -430,6 +435,7 @@ unit i_bsd;
               );
             first_parm_offset : 8;
             stacksize   : 262144;
+            stackalign   : 4;
             abi          : abi_default;
           );
 
@@ -491,6 +497,7 @@ unit i_bsd;
               );
             first_parm_offset : 8;
             stacksize    : 32*1024*1024;
+            stackalign   : 16;
             { abi_powerpc_sysv doesn't work yet }
             abi : abi_powerpc_aix;
           );
@@ -556,6 +563,7 @@ unit i_bsd;
               );
             first_parm_offset : 16;
             stacksize    : 256*1024;
+            stackalign   : 16;
             abi          : abi_default;
           );
 
@@ -617,6 +625,7 @@ unit i_bsd;
               );
             first_parm_offset : 24;
             stacksize   : 262144;
+            stackalign   : 16;
             abi : abi_powerpc_aix;
           );
 
@@ -680,6 +689,7 @@ unit i_bsd;
               );
             first_parm_offset : 8;
             stacksize   : 262144;
+            stackalign   : 16;
             abi         : abi_default;
           );
 
@@ -743,6 +753,7 @@ unit i_bsd;
               );
             first_parm_offset : 8;
             stacksize   : 262144;
+            stackalign   : 16;
             abi         : abi_default;
           );
 
@@ -806,6 +817,7 @@ unit i_bsd;
               );
             first_parm_offset : 48;
             stacksize   : 262144;
+            stackalign   : 16;
             abi : abi_powerpc_aix;
           );
 
@@ -869,6 +881,7 @@ unit i_bsd;
               );
             first_parm_offset : 16;
             stacksize   : 262144;
+            stackalign   : 16;
             abi : abi_default;
           );
 
@@ -931,6 +944,7 @@ unit i_bsd;
               );
             first_parm_offset : 8;
             stacksize    : 262144;
+            stackalign   : 4;
             abi : abi_default
           );
 

+ 3 - 0
compiler/systems/i_embed.pas

@@ -87,6 +87,7 @@ unit i_embed;
               );
             first_parm_offset : 8;
             stacksize    : 262144;
+            stackalign   : 4;
             abi : abi_default
           );
 
@@ -149,6 +150,7 @@ unit i_embed;
               );
             first_parm_offset : 0;
             stacksize    : 1024;
+            stackalign   : 4;
             abi : abi_default
           );
 
@@ -211,6 +213,7 @@ unit i_embed;
               );
             first_parm_offset : 8;
             stacksize    : 4096;
+            stackalign   : 4;
             abi : abi_default
           );
 

+ 1 - 0
compiler/systems/i_emx.pas

@@ -98,6 +98,7 @@ unit i_emx;
               );
             first_parm_offset : 8;
             stacksize    : 256*1024;
+            stackalign   : 4;
             abi          : abi_default;
           );
 

+ 1 - 0
compiler/systems/i_gba.pas

@@ -88,6 +88,7 @@ unit i_gba;
               );
             first_parm_offset : 8;
             stacksize    : 16384;
+            stackalign   : 8;
             abi : abi_eabi
           );
 

+ 1 - 0
compiler/systems/i_go32v2.pas

@@ -87,6 +87,7 @@ unit i_go32v2;
               );
             first_parm_offset : 8;
             stacksize    : 262144;
+            stackalign   : 4;
             abi          : abi_default;
           );
 

+ 1 - 0
compiler/systems/i_haiku.pas

@@ -99,6 +99,7 @@ unit i_haiku;
               so i use this new value.  
             }
             stacksize    : 16 * 1024 * 1024;
+            stackalign   : 4;
             abi : abi_default
           );
 

+ 2 - 0
compiler/systems/i_jvm.pas

@@ -105,6 +105,7 @@ unit i_jvm;
               );
             first_parm_offset : 0;
             stacksize   : 262144;
+            stackalign   : 4;
             abi          : abi_default;
           );
 
@@ -169,6 +170,7 @@ unit i_jvm;
               );
             first_parm_offset : 0;
             stacksize   : 262144;
+            stackalign   : 4;
             abi          : abi_default;
           );
 

+ 14 - 0
compiler/systems/i_linux.pas

@@ -93,6 +93,7 @@ unit i_linux;
               );
             first_parm_offset : 8;
             stacksize    : 8*1024*1024;
+            stackalign   : 4;
             abi : abi_default
           );
 
@@ -156,6 +157,7 @@ unit i_linux;
               );
             first_parm_offset : 8;
             stacksize    : 8*1024*1024;
+            stackalign   : 16;
             abi : abi_default
           );
 
@@ -218,6 +220,7 @@ unit i_linux;
               );
             first_parm_offset : 8;
             stacksize    : 32*1024*1024;
+            stackalign   : 4;
             abi : abi_default
           );
 
@@ -280,6 +283,7 @@ unit i_linux;
               );
             first_parm_offset : 8;
             stacksize    : 32*1024*1024;
+            stackalign   : 16;
             abi : abi_powerpc_sysv;
           );
 
@@ -342,6 +346,7 @@ unit i_linux;
               );
             first_parm_offset : 8;
             stacksize    : 10*1024*1024;
+            stackalign   : 16;
             abi : abi_powerpc_sysv
           );
 
@@ -404,6 +409,7 @@ unit i_linux;
               );
             first_parm_offset : 8;
             stacksize    : 32*1024*1024;
+            stackalign   : 8;  { ??? }
             abi : abi_default
           );
 
@@ -467,6 +473,7 @@ unit i_linux;
               );
             first_parm_offset : 16;
             stacksize    : 8*1024*1024;
+            stackalign   : 16;
             abi : abi_default
           );
 
@@ -531,6 +538,7 @@ unit i_linux;
               );
             first_parm_offset : 92;
             stacksize    : 8*1024*1024;
+            stackalign   : 8;
             abi : abi_default
           );
 
@@ -595,6 +603,7 @@ unit i_linux;
               );
             first_parm_offset : 8;
             stacksize    : 8*1024*1024;
+            stackalign   : 8;
             abi : abi_eabihf
           );
 {$else FPC_ARMHF}
@@ -659,6 +668,7 @@ unit i_linux;
               );
             first_parm_offset : 8;
             stacksize    : 8*1024*1024;
+            stackalign   : 8;
             abi : abi_eabi
           );
 {$else FPC_ARMEL}
@@ -723,6 +733,7 @@ unit i_linux;
               );
             first_parm_offset : 8;
             stacksize    : 8*1024*1024;
+            stackalign   : 4;
             abi : abi_default
           );
 {$else FPC_ARMEB}
@@ -786,6 +797,7 @@ unit i_linux;
               );
             first_parm_offset : 8;
             stacksize    : 8*1024*1024;
+            stackalign   : 4;
             abi : abi_default
           );
 {$endif FPC_ARMEB}
@@ -853,6 +865,7 @@ unit i_linux;
               );
             first_parm_offset : 0;
             stacksize    : 32*1024*1024;
+            stackalign   : 8;
             abi : abi_default
           );
 
@@ -917,6 +930,7 @@ unit i_linux;
               );
             first_parm_offset : 0;
             stacksize    : 32*1024*1024;
+            stackalign   : 8;
             abi : abi_default
           );
 

+ 1 - 0
compiler/systems/i_macos.pas

@@ -86,6 +86,7 @@ unit i_macos;
               );
             first_parm_offset : 8;
             stacksize    : 262144;
+            stackalign   : 16;
             abi : abi_powerpc_aix;
           );
 

+ 1 - 0
compiler/systems/i_morph.pas

@@ -87,6 +87,7 @@ unit i_morph;
               );
             first_parm_offset : 8;
             stacksize    : 262144;
+            stackalign   : 16;
             abi : abi_powerpc_sysv;
           );
 

+ 1 - 0
compiler/systems/i_nativent.pas

@@ -92,6 +92,7 @@ unit i_nativent;
               );
             first_parm_offset : 8;
             stacksize    : 16*1024*1024;
+            stackalign   : 4;
             abi          : abi_default;
           );
 

+ 1 - 0
compiler/systems/i_nds.pas

@@ -88,6 +88,7 @@ unit i_nds;
               );
             first_parm_offset : 8;
             stacksize    : $3CFF; //15615? or 16384?;
+            stackalign   : 8;
             abi : abi_eabi
           );
 

+ 1 - 0
compiler/systems/i_nwl.pas

@@ -87,6 +87,7 @@ unit i_nwl;
               );
             first_parm_offset : 8;
             stacksize    : 16384;
+            stackalign   : 4;
             abi : abi_default
           );
 

+ 1 - 0
compiler/systems/i_nwm.pas

@@ -87,6 +87,7 @@ unit i_nwm;
               );
             first_parm_offset : 8;
             stacksize    : 16384;
+            stackalign   : 4;
             abi : abi_default
           );
 

+ 1 - 0
compiler/systems/i_os2.pas

@@ -98,6 +98,7 @@ unit i_os2;
               );
             first_parm_offset : 8;
             stacksize    : 256*1024;
+            stackalign   : 4;
             abi          : abi_default;
           );
 

+ 2 - 0
compiler/systems/i_palmos.pas

@@ -87,6 +87,7 @@ unit i_palmos;
               );
             first_parm_offset : 8;
             stacksize    : 8192;
+            stackalign   : 2;
             abi : abi_default;
           );
 
@@ -159,6 +160,7 @@ unit i_palmos;
               );
             first_parm_offset : 8;
             stacksize    : 8192;
+            stackalign   : 4;
             abi : abi_default;
           );
 

+ 3 - 0
compiler/systems/i_sunos.pas

@@ -89,6 +89,7 @@ unit i_sunos;
               );
             first_parm_offset : 8;
             stacksize    : 262144;
+            stackalign   : 4;
             abi          : abi_default;
           );
 
@@ -155,6 +156,7 @@ unit i_sunos;
               );
             first_parm_offset : 16;
             stacksize    : 8*1024*1024;
+            stackalign   : 16;
             abi : abi_default
           );
 
@@ -220,6 +222,7 @@ unit i_sunos;
               );
             first_parm_offset : 92;
             stacksize    : 262144;
+            stackalign   : 8;
             abi          : abi_default;
           );
 

+ 2 - 0
compiler/systems/i_symbian.pas

@@ -89,6 +89,7 @@ unit i_symbian;
               );
             first_parm_offset : 8;
             stacksize    : 262144;
+            stackalign   : 4;
             abi          : abi_default;
           );
 
@@ -151,6 +152,7 @@ unit i_symbian;
               );
             first_parm_offset : 8;
             stacksize    : 262144;
+            stackalign   : 4;
             abi          : abi_default;
           );
 

+ 1 - 0
compiler/systems/i_watcom.pas

@@ -87,6 +87,7 @@ unit i_watcom;
               );
             first_parm_offset : 8;
             stacksize    : 16384;
+            stackalign   : 4;
             abi          : abi_default;
           );
 

+ 1 - 0
compiler/systems/i_wdosx.pas

@@ -87,6 +87,7 @@ unit i_wdosx;
               );
             first_parm_offset : 8;
             stacksize    : 32*1024*1024;
+            stackalign   : 4;
             abi          : abi_default;
           );
 

+ 1 - 0
compiler/systems/i_wii.pas

@@ -87,6 +87,7 @@ unit i_wii;
               );
             first_parm_offset : 8;
             stacksize    : 131072;  // 128 kb 
+            stackalign   : 16;
             abi : abi_powerpc_sysv;
           );
 

+ 4 - 0
compiler/systems/i_win.pas

@@ -92,6 +92,7 @@ unit i_win;
               );
             first_parm_offset : 8;
             stacksize    : 16*1024*1024;
+            stackalign   : 4;
             abi          : abi_default;
           );
 
@@ -158,6 +159,7 @@ unit i_win;
               );
             first_parm_offset : 16;
             stacksize    : 16*1024*1024;
+            stackalign   : 16;
             abi          : abi_default;
           );
 
@@ -222,6 +224,7 @@ unit i_win;
               );
             first_parm_offset : 8;
             stacksize    : 262144;
+            stackalign   : 4;
             abi          : abi_default;
           );
 
@@ -286,6 +289,7 @@ unit i_win;
               );
             first_parm_offset : 8;
             stacksize    : 262144;
+            stackalign   : 4;
             abi          : abi_default;
           );