Преглед на файлове

* PS1: clamp the stack size, so it doesn't exceed the maximum memory available (minus 1k for heap)

Nikolay Nikolov преди 1 година
родител
ревизия
94e399faf7
променени са 1 файла, в които са добавени 9 реда и са изтрити 1 реда
  1. 9 1
      rtl/ps1/system.pp

+ 9 - 1
rtl/ps1/system.pp

@@ -109,8 +109,16 @@ begin
 end;
 
 function CheckInitialStkLen(stklen : SizeUInt) : SizeUInt;
+const
+  MinHeap = 1024;  // always leave at least 1k heap
+var
+  MaxStack: SizeInt;
 begin
-  result:= stklen;
+  MaxStack:=SizeInt(PtrUInt($80200000)-PtrUInt(@bss_end))-MinHeap;
+  if stklen<MaxStack then
+    result:= stklen
+  else
+    result:=MaxStack;
 end;
 
 procedure system_exit;