mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-24 22:49:19 +02:00
+ code for coff writer
This commit is contained in:
parent
cbad5f2934
commit
73b33240d5
@ -22,6 +22,7 @@ unit syswin32;
|
||||
interface
|
||||
|
||||
{ include system-independent routine headers }
|
||||
{$ASMMODE ATT}
|
||||
|
||||
{$I systemh.inc}
|
||||
|
||||
@ -183,12 +184,12 @@ begin
|
||||
subl %ebx,%eax
|
||||
movl stacklimit,%ebx
|
||||
cmpl %eax,%ebx
|
||||
jae __short_on_stack
|
||||
jae .L__short_on_stack
|
||||
popl %ebx
|
||||
popl %eax
|
||||
leave
|
||||
ret $4
|
||||
__short_on_stack:
|
||||
.L__short_on_stack:
|
||||
{ can be usefull for error recovery !! }
|
||||
popl %ebx
|
||||
popl %eax
|
||||
@ -240,7 +241,13 @@ end;
|
||||
external 'kernel32' name 'GlobalSize';
|
||||
{$endif}
|
||||
|
||||
{$ASMMODE DIRECT}
|
||||
{$ifdef NEWATT}
|
||||
var heap : longint;external name 'HEAP';
|
||||
var intern_heapsize : longint;external name 'HEAPSIZE';
|
||||
{$else NEWATT}
|
||||
{$asmmode direct}
|
||||
{$endif def NEWATT}
|
||||
|
||||
function getheapstart:pointer;assembler;
|
||||
asm
|
||||
leal HEAP,%eax
|
||||
@ -249,9 +256,12 @@ end ['EAX'];
|
||||
|
||||
function getheapsize:longint;assembler;
|
||||
asm
|
||||
{$ifdef NEWATT}
|
||||
movl intern_HEAPSIZE,%eax
|
||||
{$else}
|
||||
movl HEAPSIZE,%eax
|
||||
{$endif}
|
||||
end ['EAX'];
|
||||
{$ASMMODE ATT}
|
||||
|
||||
|
||||
function Sbrk(size : longint):longint;
|
||||
@ -720,6 +730,10 @@ end;
|
||||
{$endif}
|
||||
|
||||
procedure install_exception_handlers;forward;
|
||||
{$ifdef NEWATT}
|
||||
procedure PascalMain;external name 'PASCALMAIN';
|
||||
procedure fpc_do_exit;external name 'FPC_DO_EXIT';
|
||||
{$endif def NEWATT}
|
||||
|
||||
|
||||
var
|
||||
@ -735,7 +749,6 @@ procedure Exe_entry;[public, alias : '_FPC_EXE_Entry'];
|
||||
install_exception_handlers;
|
||||
{ This strange construction is needed to solve the _SS problem
|
||||
with a smartlinked syswin32 (PFV) }
|
||||
{$ASMMODE ATT}
|
||||
asm
|
||||
pushl %ebp
|
||||
xorl %ebp,%ebp
|
||||
@ -743,7 +756,9 @@ procedure Exe_entry;[public, alias : '_FPC_EXE_Entry'];
|
||||
movl %ebp,_SS
|
||||
xorl %ebp,%ebp
|
||||
end;
|
||||
{$ifndef NEWATT}
|
||||
{$ASMMODE DIRECT}
|
||||
{$endif ndef NEWATT}
|
||||
asm
|
||||
call PASCALMAIN
|
||||
popl %ebp
|
||||
@ -752,6 +767,7 @@ procedure Exe_entry;[public, alias : '_FPC_EXE_Entry'];
|
||||
ExitProcess(0);
|
||||
end;
|
||||
|
||||
{$ASMMODE ATT}
|
||||
|
||||
procedure Dll_entry;[public, alias : '_FPC_DLL_Entry'];
|
||||
begin
|
||||
@ -759,14 +775,15 @@ procedure Dll_entry;[public, alias : '_FPC_DLL_Entry'];
|
||||
case DLLreason of
|
||||
1,2 :
|
||||
begin
|
||||
{$ASMMODE ATT}
|
||||
asm
|
||||
xorl %edi,%edi
|
||||
movw %ss,%di
|
||||
movl %edi,_SS
|
||||
end;
|
||||
{$ifndef NEWATT}
|
||||
{$ASMMODE DIRECT}
|
||||
{$endif ndef NEWATT}
|
||||
asm
|
||||
movl %edi,_SS
|
||||
call PASCALMAIN
|
||||
end;
|
||||
end
|
||||
@ -778,8 +795,8 @@ procedure Dll_entry;[public, alias : '_FPC_DLL_Entry'];
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
{$ASMMODE ATT}
|
||||
|
||||
{$ASMMODE ATT}
|
||||
|
||||
{$ifdef Set_i386_Exception_handler}
|
||||
|
||||
@ -977,7 +994,10 @@ end.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.34 1999-03-10 22:15:31 florian
|
||||
Revision 1.35 1999-03-12 00:07:48 pierre
|
||||
+ code for coff writer
|
||||
|
||||
Revision 1.34 1999/03/10 22:15:31 florian
|
||||
+ system.cmdline variable for go32v2 and win32 added
|
||||
|
||||
Revision 1.33 1999/01/18 10:05:57 pierre
|
||||
|
Loading…
Reference in New Issue
Block a user