summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsvenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2>2015-11-22 18:13:20 +0000
committersvenbarth <svenbarth@3ad0048d-3df7-0310-abae-a5850022a9f2>2015-11-22 18:13:20 +0000
commitf66b9f4c81a917c6900a85bd7e6371503448df5b (patch)
tree29fdfa00fbb5c45aa98c2c1e38ceb57c7aa4610c
parentbd62be9970660f4a265b1fc8c5be50b8858092e3 (diff)
downloadfpc-f66b9f4c81a917c6900a85bd7e6371503448df5b.tar.gz
Improve PIC startup code when not using C libraries. It correctly reaches PascalMain, but it crashes inside fpc_cpucodeinit when setting has_mmx_support :/
git-svn-id: http://svn.freepascal.org/svn/fpc/branches/svenbarth@32497 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--packages/rtl/linux/i386/si_prc.inc15
1 files changed, 8 insertions, 7 deletions
diff --git a/packages/rtl/linux/i386/si_prc.inc b/packages/rtl/linux/i386/si_prc.inc
index 39d21583c8..846762a4bd 100644
--- a/packages/rtl/linux/i386/si_prc.inc
+++ b/packages/rtl/linux/i386/si_prc.inc
@@ -107,22 +107,23 @@ asm
addl $_GLOBAL_OFFSET_TABLE_,%ebx
movl SysInitEntryInformation@GOT(%ebx),%ecx
- movl %eax,SysInitEntryInformation.Platform.envp(%ebx)
+
+ movl %eax,TEntryInformation.Platform.envp(%ecx)
popl %eax
- movl %eax,SysInitEntryInformation.Platform.argc(%ebx)
+ movl %eax,TEntryInformation.Platform.argc(%ecx)
popl %eax
- movl %eax,SysInitEntryInformation.Platform.argv(%ebx)
+ movl %eax,TEntryInformation.Platform.argv(%ecx)
- leal _FPC_proc_haltproc,%eax
- movl %eax,SysInitEntryInformation.Platform.haltproc(%ebx)
+ movl _FPC_proc_haltproc@GOT(%ebx),%eax
+ movl %eax,TEntryInformation.Platform.haltproc(%ecx)
call SysResetFPU
- movl %esp,SysInitEntryInformation.Platform.stkptr(%ebx)
+ movl %esp,TEntryInformation.Platform.stkptr(%ecx)
- movl %ebx,%eax
+ movl %ecx,%eax
{$else FPC_PIC}
movl %eax,SysInitEntryInformation.Platform.envp
movl %ecx,SysInitEntryInformation.Platform.argc