diff --git a/rtl/linux/x86_64/si_c.inc b/rtl/linux/x86_64/si_c.inc index 25c9541c26..f6a60de44c 100644 --- a/rtl/linux/x86_64/si_c.inc +++ b/rtl/linux/x86_64/si_c.inc @@ -128,7 +128,8 @@ procedure _FPC_libc_start; assembler; nostackframe; public name '_start'; {$ifdef FPC_HAS_INDIRECT_ENTRY_INFORMATION} movq SysInitEntryInformation@GOTPCREL(%rip),%rcx - movl %rsi,TEntryInformation.OS.argc(%rcx) + { argc is longint in EntryInformation, thus use %edi register } + movl %esi,TEntryInformation.OS.argc(%rcx) movq %rsp,TEntryInformation.OS.argv(%rcx) movq %rsp,(%rax) leaq 8(,%rsi,8),%rax diff --git a/rtl/linux/x86_64/si_g.inc b/rtl/linux/x86_64/si_g.inc index 5002526582..483bfbdc2a 100644 --- a/rtl/linux/x86_64/si_g.inc +++ b/rtl/linux/x86_64/si_g.inc @@ -93,7 +93,8 @@ procedure ini_dummy; {$ifdef FPC_HAS_INDIRECT_ENTRY_INFORMATION} movq SysInitEntryInformation@GOTPCREL(%rip),%rcx - movl %rsi,TEntryInformation.OS.argc(%rcx) + { argc is longint in EntryInformation, thus use %edi register } + movl %esi,TEntryInformation.OS.argc(%rcx) movq %rsp,TEntryInformation.OS.argv(%rcx) movq %rsp,(%rax) leaq 8(,%rsi,8),%rax