mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-08 21:48:09 +02:00
* updated the asm parts of the i386 OpenBSD startup code as well
git-svn-id: trunk@42080 -
This commit is contained in:
parent
806b65da6b
commit
e0b523ef14
@ -42,15 +42,16 @@ ___fpc_brk_addr:
|
||||
.globl _start
|
||||
_start:
|
||||
__start:
|
||||
pushl %ebx #ps_strings
|
||||
pushl %ecx # obj
|
||||
pushl %edx # cleanup
|
||||
movl 12(%esp),%eax
|
||||
leal 20(%esp,%eax,4),%ecx
|
||||
leal 16(%esp),%edx
|
||||
movl %esp,%ebp
|
||||
andl $~15,%esp
|
||||
pushl %edx
|
||||
movl 0(%ebp),%eax
|
||||
leal 8(%ebp,%eax,4),%ecx
|
||||
leal 4(%ebp),%edx
|
||||
pushl %ecx
|
||||
pushl %edx
|
||||
pushl %eax
|
||||
xorl %ebp,%ebp
|
||||
call ___start
|
||||
|
||||
#NO_APP
|
||||
|
@ -19,25 +19,26 @@
|
||||
procedure __init; cdecl; external name '__init';
|
||||
procedure c_exit(exit_code: cint); cdecl; noreturn; external name 'exit';
|
||||
|
||||
procedure _FPC_proc___start(argc: LongInt; argv: PPChar; envp: Pointer; para1, para2, para3: QWord); cdecl; forward;
|
||||
procedure _FPC_proc___start(argc: LongInt; argv: PPChar; envp: Pointer; cleanup: TCdeclProcedure); cdecl; forward;
|
||||
|
||||
procedure _FPC_proc_start; assembler; nostackframe; public name '_start'; public name '__start';
|
||||
asm
|
||||
pushl %ebx { ps_strings }
|
||||
pushl %ecx { obj }
|
||||
pushl %edx { cleanup }
|
||||
movl 12(%esp),%eax
|
||||
leal 20(%esp,%eax,4),%ecx
|
||||
leal 16(%esp),%edx
|
||||
movl %esp,%ebp
|
||||
andl $0xFFFFFFF0,%esp
|
||||
pushl %edx
|
||||
movl 0(%ebp),%eax
|
||||
leal 8(%ebp,%eax,4),%ecx
|
||||
leal 4(%ebp),%edx
|
||||
pushl %ecx
|
||||
pushl %edx
|
||||
pushl %eax
|
||||
xorl %ebp,%ebp
|
||||
call _FPC_proc___start
|
||||
end;
|
||||
|
||||
function _strrchr(str: PChar; character: LongInt): PChar; forward;
|
||||
|
||||
procedure _FPC_proc___start(argc: LongInt; argv: PPChar; envp: Pointer; para1, para2, para3: QWord); cdecl;
|
||||
procedure _FPC_proc___start(argc: LongInt; argv: PPChar; envp: Pointer; cleanup: TCdeclProcedure); cdecl;
|
||||
var
|
||||
I: SizeUInt;
|
||||
begin
|
||||
|
@ -26,25 +26,26 @@ procedure _monstartup(lowpc, highpc: u_long); cdecl; external name '_monstartup'
|
||||
procedure __init; cdecl; external name '__init';
|
||||
procedure c_exit(exit_code: cint); cdecl; noreturn; external name 'exit';
|
||||
|
||||
procedure _FPC_proc___start(argc: LongInt; argv: PPChar; envp: Pointer; para1, para2, para3: QWord); cdecl; forward;
|
||||
procedure _FPC_proc___start(argc: LongInt; argv: PPChar; envp: Pointer; cleanup: TCdeclProcedure); cdecl; forward;
|
||||
|
||||
procedure _FPC_proc_start; assembler; nostackframe; public name '_start'; public name '__start';
|
||||
asm
|
||||
pushl %ebx { ps_strings }
|
||||
pushl %ecx { obj }
|
||||
pushl %edx { cleanup }
|
||||
movl 12(%esp),%eax
|
||||
leal 20(%esp,%eax,4),%ecx
|
||||
leal 16(%esp),%edx
|
||||
movl %esp,%ebp
|
||||
andl $0xFFFFFFF0,%esp
|
||||
pushl %edx
|
||||
movl 0(%ebp),%eax
|
||||
leal 8(%ebp,%eax,4),%ecx
|
||||
leal 4(%ebp),%edx
|
||||
pushl %ecx
|
||||
pushl %edx
|
||||
pushl %eax
|
||||
xorl %ebp,%ebp
|
||||
call _FPC_proc___start
|
||||
end;
|
||||
|
||||
function _strrchr(str: PChar; character: LongInt): PChar; forward;
|
||||
|
||||
procedure _FPC_proc___start(argc: LongInt; argv: PPChar; envp: Pointer; para1, para2, para3: QWord); cdecl;
|
||||
procedure _FPC_proc___start(argc: LongInt; argv: PPChar; envp: Pointer; cleanup: TCdeclProcedure); cdecl;
|
||||
var
|
||||
I: SizeUInt;
|
||||
begin
|
||||
|
@ -16,26 +16,27 @@
|
||||
|
||||
{$asmmode att}
|
||||
|
||||
procedure _FPC_proc___start(argc: LongInt; argv: PPChar; envp: Pointer; para1, para2, para3: QWord); cdecl; forward;
|
||||
procedure _FPC_proc___start(argc: LongInt; argv: PPChar; envp: Pointer; cleanup: TCdeclProcedure); cdecl; forward;
|
||||
|
||||
procedure _FPC_proc_start; assembler; nostackframe; public name '_start'; public name '__start';
|
||||
asm
|
||||
pushl %ebx { ps_strings }
|
||||
pushl %ecx { obj }
|
||||
pushl %edx { cleanup }
|
||||
movl 12(%esp),%eax
|
||||
leal 20(%esp,%eax,4),%ecx
|
||||
leal 16(%esp),%edx
|
||||
movl %esp,%ebp
|
||||
andl $0xFFFFFFF0,%esp
|
||||
pushl %edx
|
||||
movl 0(%ebp),%eax
|
||||
leal 8(%ebp,%eax,4),%ecx
|
||||
leal 4(%ebp),%edx
|
||||
pushl %ecx
|
||||
pushl %edx
|
||||
pushl %eax
|
||||
xorl %ebp,%ebp
|
||||
call _FPC_proc___start
|
||||
end;
|
||||
|
||||
procedure _FPC_proc_haltproc; cdecl; noreturn; forward;
|
||||
function _strrchr(str: PChar; character: LongInt): PChar; forward;
|
||||
|
||||
procedure _FPC_proc___start(argc: LongInt; argv: PPChar; envp: Pointer; para1, para2, para3: QWord); cdecl;
|
||||
procedure _FPC_proc___start(argc: LongInt; argv: PPChar; envp: Pointer; cleanup: TCdeclProcedure); cdecl;
|
||||
var
|
||||
I: SizeUInt;
|
||||
begin
|
||||
|
Loading…
Reference in New Issue
Block a user