diff options
author | nickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2020-04-26 16:04:29 +0000 |
---|---|---|
committer | nickysn <nickysn@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2020-04-26 16:04:29 +0000 |
commit | b2f2ffc1f39fd9d6ca5e2485918542cbfbd81376 (patch) | |
tree | 59fa190dfcfd7545bc54a661bfb1ab017dcad4f5 | |
parent | 7a6e13f7653cce58d37ff58d853865da45deb4b1 (diff) | |
download | fpc-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.pas | 12 | ||||
-rw-r--r-- | rtl/zxspectrum/prt0.asm | 10 |
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 |