tb0193.pp 934 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. { Old file: tbs0227.pp }
  2. { external var does strange things when declared in localsymtable OK 0.99.11 (PFV) }
  3. var
  4. stacksize : ptrint;external name '__stklen';
  5. function getstacksize:longint;assembler;
  6. asm
  7. {$ifdef CPUI386}
  8. movl stacksize,%eax
  9. end ['EAX'];
  10. {$endif CPUI386}
  11. {$ifdef CPUX86_64}
  12. movl stacksize,%eax
  13. end ['EAX'];
  14. {$endif CPUX86_64}
  15. {$ifdef CPU68K}
  16. move.l stacksize,d0
  17. end ['D0'];
  18. {$endif CPU68K}
  19. {$ifdef cpupowerpc}
  20. {$ifndef macos}
  21. lis r3, stacksize@ha
  22. lwz r3, stacksize@l(r3)
  23. {$else macos}
  24. lwz r3, stacksize(r2)
  25. lwz r3, 0(r3)
  26. {$endif macos}
  27. end;
  28. {$endif cpupowerpc}
  29. {$ifdef cpusparc}
  30. sethi %hi(stacksize),%i0
  31. or %i0,%lo(stacksize),%i0
  32. end;
  33. {$endif cpusparc}
  34. {$ifdef cpuarm}
  35. ldr r0,.Lpstacksize
  36. ldr r0,[r0]
  37. b .Lend
  38. .Lpstacksize:
  39. .long stacksize
  40. .Lend:
  41. end;
  42. {$endif cpuarm}
  43. begin
  44. writeln(getstacksize);
  45. end.