summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2>2020-04-26 16:04:29 +0000
committernickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2>2020-04-26 16:04:29 +0000
commitb2f2ffc1f39fd9d6ca5e2485918542cbfbd81376 (patch)
tree59fa190dfcfd7545bc54a661bfb1ab017dcad4f5
parent7a6e13f7653cce58d37ff58d853865da45deb4b1 (diff)
downloadfpc-b2f2ffc1f39fd9d6ca5e2485918542cbfbd81376.tar.gz
* allow setting the stack size from FPC
git-svn-id: https://svn.freepascal.org/svn/fpc/branches/z80@45104 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--compiler/ngenutil.pas12
-rw-r--r--rtl/zxspectrum/prt0.asm10
2 files changed, 16 insertions, 6 deletions
diff --git a/compiler/ngenutil.pas b/compiler/ngenutil.pas
index 7e6f225c00..7f56daec44 100644
--- a/compiler/ngenutil.pas
+++ b/compiler/ngenutil.pas
@@ -1516,6 +1516,18 @@ implementation
);
tcb.free;
end;
+
+ { allocate the stack on the ZX Spectrum system }
+ if target_info.system in [system_z80_zxspectrum] then
+ begin
+ { tai_datablock cannot yet be handled via the high level typed const
+ builder, because it implies the generation of a symbol, while this
+ is separate in the builder }
+ maybe_new_object_file(current_asmdata.asmlists[al_globals]);
+ new_section(current_asmdata.asmlists[al_globals],sec_stack,'__fpc_stackarea_start',current_settings.alignment.varalignmax);
+ current_asmdata.asmlists[al_globals].concat(tai_datablock.Create_global('__fpc_stackarea_start',stacksize-1,carraydef.getreusable(u8inttype,stacksize-1),AT_DATA));
+ current_asmdata.asmlists[al_globals].concat(tai_datablock.Create_global('__fpc_stackarea_end',1,carraydef.getreusable(u8inttype,1),AT_DATA));
+ end;
{$IFDEF POWERPC}
{ AmigaOS4 "stack cookie" support }
if ( target_info.system = system_powerpc_amiga ) then
diff --git a/rtl/zxspectrum/prt0.asm b/rtl/zxspectrum/prt0.asm
index abdbd28127..74adf9b0c3 100644
--- a/rtl/zxspectrum/prt0.asm
+++ b/rtl/zxspectrum/prt0.asm
@@ -1,12 +1,10 @@
.area _CODE
.globl PASCALMAIN
.globl FPC_SAVE_IY
+ .globl __fpc_stackarea_start
+ .globl __fpc_stackarea_end
+
start::
- ld sp, #stack_area_end
+ ld sp, #__fpc_stackarea_end
ld (FPC_SAVE_IY), iy
jp PASCALMAIN
-
- .area _DATA
-stack_area_start: ;.rs 1022
- .rs 254
-stack_area_end: .rs 2