Browse Source

* use external names
* removed all direct assembler modes

peter 26 years ago
parent
commit
af8a04a5af

+ 13 - 5
rtl/go32v2/dos.pp

@@ -630,7 +630,12 @@ begin
 end;
 end;
 
 
 
 
-{$ASMMODE DIRECT}
+var
+  _swap_in  : pointer;external name '_swap_in';
+  _swap_out : pointer;external name '_swap_out';
+  _exception_exit : pointer;external name '_exception_exit';
+  _v2prt0_exceptions_on : longbool;external name '_v2prt0_exceptions_on';
+
 procedure swapvectors;
 procedure swapvectors;
 begin
 begin
   DosError:=0;
   DosError:=0;
@@ -644,15 +649,14 @@ begin
             orl  %eax,%eax
             orl  %eax,%eax
             je   .Lexceptions_off
             je   .Lexceptions_off
             movl _swap_out,%eax
             movl _swap_out,%eax
-            call *%eax
+            call  %eax
             jmp  .Lno_excep
             jmp  .Lno_excep
          .Lexceptions_off:
          .Lexceptions_off:
             movl _swap_in,%eax
             movl _swap_in,%eax
-            call *%eax
+            call %eax
          .Lno_excep:
          .Lno_excep:
   end;
   end;
 end;
 end;
-{$ASMMODE ATT}
 
 
 
 
 {******************************************************************************
 {******************************************************************************
@@ -986,7 +990,11 @@ End;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.3  1999-01-22 15:44:59  pierre
+  Revision 1.4  1999-03-01 15:40:48  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.3  1999/01/22 15:44:59  pierre
    Daniel change removed : broke make cycle !!
    Daniel change removed : broke make cycle !!
 
 
   Revision 1.2  1999/01/22 10:07:03  daniel
   Revision 1.2  1999/01/22 10:07:03  daniel

+ 47 - 60
rtl/go32v2/dpmiexcp.pp

@@ -106,7 +106,7 @@ function dpmi_set_coprocessor_emulation(flag : longint) : longint;
 
 
 implementation
 implementation
 
 
-{$ASMMODE DIRECT}
+{$asmmode ATT}
 
 
 {$L exceptn.o}
 {$L exceptn.o}
 
 
@@ -123,8 +123,8 @@ var
   djgpp_dos_sel : word;external name '___djgpp_dos_sel';
   djgpp_dos_sel : word;external name '___djgpp_dos_sel';
   djgpp_exception_table : array[0..0] of pointer;external name '___djgpp_exception_table';
   djgpp_exception_table : array[0..0] of pointer;external name '___djgpp_exception_table';
 
 
-procedure djgpp_i24;external name ' ___djgpp_i24';
-procedure djgpp_iret;external name ' ___djgpp_iret';
+procedure djgpp_i24;external name '___djgpp_i24';
+procedure djgpp_iret;external name '___djgpp_iret';
 procedure djgpp_npx_hdlr;external name '___djgpp_npx_hdlr';
 procedure djgpp_npx_hdlr;external name '___djgpp_npx_hdlr';
 procedure djgpp_kbd_hdlr;external name '___djgpp_kbd_hdlr';
 procedure djgpp_kbd_hdlr;external name '___djgpp_kbd_hdlr';
 procedure djgpp_kbd_hdlr_pc98;external name '___djgpp_kbd_hdlr_pc98';
 procedure djgpp_kbd_hdlr_pc98;external name '___djgpp_kbd_hdlr_pc98';
@@ -133,8 +133,8 @@ procedure djgpp_cbrk_hdlr;external name '___djgpp_cbrk_hdlr';
 
 
 var
 var
   exceptions_on : boolean;
   exceptions_on : boolean;
-  old_int00 : tseginfo;cvar;external;
-  old_int75 : tseginfo;cvar;external;
+{  old_int00 : tseginfo;cvar;external;
+  old_int75 : tseginfo;cvar;external; }
 
 
 const
 const
   cbrk_vect : byte = $1b;
   cbrk_vect : byte = $1b;
@@ -188,12 +188,12 @@ end;
         movl    12(%esp),%eax
         movl    12(%esp),%eax
         movl    %eax,8(%esp)
         movl    %eax,8(%esp)
         popl    %eax
         popl    %eax
-        jmp     FPC_setjmp
+        jmp     dpmi_setjmp
      end;
      end;
   end;
   end;
-  
-  
-function dpmi_setjmp(var rec : dpmi_jmp_buf) : longint;[alias : 'FPC_setjmp'];
+
+
+function dpmi_setjmp(var rec : dpmi_jmp_buf) : longint;
 begin
 begin
   asm
   asm
         pushl   %edi
         pushl   %edi
@@ -229,7 +229,7 @@ begin
         movw    %fs,46(%edi)
         movw    %fs,46(%edi)
         movw    %gs,48(%edi)
         movw    %gs,48(%edi)
         movw    %ss,50(%edi)
         movw    %ss,50(%edi)
-        movl    ___djgpp_exception_state_ptr, %eax
+        movl    djgpp_exception_state_ptr, %eax
         movl    %eax, 60(%edi)
         movl    %eax, 60(%edi)
         { restore EDI }
         { restore EDI }
         pop     %edi
         pop     %edi
@@ -275,31 +275,24 @@ begin
         movl    28(%edi),%esi
         movl    28(%edi),%esi
         subl    $28,%esi        { We need 7 working longwords on stack }
         subl    $28,%esi        { We need 7 working longwords on stack }
         movl    60(%edi),%eax
         movl    60(%edi),%eax
-        es
-        movl    %eax,(%esi)     { Exception pointer }
+        movl    %eax,%es:(%esi)     { Exception pointer }
         movzwl  42(%edi),%eax
         movzwl  42(%edi),%eax
-        es
-        movl    %eax,4(%esi)    { DS }
+        movl    %eax,%es:4(%esi)    { DS }
         movl    20(%edi),%eax
         movl    20(%edi),%eax
-        es
-        movl    %eax,8(%esi)    { EDI }
+        movl    %eax,%es:8(%esi)    { EDI }
         movl    16(%edi),%eax
         movl    16(%edi),%eax
-        es
-        movl    %eax,12(%esi)   { ESI }
+        movl    %eax,%es:12(%esi)   { ESI }
         movl    32(%edi),%eax
         movl    32(%edi),%eax
-        es
-        movl    %eax,16(%esi)   { EIP - start of IRET frame }
+        movl    %eax,%es:16(%esi)   { EIP - start of IRET frame }
         movl    40(%edi),%eax
         movl    40(%edi),%eax
-        es
-        movl    %eax,20(%esi)   { CS }
+        movl    %eax,%es:20(%esi)   { CS }
         movl    36(%edi),%eax
         movl    36(%edi),%eax
-        es
-        movl    %eax,24(%esi)   { EFLAGS }
+        movl    %eax,%es:24(%esi)   { EFLAGS }
         movl    0(%edi),%eax
         movl    0(%edi),%eax
         movw    44(%edi),%es
         movw    44(%edi),%es
         movw    50(%edi),%ss
         movw    50(%edi),%ss
         movl    %esi,%esp
         movl    %esi,%esp
-        popl    ___djgpp_exception_state_ptr
+        popl    djgpp_exception_state_ptr
         popl    %ds
         popl    %ds
         popl    %edi
         popl    %edi
         popl    %esi
         popl    %esi
@@ -501,6 +494,8 @@ end;
 
 
 const message_level : byte = 0;
 const message_level : byte = 0;
 
 
+procedure ___exit(c:byte);cdecl;external name '___exit';
+
 function do_faulting_finish_message : integer;
 function do_faulting_finish_message : integer;
 var
 var
   en : pchar;
   en : pchar;
@@ -615,16 +610,13 @@ begin
 simple_exit:
 simple_exit:
   if exceptions_on then
   if exceptions_on then
     djgpp_exception_toggle;
     djgpp_exception_toggle;
-  asm
-     pushw $1
-     call  ___exit
-  end;
+  ___exit(1);
 end;
 end;
 
 
 
 
 function djgpp_exception_state:pexception_state;assembler;
 function djgpp_exception_state:pexception_state;assembler;
 asm
 asm
-        movl    ___djgpp_exception_state_ptr,%eax
+        movl    djgpp_exception_state_ptr,%eax
 end;
 end;
 
 
 
 
@@ -636,9 +628,9 @@ begin
     exception_level:=1
     exception_level:=1
   else
   else
     inc(exception_level);
     inc(exception_level);
-    
+
   sig:=djgpp_exception_state_ptr^.__signum;
   sig:=djgpp_exception_state_ptr^.__signum;
-  
+
   if (exception_level=1) or (sig=$78) then
   if (exception_level=1) or (sig=$78) then
     begin
     begin
        sig := except_to_sig(sig);
        sig := except_to_sig(sig);
@@ -684,14 +676,13 @@ var
   cbrk_ori,
   cbrk_ori,
   cbrk_rmcb  : trealseginfo;
   cbrk_rmcb  : trealseginfo;
   cbrk_regs  : registers;
   cbrk_regs  : registers;
-
+  v2prt0_exceptions_on : longbool;external name '_v2prt0_exceptions_on';
 
 
 
 
 procedure djgpp_exception_toggle;[alias : '___djgpp_exception_toggle'];
 procedure djgpp_exception_toggle;[alias : '___djgpp_exception_toggle'];
 var
 var
   _except : tseginfo;
   _except : tseginfo;
   i : longint;
   i : longint;
-  local_ex : boolean;
 begin
 begin
 {$ifdef DPMIEXCP_DEBUG}
 {$ifdef DPMIEXCP_DEBUG}
   if exceptions_on then
   if exceptions_on then
@@ -702,11 +693,7 @@ begin
   { toggle here to avoid infinite recursion }
   { toggle here to avoid infinite recursion }
   { if a subfunction calls runerror !!      }
   { if a subfunction calls runerror !!      }
   exceptions_on:=not exceptions_on;
   exceptions_on:=not exceptions_on;
-  local_ex:=exceptions_on;
-  asm
-        movzbl  local_ex,%eax
-        movl    %eax,_v2prt0_exceptions_on
-  end;
+  v2prt0_exceptions_on:=exceptions_on;
   for i:=0 to EXCEPTIONCOUNT-1 do
   for i:=0 to EXCEPTIONCOUNT-1 do
    begin
    begin
      if get_pm_exception_handler(i,_except) then
      if get_pm_exception_handler(i,_except) then
@@ -779,6 +766,11 @@ begin
 end;
 end;
 
 
 
 
+var
+  _swap_in  : pointer;external name '_swap_in';
+  _swap_out : pointer;external name '_swap_out';
+  _exception_exit : pointer;external name '_exception_exit';
+
 procedure dpmiexcp_exit{(status : longint)};[public,alias : 'excep_exit'];
 procedure dpmiexcp_exit{(status : longint)};[public,alias : 'excep_exit'];
 { We need to restore hardware interrupt handlers even if somebody calls
 { We need to restore hardware interrupt handlers even if somebody calls
   `_exit' directly, or else we crash the machine in nested programs.
   `_exit' directly, or else we crash the machine in nested programs.
@@ -787,12 +779,9 @@ procedure dpmiexcp_exit{(status : longint)};[public,alias : 'excep_exit'];
 begin
 begin
   if (exceptions_on) then
   if (exceptions_on) then
     djgpp_exception_toggle;
     djgpp_exception_toggle;
-  asm
-        xorl    %eax,%eax
-        movl    %eax,_exception_exit
-        movl    %eax,_swap_in
-        movl    %eax,_swap_out
-  end;
+  _exception_exit:=nil;
+  _swap_in:=nil;
+  _swap_out:=nil;
   { restore the FPU state }
   { restore the FPU state }
   dpmi_set_coprocessor_emulation(1);
   dpmi_set_coprocessor_emulation(1);
 end;
 end;
@@ -815,6 +804,9 @@ begin
 end;
 end;
 
 
 
 
+var
+  ___djgpp_app_DS : word;external name '___djgpp_app_DS';
+  ___djgpp_our_DS : word;external name '___djgpp_our_DS';
 
 
 procedure djgpp_exception_setup;[alias : '___djgpp_exception_setup'];
 procedure djgpp_exception_setup;[alias : '___djgpp_exception_setup'];
 var
 var
@@ -825,17 +817,11 @@ var
   locksize    : longint;
   locksize    : longint;
   i           : longint;
   i           : longint;
 begin
 begin
-  asm
-        movl    _exception_exit,%eax
-        xorl    %eax,%eax
-        jne     .L_already
-        leal    excep_exit,%eax
-        movl    %eax,_exception_exit
-        leal    swap_in,%eax
-        movl    %eax,_swap_in
-        leal    swap_out,%eax
-        movl    %eax,_swap_out
-  end;
+  if assigned(_exception_exit) then
+   exit;
+  _exception_exit:=@dpmiexcp_exit;
+  _swap_in:=@dpmi_swap_in;
+  _swap_out:=@dpmi_swap_out;
 { reset signals }
 { reset signals }
   for i := 0 to  SIGMAX-1 do
   for i := 0 to  SIGMAX-1 do
    signal_list[i] := SignalHandler(@SIG_DFL);
    signal_list[i] := SignalHandler(@SIG_DFL);
@@ -872,9 +858,6 @@ begin
   djgpp_exception_toggle;    { Set new values & save old values }
   djgpp_exception_toggle;    { Set new values & save old values }
 { get original video mode and save }
 { get original video mode and save }
   old_video_mode := farpeekb(dosmemselector, $449);
   old_video_mode := farpeekb(dosmemselector, $449);
-  asm
-        .L_already:
-  end;
 end;
 end;
 
 
 
 
@@ -907,7 +890,11 @@ begin
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.6  1999-02-05 12:49:25  pierre
+  Revision 1.7  1999-03-01 15:40:49  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.6  1999/02/05 12:49:25  pierre
    <> debug conditionnal renamed DPMIEXCP_DEBUG
    <> debug conditionnal renamed DPMIEXCP_DEBUG
 
 
   Revision 1.5  1999/01/22 15:46:33  pierre
   Revision 1.5  1999/01/22 15:46:33  pierre

+ 12 - 4
rtl/go32v2/emu387.pp

@@ -21,6 +21,8 @@ procedure npxsetup(prog_name : string);
 
 
 implementation
 implementation
 
 
+{$asmmode ATT}
+
 uses
 uses
   dxeload,dpmiexcp,strings;
   dxeload,dpmiexcp,strings;
 
 
@@ -46,12 +48,12 @@ begin
 
 
         movl    mask2, %ecx
         movl    mask2, %ecx
         notl    %ecx
         notl    %ecx
-        andl    %eax, %ecx      /* the bits we want to keep */
+        andl    %eax, %ecx      { the bits we want to keep }
 
 
         movl    mask2, %edx
         movl    mask2, %edx
-        andl    mask1, %edx      /* the bits we want to change */
+        andl    mask1, %edx      { the bits we want to change }
 
 
-        orl     %ecx, %edx      /* the new value */
+        orl     %ecx, %edx      { the new value }
         pushl   %edx
         pushl   %edx
         fldcw   (%esp)
         fldcw   (%esp)
         popl    %edx
         popl    %edx
@@ -137,6 +139,8 @@ begin
 end;
 end;
 
 
 
 
+function __detect_80387:byte;external name '__detect_80387';
+
 procedure npxsetup(prog_name : string);
 procedure npxsetup(prog_name : string);
 var
 var
   cp : string;
   cp : string;
@@ -212,7 +216,11 @@ begin
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.1  1998-12-21 13:07:02  peter
+  Revision 1.2  1999-03-01 15:40:50  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.1  1998/12/21 13:07:02  peter
     * use -FE
     * use -FE
 
 
   Revision 1.9  1998/10/26 14:49:45  pierre
   Revision 1.9  1998/10/26 14:49:45  pierre

+ 23 - 8
rtl/go32v2/go32.pp

@@ -210,6 +210,8 @@ var
 
 
   implementation
   implementation
 
 
+{$asmmode ATT}
+
 
 
     { the following procedures copy from and to DOS memory using DPMI }
     { the following procedures copy from and to DOS memory using DPMI }
     procedure dpmi_dosmemput(seg : word;ofs : word;var data;count : longint);
     procedure dpmi_dosmemput(seg : word;ofs : word;var data;count : longint);
@@ -538,20 +540,20 @@ end ['EAX','EDX'];
       end;
       end;
 
 
 
 
-    procedure test_int31(flag : longint);[alias : 'test_int31'];
+    procedure test_int31(flag : longint);
       begin
       begin
          asm
          asm
             pushl %ebx
             pushl %ebx
-            movw  $0,U_GO32_INT31ERROR
+            movw  $0,INT31ERROR
             movl  flag,%ebx
             movl  flag,%ebx
             testb $1,%bl
             testb $1,%bl
-            jz    1f
-            movw  %ax,U_GO32_INT31ERROR
+            jz    .Lti31_1
+            movw  %ax,INT31ERROR
             xorl  %eax,%eax
             xorl  %eax,%eax
-            jmp   2f
-            1:
+            jmp   .Lti31_2
+            .Lti31_1:
             movl  $1,%eax
             movl  $1,%eax
-            2:
+            .Lti31_2:
             popl  %ebx
             popl  %ebx
          end;
          end;
       end;
       end;
@@ -702,6 +704,8 @@ end ['EAX','EDX'];
     { here we must use ___v2prt0_ds_alias instead of from v2prt0.s
     { here we must use ___v2prt0_ds_alias instead of from v2prt0.s
     because the exception processor sets the ds limit to $fff
     because the exception processor sets the ds limit to $fff
     at hardware exceptions }
     at hardware exceptions }
+    var
+       ___v2prt0_ds_alias : word;external name '___v2prt0_ds_alias';
 
 
     function get_rm_callback(pm_func : pointer;const reg : trealregs;var rmcb : tseginfo) : boolean;
     function get_rm_callback(pm_func : pointer;const reg : trealregs;var rmcb : tseginfo) : boolean;
       begin
       begin
@@ -1072,6 +1076,10 @@ end ['EAX','EDX'];
          sti
          sti
       end;
       end;
 
 
+
+    var
+      _run_mode : word;external name '_run_mode';
+
     function get_run_mode : word;
     function get_run_mode : word;
 
 
       begin
       begin
@@ -1097,6 +1105,9 @@ end ['EAX','EDX'];
          end;
          end;
       end;
       end;
 
 
+    var
+      _core_selector : word;external name '_core_selector';
+
     function get_core_selector : word;
     function get_core_selector : word;
 
 
       begin
       begin
@@ -1159,7 +1170,11 @@ end.
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.1  1998-12-21 13:07:03  peter
+  Revision 1.2  1999-03-01 15:40:51  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.1  1998/12/21 13:07:03  peter
     * use -FE
     * use -FE
 
 
   Revision 1.12  1998/08/27 10:30:50  pierre
   Revision 1.12  1998/08/27 10:30:50  pierre

+ 39 - 50
rtl/go32v2/system.pp

@@ -138,7 +138,7 @@ var
   old_int75 : tseginfo;cvar;
   old_int75 : tseginfo;cvar;
 
 
 
 
-{$ASMMODE DIRECT}
+{$ASMMODE ATT}
 
 
 {*****************************************************************************
 {*****************************************************************************
                               Go32 Helpers
                               Go32 Helpers
@@ -163,8 +163,6 @@ asm
 end;
 end;
 end;
 end;
 
 
-{$ASMMODE ATT}
-
 
 
 function tb : longint;
 function tb : longint;
 begin
 begin
@@ -294,14 +292,14 @@ begin
   atohex:=rv;
   atohex:=rv;
 end;
 end;
 
 
-
+var
+  _args : ppchar;external name '_args';
 procedure setup_arguments;
 procedure setup_arguments;
 type  arrayword = array [0..0] of word;
 type  arrayword = array [0..0] of word;
 var psp : word;
 var psp : word;
     i,j : byte;
     i,j : byte;
     quote : char;
     quote : char;
     proxy_s : string[7];
     proxy_s : string[7];
-    tempargv : ppchar;
     al,proxy_argc,proxy_seg,proxy_ofs,lin : longint;
     al,proxy_argc,proxy_seg,proxy_ofs,lin : longint;
     largs : array[0..127] of pchar;
     largs : array[0..127] of pchar;
     rm_argv : ^arrayword;
     rm_argv : ^arrayword;
@@ -382,13 +380,7 @@ if (argc > 1) and (far_strlen(get_ds,longint(largs[1])) = 6)  then
 getmem(argv,argc shl 2);
 getmem(argv,argc shl 2);
 for i := 0 to argc-1  do
 for i := 0 to argc-1  do
    argv[i] := largs[i];
    argv[i] := largs[i];
-  tempargv:=argv;
-{$ASMMODE DIRECT}
-  asm
-     movl tempargv,%eax
-     movl %eax,_args
-  end;
-{$ASMMODE ATT}
+  _args:=argv;
 end;
 end;
 
 
 
 
@@ -419,19 +411,15 @@ begin
 end;
 end;
 
 
 
 
+var
+  __stubinfo : p_stub_info;external name '__stubinfo';
+  ___dos_argv0 : pchar;external name '___dos_argv0';
 procedure setup_environment;
 procedure setup_environment;
 var env_selector : word;
 var env_selector : word;
     env_count : longint;
     env_count : longint;
     dos_env,cp : pchar;
     dos_env,cp : pchar;
-    stubaddr : p_stub_info;
 begin
 begin
-{$ASMMODE DIRECT}
-   asm
-   movl __stubinfo,%eax
-   movl %eax,stubaddr
-   end;
-{$ASMMODE ATT}
-   stub_info:=stubaddr;
+   stub_info:=__stubinfo;
    getmem(dos_env,stub_info^.env_size);
    getmem(dos_env,stub_info^.env_size);
    env_count:=0;
    env_count:=0;
    sysseg_move(stub_info^.psp_selector,$2c, get_ds, longint(@env_selector), 2);
    sysseg_move(stub_info^.psp_selector,$2c, get_ds, longint(@env_selector), 2);
@@ -465,12 +453,7 @@ begin
   if (dos_argv0 = nil) then halt;
   if (dos_argv0 = nil) then halt;
   strcopy(dos_argv0, cp);
   strcopy(dos_argv0, cp);
   { update ___dos_argv0 also }
   { update ___dos_argv0 also }
-{$ASMMODE DIRECT}
-  asm
-     movl U_SYSTEM_DOS_ARGV0,%eax
-     movl %eax,___dos_argv0
-  end;
-{$ASMMODE ATT}
+  ___dos_argv0:=dos_argv0
 end;
 end;
 
 
 
 
@@ -545,12 +528,14 @@ end;
 {*****************************************************************************
 {*****************************************************************************
                          System Dependent Exit code
                          System Dependent Exit code
 *****************************************************************************}
 *****************************************************************************}
+
+procedure ___exit(exitcode:byte);cdecl;external name '___exit';
+
 Procedure system_exit;
 Procedure system_exit;
-{$ASMMODE DIRECT}
 {$ifdef SYSTEMDEBUG}
 {$ifdef SYSTEMDEBUG}
-  var h : byte;
+var
+  h : byte;
 {$endif SYSTEMDEBUG}
 {$endif SYSTEMDEBUG}
-
 begin
 begin
 {$ifdef SYSTEMDEBUG}
 {$ifdef SYSTEMDEBUG}
   for h:=0 to max_files do
   for h:=0 to max_files do
@@ -561,15 +546,11 @@ begin
   { not on normal exit !! PM }
   { not on normal exit !! PM }
   set_pm_interrupt($00,old_int00);
   set_pm_interrupt($00,old_int00);
   set_pm_interrupt($75,old_int75);
   set_pm_interrupt($75,old_int75);
-  asm
-        movzbw  exitcode,%ax
-        pushw   %ax
-        call    ___exit         {frees all dpmi memory !!}
-  end;
+  ___exit(exitcode);
 end;
 end;
 
 
-procedure halt(errnum : byte);
 
 
+procedure halt(errnum : byte);
 begin
 begin
   exitcode:=errnum;
   exitcode:=errnum;
   do_exit;
   do_exit;
@@ -595,6 +576,9 @@ begin
 end;
 end;
 
 
 
 
+var
+  __stkbottom : longint;external name '__stkbottom';
+
 procedure int_stackcheck(stack_size:longint);[public,alias:'FPC_STACKCHECK'];
 procedure int_stackcheck(stack_size:longint);[public,alias:'FPC_STACKCHECK'];
 {
 {
   called when trying to get local stack if the compiler directive $S
   called when trying to get local stack if the compiler directive $S
@@ -613,10 +597,10 @@ begin
         movl    %esp,%eax
         movl    %esp,%eax
         subl    %ebx,%eax
         subl    %ebx,%eax
 {$ifdef SYSTEMDEBUG}
 {$ifdef SYSTEMDEBUG}
-        movl    U_SYSTEM_LOWESTSTACK,%ebx
+        movl    loweststack,%ebx
         cmpl    %eax,%ebx
         cmpl    %eax,%ebx
         jb      .L_is_not_lowest
         jb      .L_is_not_lowest
-        movl    %eax,U_SYSTEM_LOWESTSTACK
+        movl    %eax,loweststack
 .L_is_not_lowest:
 .L_is_not_lowest:
 {$endif SYSTEMDEBUG}
 {$endif SYSTEMDEBUG}
         movl    __stkbottom,%ebx
         movl    __stkbottom,%ebx
@@ -633,8 +617,6 @@ begin
   end['EAX','EBX'];
   end['EAX','EBX'];
   HandleError(202);
   HandleError(202);
 end;
 end;
-{$ASMMODE ATT}
-
 
 
 
 
 {*****************************************************************************
 {*****************************************************************************
@@ -671,19 +653,23 @@ end;
                               Heap Management
                               Heap Management
 *****************************************************************************}
 *****************************************************************************}
 
 
-{$ASMMODE DIRECT}
+var
+  int_heap : longint;external name 'HEAP';
+  int_heapsize : longint;external name 'HEAPSIZE';
+
+function getheapstart:pointer;
+begin
+  getheapstart:=@int_heap;
+end;
 
 
-function getheapstart:pointer;assembler;
-asm
-        leal    HEAP,%eax
-end ['EAX'];
 
 
+function getheapsize:longint;
+begin
+  getheapsize:=int_heapsize;
+end;
 
 
-function getheapsize:longint;assembler;
-asm
-        movl    HEAPSIZE,%eax
-end ['EAX'];
 
 
+function ___sbrk(size:longint):longint;cdecl;external name '___sbrk';
 
 
 function Sbrk(size : longint):longint;assembler;
 function Sbrk(size : longint):longint;assembler;
 asm
 asm
@@ -693,7 +679,6 @@ asm
         addl    $4,%esp
         addl    $4,%esp
 end;
 end;
 
 
-{$ASMMODE ATT}
 
 
 { include standard heap management }
 { include standard heap management }
 {$I heap.inc}
 {$I heap.inc}
@@ -1237,7 +1222,11 @@ Begin
 End.
 End.
 {
 {
   $Log$
   $Log$
-  Revision 1.5  1999-01-18 10:05:50  pierre
+  Revision 1.6  1999-03-01 15:40:52  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.5  1999/01/18 10:05:50  pierre
    + system_exit procedure added
    + system_exit procedure added
 
 
   Revision 1.4  1998/12/30 22:17:59  peter
   Revision 1.4  1998/12/30 22:17:59  peter

File diff suppressed because it is too large
+ 568 - 567
rtl/go32v2/v2prt0.as


+ 22 - 12
rtl/i386/i386.inc

@@ -15,7 +15,8 @@
 
 
  **********************************************************************}
  **********************************************************************}
 
 
-{$ASMMODE ATT}
+{$asmmode ATT}
+
 
 
 {****************************************************************************
 {****************************************************************************
                                 Move / Fill
                                 Move / Fill
@@ -150,8 +151,6 @@ end;
                               Object Helpers
                               Object Helpers
 ****************************************************************************}
 ****************************************************************************}
 
 
-{$ASMMODE DIRECT}
-
 procedure int_help_constructor;assembler; [public,alias:'FPC_HELP_CONSTRUCTOR'];
 procedure int_help_constructor;assembler; [public,alias:'FPC_HELP_CONSTRUCTOR'];
 asm
 asm
 { Entry without preamble, since we need the ESP of the constructor
 { Entry without preamble, since we need the ESP of the constructor
@@ -175,7 +174,7 @@ asm
       { Memory size }
       { Memory size }
         pushl   (%eax)
         pushl   (%eax)
         pushl   %esi
         pushl   %esi
-        call    FPC_GETMEM
+        call    GetMem
         popal
         popal
       { Memory position to %esi }
       { Memory position to %esi }
         movl    (%esi),%esi
         movl    (%esi),%esi
@@ -249,12 +248,15 @@ asm
       { SELF }
       { SELF }
         movl    %eax,(%edi)
         movl    %eax,(%edi)
         pushl   %edi
         pushl   %edi
-        call    FPC_FREEMEM
+        call    FreeMem
         addl    $4,%esp
         addl    $4,%esp
 .LHD_3:
 .LHD_3:
         popal
         popal
 end;
 end;
 
 
+{$ifndef NEWATT}
+  {$asmmode DIRECT}
+{$endif}
 
 
 procedure int_new_class;assembler;[public,alias:'FPC_NEW_CLASS'];
 procedure int_new_class;assembler;[public,alias:'FPC_NEW_CLASS'];
 asm
 asm
@@ -291,7 +293,9 @@ asm
 .LDISPOSE_CLASS1:
 .LDISPOSE_CLASS1:
 end;
 end;
 
 
-{$ASMMODE ATT}
+{$ifndef NEWATT}
+  {$asmmode att}
+{$endif}
 
 
 
 
 { checks for a correct vmt pointer }
 { checks for a correct vmt pointer }
@@ -495,12 +499,11 @@ begin
 end;
 end;
 
 
 
 
-{$ASMMODE DIRECT}
 function strpas(p:pchar):string;[public,alias:'FPC_PCHAR_TO_SHORTSTR'];
 function strpas(p:pchar):string;[public,alias:'FPC_PCHAR_TO_SHORTSTR'];
 begin
 begin
   asm
   asm
         cld
         cld
-        movl    12(%ebp),%edi
+        movl    p,%edi
         movl    $0xff,%ecx
         movl    $0xff,%ecx
         xorl    %eax,%eax
         xorl    %eax,%eax
         movl    %edi,%esi
         movl    %edi,%esi
@@ -508,7 +511,11 @@ begin
         scasb
         scasb
         movl    %ecx,%eax
         movl    %ecx,%eax
 
 
+{$ifdef NEWATT1}
+        movl    __RESULT,%edi
+{$else}
         movl    8(%ebp),%edi
         movl    8(%ebp),%edi
+{$endif}
         notb    %al
         notb    %al
         decl    %eax
         decl    %eax
         stosb
         stosb
@@ -531,7 +538,6 @@ begin
         movsb
         movsb
   end ['ECX','EAX','ESI','EDI'];
   end ['ECX','EAX','ESI','EDI'];
 end;
 end;
-{$ASMMODE ATT}
 
 
 
 
 function strlen(p:pchar):longint;assembler;
 function strlen(p:pchar):longint;assembler;
@@ -643,7 +649,7 @@ begin
         incl    %ecx
         incl    %ecx
 .LM2:
 .LM2:
         cltd
         cltd
-        idivl   %esi,%eax
+        idivl   %esi
         addb    $0x30,%dl       // convert Rest to ASCII.
         addb    $0x30,%dl       // convert Rest to ASCII.
         movb    %dl,-12(%ebp,%ebx)
         movb    %dl,-12(%ebp,%ebx)
         incl    %ebx
         incl    %ebx
@@ -673,7 +679,7 @@ begin
         movl    $0x0a,%esi      // load 10 as dividing constant.
         movl    $0x0a,%esi      // load 10 as dividing constant.
 .LM4:
 .LM4:
         xorl    %edx,%edx
         xorl    %edx,%edx
-        divl    %esi,%eax
+        divl    %esi
         addb    $0x30,%dl       // convert Rest to ASCII.
         addb    $0x30,%dl       // convert Rest to ASCII.
         movb    %dl,-12(%ebp,%ebx)
         movb    %dl,-12(%ebp,%ebx)
         incl    %ebx
         incl    %ebx
@@ -739,7 +745,11 @@ end;
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.40  1999-02-22 13:23:22  pierre
+  Revision 1.41  1999-03-01 15:40:55  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.40  1999/02/22 13:23:22  pierre
    * VMT field zeroed at destructor forgot offset !!
    * VMT field zeroed at destructor forgot offset !!
 
 
   Revision 1.39  1999/02/05 12:26:25  pierre
   Revision 1.39  1999/02/05 12:26:25  pierre

+ 12 - 202
rtl/i386/math.inc

@@ -14,209 +14,15 @@
 
 
  **********************************************************************}
  **********************************************************************}
 
 
-{$ASMMODE DIRECT}
-
-{$ifndef DEFAULT_EXTENDED}
-
-{****************************************************************************
-                       Real/Double data type routines
- ****************************************************************************}
-
-    function pi : real;assembler;
-      asm
-            fldpi
-            leave
-            ret
-      end [];
-
-
-    function abs(d : real) : real;assembler;
-      asm
-            fldl 8(%ebp)
-            fabs
-      end [];
-
-
-    function sqr(d : real) : real;assembler;
-      asm
-            fldl 8(%ebp)
-            fldl 8(%ebp)
-            fmulp
-      end [];
-
-
-    function sqrt(d : real) : real;assembler;
-      asm
-            fldl 8(%ebp)
-            fsqrt
-            leave
-            ret $8
-      end [];
-
-
-    function arctan(d : real) : real;assembler;
-      asm
-            fldl 8(%ebp)
-            fld1
-            fpatan
-      end [];
-
-
-    function cos(d : real) : real;assembler;
-      asm
-            fldl 8(%ebp)
-            fcos
-            fstsw
-            sahf
-            jnp .LCOS1
-            fstp %st(0)
-            fldl .LCOS0
-            jmp .LCOS1
-         .LCOS0:
-            .quad       0xffffffffffffffff
-         .LCOS1:
-      end ['EAX'];
-
-
-    function exp(d : real) : real;assembler;
-      asm
-            // comes from DJ GPP
-            fldl        8(%ebp)
-            fldl2e
-            fmulp
-            fstcw      .LCW1
-            fstcw      .LCW2
-            fwait
-            andw        $0xf3ff,.LCW2
-            orw $0x0400,.LCW2
-            fldcw      .LCW2
-            fldl        %st(0)
-            frndint
-            fldcw      .LCW1
-            fxch        %st(1)
-            fsub        %st(1),%st
-            f2xm1
-            fld1
-            faddp
-            fscale
-            fstp        %st(1)
-            jmp         .LCW3
-
-            // store some help data in the data segment
-            .data
-    .LCW1:
-            .word       0
-    .LCW2:
-            .word       0
-            .text
-    .LCW3:
-      end;
-
-
-    function frac(d : real) : real;assembler;
-         asm
-            subl $16,%esp
-            fnstcw -4(%ebp)
-            fwait
-            movw -4(%ebp),%cx
-            orw $0x0c3f,%cx
-            movw %cx,-8(%ebp)
-            fldcw -8(%ebp)
-            fwait
-            fldl 8(%ebp)
-            frndint
-            fldl 8(%ebp)
-            fsub %st(1)
-            fstp %st(1)
-            fclex
-            fldcw -4(%ebp)
-       end ['ECX'];
-
-
-    function int(d : real) : real;assembler;
-       asm
-            subl $16,%esp
-            fnstcw -4(%ebp)
-            fwait
-            movw -4(%ebp),%cx
-            orw $0x0c3f,%cx
-            movw %cx,-8(%ebp)
-            fldcw -8(%ebp)
-            fwait
-            fldl 8(%ebp)
-            frndint
-            fclex
-            fldcw -4(%ebp)
-      end ['ECX'];
-
-
-    function trunc(d : real) : longint;assembler;
-      asm
-            subl $16,%esp
-            fnstcw -4(%ebp)
-            fwait
-            movw -4(%ebp),%cx
-            orw $0x0c3f,%cx
-            movw %cx,-8(%ebp)
-            fldcw -8(%ebp)
-            fwait
-            fldl 8(%ebp)
-            fistpl -8(%ebp)
-            movl -8(%ebp),%eax
-            fldcw -4(%ebp)
-      end ['EAX','ECX'];
-
-
-    function round(d : real) : longint;assembler;
-      asm
-            subl $8,%esp
-            fnstcw -4(%ebp)
-            fwait
-            movw $0x1372,-8(%ebp)
-            fldcw -8(%ebp)
-            fwait
-            fldl 8(%ebp)
-            fistpl -8(%ebp)
-            movl -8(%ebp),%eax
-            fldcw -4(%ebp)
-      end ['EAX','ECX'];
-
-
-    function ln(d : real) : real;assembler;
-      asm
-            fldln2
-            fldl 8(%ebp)
-            fyl2x
-      end [];
-
-
-    function sin(d : real) : real;assembler;
-      asm
-            fldl 8(%ebp)
-            fsin
-            fstsw
-            sahf
-            jnp .LSIN1
-            fstp %st(0)
-            fldl .LSIN0
-            jmp .LSIN1
-         .LSIN0:
-            .quad       0xffffffffffffffff
-         .LSIN1:
-      end ['EAX'];
-
-
-   function power(bas,expo : real) : real;
-     begin
-        power:=exp(ln(bas)*expo);
-     end;
-
-{$else DEFAULT_EXTENDED}
 
 
 {****************************************************************************
 {****************************************************************************
                        EXTENDED data type routines
                        EXTENDED data type routines
  ****************************************************************************}
  ****************************************************************************}
 
 
+{$ifndef NEWATT}
+  {$asmmode DIRECT}
+{$endif}
+
     function pi : extended;assembler;[internconst:in_const_pi];
     function pi : extended;assembler;[internconst:in_const_pi];
       asm
       asm
             fldpi
             fldpi
@@ -409,8 +215,6 @@
         power:=exp(ln(bas)*expo);
         power:=exp(ln(bas)*expo);
      end;
      end;
 
 
-{$endif DEFAULT_EXTENDED}
-
 
 
 {****************************************************************************
 {****************************************************************************
                        Longint data type routines
                        Longint data type routines
@@ -539,11 +343,17 @@
 
 
 {$endif SUPPORT_FIXED}
 {$endif SUPPORT_FIXED}
 
 
-{$ASMMODE ATT}
+{$ifndef NEWATT}
+  {$asmmode ATT}
+{$endif}
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.13  1998-12-15 22:42:56  peter
+  Revision 1.14  1999-03-01 15:40:57  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.13  1998/12/15 22:42:56  peter
     * removed temp symbols
     * removed temp symbols
 
 
   Revision 1.12  1998/11/24 12:54:57  peter
   Revision 1.12  1998/11/24 12:54:57  peter

+ 166 - 165
rtl/i386/rttip.inc

@@ -14,94 +14,93 @@
  **********************************************************************}
  **********************************************************************}
 
 
 { Run-Time type information routines - processor dependent part }
 { Run-Time type information routines - processor dependent part }
-{$ASMMODE DIRECT}
 
 
 Procedure Initialize (Data,TypeInfo : pointer);[Public,Alias:'FPC_INITIALIZE'];assembler;
 Procedure Initialize (Data,TypeInfo : pointer);[Public,Alias:'FPC_INITIALIZE'];assembler;
 asm
 asm
-# Save registers
+// Save registers
         push    %eax
         push    %eax
         push    %ebx
         push    %ebx
         push    %ecx
         push    %ecx
         push    %edx
         push    %edx
-# decide what type it is
+// decide what type it is
         movl    12(%ebp),%ebx
         movl    12(%ebp),%ebx
         movb    (%ebx),%al
         movb    (%ebx),%al
-# This is MANIFESTLY wrong
+// This is MANIFESTLY wrong
         subb    $9,%al
         subb    $9,%al
-        jz      .DoAnsiStringInit
+        jz      .LDoAnsiStringInit
         decb    %al
         decb    %al
-        jz      .DoAnsiStringInit
+        jz      .LDoAnsiStringInit
         subb    $3,%al
         subb    $3,%al
-        jz      .DoArrayInit
+        jz      .LDoArrayInit
         decb    %al
         decb    %al
-        jz      .DoRecordInit
+        jz      .LDoRecordInit
         decb    %al
         decb    %al
         decb    %al
         decb    %al
-        jz      .DoObjectInit
+        jz      .LDoObjectInit
         decb    %al
         decb    %al
-        jz      .DoClassInit
-        jmp     .ExitInitialize
-.DoObjectInit:
-.DoClassInit:
-.DoRecordInit:
+        jz      .LDoClassInit
+        jmp     .LExitInitialize
+.LDoObjectInit:
+.LDoClassInit:
+.LDoRecordInit:
         incl    %ebx
         incl    %ebx
         movzbl  (%ebx),%eax
         movzbl  (%ebx),%eax
-# Skip also recordsize.
+// Skip also recordsize.
         addl    $5,%eax
         addl    $5,%eax
         addl    %eax,%ebx
         addl    %eax,%ebx
-# %ebx points to element count. Set in %edx
+// %ebx points to element count. Set in %edx
         movl    (%ebx),%edx
         movl    (%ebx),%edx
         addl    $4,%ebx
         addl    $4,%ebx
-# %ebx points to First element in record
-.MyRecordInitLoop:
+// %ebx points to First element in record
+.LMyRecordInitLoop:
         decl    %edx
         decl    %edx
-        jl      .ExitInitialize
-# %ebx points to typeinfo pointer
-# Push type
+        jl      .LExitInitialize
+// %ebx points to typeinfo pointer
+// Push type
         pushl    (%ebx)
         pushl    (%ebx)
         addl     $4,%ebx
         addl     $4,%ebx
-# %ebx points to offset in record.
-# Us it to calculate data
+// %ebx points to offset in record.
+// Us it to calculate data
         movl    8(%ebp),%eax
         movl    8(%ebp),%eax
         addl    (%ebx),%eax
         addl    (%ebx),%eax
         addl     $4,%ebx
         addl     $4,%ebx
-# push data
+// push data
         pushl    %eax
         pushl    %eax
-        call    FPC_INITIALIZE
-        jmp     .MyRecordInitLoop
-# Array handling
-.DoArrayInit:
-# Skip array name !!
+        call    INITIALIZE
+        jmp     .LMyRecordInitLoop
+// Array handling
+.LDoArrayInit:
+// Skip array name !!
         incl    %ebx
         incl    %ebx
         movzbl  (%ebx),%eax
         movzbl  (%ebx),%eax
         incl    %eax
         incl    %eax
         addl    %eax,%ebx
         addl    %eax,%ebx
-# %ebx points to size. Put size in ecx
+// %ebx points to size. Put size in ecx
         movl    (%ebx),%ecx
         movl    (%ebx),%ecx
         addl    $4, %ebx
         addl    $4, %ebx
-# %ebx points to count. Put count in %edx
+// %ebx points to count. Put count in %edx
         movl    (%ebx),%edx
         movl    (%ebx),%edx
         addl    $4, %ebx
         addl    $4, %ebx
-# %ebx points to type. Put into ebx.
-# Start treating elements.
-.MyArrayInitLoop:
+// %ebx points to type. Put into ebx.
+// Start treating elements.
+.LMyArrayInitLoop:
         decl    %edx
         decl    %edx
-        jl      .ExitInitialize
-# push type
+        jl      .LExitInitialize
+// push type
         pushl   (%ebx)
         pushl   (%ebx)
-# calculate data
+// calculate data
         movl    %ecx,%eax
         movl    %ecx,%eax
         imull    %edx,%eax
         imull    %edx,%eax
         addl    8(%ebp),%eax
         addl    8(%ebp),%eax
-# push data
+// push data
         pushl   %eax
         pushl   %eax
-        call    FPC_INITIALIZE
-        jmp     .MyArrayInitLoop
-# AnsiString handling :
-.DoAnsiStringInit:
+        call    INITIALIZE
+        jmp     .LMyArrayInitLoop
+// AnsiString handling :
+.LDoAnsiStringInit:
         movl 8(%ebp), %eax
         movl 8(%ebp), %eax
         movl $0,(%eax)
         movl $0,(%eax)
-.ExitInitialize:
+.LExitInitialize:
         pop     %edx
         pop     %edx
         pop     %ecx
         pop     %ecx
         pop     %ebx
         pop     %ebx
@@ -115,84 +114,84 @@ asm
         push    %ebx
         push    %ebx
         push    %ecx
         push    %ecx
         push    %edx
         push    %edx
-# decide what type it is
+// decide what type it is
         movl    12(%ebp),%ebx
         movl    12(%ebp),%ebx
         movb    (%ebx),%al
         movb    (%ebx),%al
         subb    $9,%al
         subb    $9,%al
-        jz      .DoAnsiStringFinal
+        jz      .LDoAnsiStringFinal
         decb    %al
         decb    %al
-        jz      .DoAnsiStringFinal
+        jz      .LDoAnsiStringFinal
         subb    $3,%al
         subb    $3,%al
-        jz      .DoArrayFinal
+        jz      .LDoArrayFinal
         decb    %al
         decb    %al
-        jz      .DoRecordFinal
+        jz      .LDoRecordFinal
         decb    %al
         decb    %al
         decb    %al
         decb    %al
-        jz      .DoObjectFinal
+        jz      .LDoObjectFinal
         decb    %al
         decb    %al
-        jz      .DoClassFinal
-        jmp     .ExitFinalize
-.DoClassFinal:
-.DoObjectFinal:
-.DoRecordFinal:
+        jz      .LDoClassFinal
+        jmp     .LExitFinalize
+.LDoClassFinal:
+.LDoObjectFinal:
+.LDoRecordFinal:
         incl    %ebx
         incl    %ebx
         movzbl  (%ebx),%eax
         movzbl  (%ebx),%eax
-# Skip also recordsize.
+// Skip also recordsize.
         addl    $5,%eax
         addl    $5,%eax
         addl    %eax,%ebx
         addl    %eax,%ebx
-# %ebx points to element count. Set in %edx
+// %ebx points to element count. Set in %edx
         movl    (%ebx),%edx
         movl    (%ebx),%edx
         addl    $4,%ebx
         addl    $4,%ebx
-# %ebx points to First element in record
-.MyRecordFinalLoop:
+// %ebx points to First element in record
+.LMyRecordFinalLoop:
         decl    %edx
         decl    %edx
-        jl      .ExitFinalize
-# %ebx points to typeinfo pointer
-# Push type
+        jl      .LExitFinalize
+// %ebx points to typeinfo pointer
+// Push type
         pushl    (%ebx)
         pushl    (%ebx)
         addl     $4,%ebx
         addl     $4,%ebx
-# %ebx points to offset.
-# Use to calculate data
+// %ebx points to offset.
+// Use to calculate data
         movl    8(%ebp),%eax
         movl    8(%ebp),%eax
         addl    (%ebx),%eax
         addl    (%ebx),%eax
         addl     $4,%ebx
         addl     $4,%ebx
-# push data
+// push data
         pushl    %eax
         pushl    %eax
-        call    FPC_FINALIZE
-        jmp     .MyRecordFinalLoop
-# Array handling
-.DoArrayFinal:
-# Skip array name !!
+        call    FINALIZE
+        jmp     .LMyRecordFinalLoop
+// Array handling
+.LDoArrayFinal:
+// Skip array name !!
         incl    %ebx
         incl    %ebx
         movzbl  (%ebx),%eax
         movzbl  (%ebx),%eax
         incl    %eax
         incl    %eax
         addl    %eax,%ebx
         addl    %eax,%ebx
-# %ebx points to size. Put size in ecx
+// %ebx points to size. Put size in ecx
         movl    (%ebx),%ecx
         movl    (%ebx),%ecx
         addl    $4, %ebx
         addl    $4, %ebx
-# %ebx points to count. Put count in %edx
+// %ebx points to count. Put count in %edx
         movl    (%ebx),%edx
         movl    (%ebx),%edx
         addl    $4, %ebx
         addl    $4, %ebx
-# %ebx points to type. Put into ebx.
-# Start treating elements.
-.MyArrayFinalLoop:
+// %ebx points to type. Put into ebx.
+// Start treating elements.
+.LMyArrayFinalLoop:
         decl    %edx
         decl    %edx
-        jl      .ExitFinalize
-# push type
+        jl      .LExitFinalize
+// push type
         pushl   (%ebx)
         pushl   (%ebx)
-# calculate data
+// calculate data
         movl    %ecx,%eax
         movl    %ecx,%eax
         imull    %edx,%eax
         imull    %edx,%eax
         addl    8(%ebp),%eax
         addl    8(%ebp),%eax
-# push data
+// push data
         pushl   %eax
         pushl   %eax
-        call    FPC_FINALIZE
-        jmp     .MyArrayFinalLoop
-# AnsiString handling :
-.DoAnsiStringFinal:
+        call    FINALIZE
+        jmp     .LMyArrayFinalLoop
+// AnsiString handling :
+.LDoAnsiStringFinal:
         pushl   8(%ebp)
         pushl   8(%ebp)
-        call    FPC_ANSISTR_DECR_REF
-.ExitFinalize:
+        call    ANSISTR_DECR_REF
+.LExitFinalize:
         pop     %edx
         pop     %edx
         pop     %ecx
         pop     %ecx
         pop     %ebx
         pop     %ebx
@@ -202,82 +201,82 @@ end;
 
 
 Procedure Addref (Data,TypeInfo : Pointer); [Public,alias : 'FPC_ADDREF'];Assembler;
 Procedure Addref (Data,TypeInfo : Pointer); [Public,alias : 'FPC_ADDREF'];Assembler;
 asm
 asm
-# Save registers
+// Save registers
         push    %eax
         push    %eax
         push    %ebx
         push    %ebx
         push    %ecx
         push    %ecx
         push    %edx
         push    %edx
-# decide what type it is
+// decide what type it is
         movl    12(%ebp),%ebx
         movl    12(%ebp),%ebx
         movb    (%ebx),%al
         movb    (%ebx),%al
         subb    $9,%al
         subb    $9,%al
-        jz      .DoAnsiStringAddRef
+        jz      .LDoAnsiStringAddRef
         decb    %al
         decb    %al
-        jz      .DoAnsiStringAddRef
+        jz      .LDoAnsiStringAddRef
         subb    $2,%al
         subb    $2,%al
-        jz      .DoArrayAddRef
+        jz      .LDoArrayAddRef
         decb    %al
         decb    %al
-        jz      .DoRecordAddRef
+        jz      .LDoRecordAddRef
         decb    %al
         decb    %al
         decb    %al
         decb    %al
-        jz      .DoObjectAddRef
+        jz      .LDoObjectAddRef
         decb    %al
         decb    %al
-        jz      .DoClassAddRef
-        jmp     .ExitAddRef
-.DoClassAddRef:
-.DoObjectAddRef:
-.DoRecordAddRef:
+        jz      .LDoClassAddRef
+        jmp     .LExitAddRef
+.LDoClassAddRef:
+.LDoObjectAddRef:
+.LDoRecordAddRef:
         incl    %ebx
         incl    %ebx
         movzbl  (%ebx),%eax
         movzbl  (%ebx),%eax
-# Skip also recordsize.
+// Skip also recordsize.
         addl    $5,%eax
         addl    $5,%eax
         addl    %eax,%ebx
         addl    %eax,%ebx
-# %ebx points to element count. Set in %edx
+// %ebx points to element count. Set in %edx
         movl    (%ebx),%edx
         movl    (%ebx),%edx
         addl    $4,%ebx
         addl    $4,%ebx
-# %ebx points to First element in record
-.MyRecordAddRefLoop:
+// %ebx points to First element in record
+.LMyRecordAddRefLoop:
         decl    %edx
         decl    %edx
-        jl      .ExitAddRef
-# Calculate data
+        jl      .LExitAddRef
+// Calculate data
         movl    8(%ebp),%eax
         movl    8(%ebp),%eax
         addl    (%ebx),%eax
         addl    (%ebx),%eax
         addl     $4,%ebx
         addl     $4,%ebx
-# Push type
+// Push type
         pushl    (%ebx)
         pushl    (%ebx)
         addl     $4,%ebx
         addl     $4,%ebx
-# push data
+// push data
         pushl    %eax
         pushl    %eax
-        call    FPC_ADDREF
-        jmp     .MyRecordAddRefLoop
-# Array handling
-.DoArrayAddRef:
-# %ebx points to size. Put size in ecx
+        call    ADDREF
+        jmp     .LMyRecordAddRefLoop
+// Array handling
+.LDoArrayAddRef:
+// %ebx points to size. Put size in ecx
         movl    (%ebx),%ecx
         movl    (%ebx),%ecx
         addl    $4, %ebx
         addl    $4, %ebx
-# %ebx points to count. Put count in %edx
+// %ebx points to count. Put count in %edx
         movl    (%ebx),%edx
         movl    (%ebx),%edx
         addl    $4, %ebx
         addl    $4, %ebx
-# %ebx points to type. Put into ebx.
-# Start treating elements.
-.MyArrayAddRefLoop:
+// %ebx points to type. Put into ebx.
+// Start treating elements.
+.LMyArrayAddRefLoop:
         decl    %edx
         decl    %edx
-        jl      .ExitAddRef
-# push type
+        jl      .LExitAddRef
+// push type
         pushl   (%ebx)
         pushl   (%ebx)
-# calculate data
+// calculate data
         movl    %ecx,%eax
         movl    %ecx,%eax
         imull    %edx,%eax
         imull    %edx,%eax
         addl    8(%ebp),%eax
         addl    8(%ebp),%eax
-# push data
+// push data
         pushl   %eax
         pushl   %eax
-        call    FPC_ADDREF
-        jmp     .MyArrayAddRefLoop
-# AnsiString handling :
-.DoAnsiStringAddRef:
+        call    ADDREF
+        jmp     .LMyArrayAddRefLoop
+// AnsiString handling :
+.LDoAnsiStringAddRef:
         pushl   8(%ebp)
         pushl   8(%ebp)
-        call    FPC_ANSISTR_INCR_REF
-.ExitAddRef:
+        call    ANSISTR_INCR_REF
+.LExitAddRef:
         pop     %edx
         pop     %edx
         pop     %ecx
         pop     %ecx
         pop     %ebx
         pop     %ebx
@@ -287,94 +286,96 @@ end;
 
 
 Procedure DecRef (Data,TypeInfo : Pointer); [Public,alias : 'FPC_DECREF'];Assembler;
 Procedure DecRef (Data,TypeInfo : Pointer); [Public,alias : 'FPC_DECREF'];Assembler;
 asm
 asm
-# Save registers
+// Save registers
         push    %eax
         push    %eax
         push    %ebx
         push    %ebx
         push    %ecx
         push    %ecx
         push    %edx
         push    %edx
-# decide what type it is
+// decide what type it is
         movl    12(%ebp),%ebx
         movl    12(%ebp),%ebx
         movb    (%ebx),%al
         movb    (%ebx),%al
         subb    $9,%al
         subb    $9,%al
-        jz      .DoAnsiStringDecRef
+        jz      .LDoAnsiStringDecRef
         decb    %al
         decb    %al
-        jz      .DoAnsiStringDecRef
+        jz      .LDoAnsiStringDecRef
         subb    $2,%al
         subb    $2,%al
-        jz      .DoArrayDecRef
+        jz      .LDoArrayDecRef
         decb    %al
         decb    %al
-        jz      .DoRecordDecRef
+        jz      .LDoRecordDecRef
         decb    %al
         decb    %al
         decb    %al
         decb    %al
-        jz      .DoObjectDecRef
+        jz      .LDoObjectDecRef
         decb    %al
         decb    %al
-        jz      .DoClassDecRef
-        jmp     .ExitDecRef
-.DoClassDecRef:
-.DoObjectDecRef:
-.DoRecordDecRef:
+        jz      .LDoClassDecRef
+        jmp     .LExitDecRef
+.LDoClassDecRef:
+.LDoObjectDecRef:
+.LDoRecordDecRef:
         incl    %ebx
         incl    %ebx
         movzbl  (%ebx),%eax
         movzbl  (%ebx),%eax
-# Skip also recordsize.
+// Skip also recordsize.
         addl    $5,%eax
         addl    $5,%eax
         addl    %eax,%ebx
         addl    %eax,%ebx
-# %ebx points to element count. Set in %edx
+// %ebx points to element count. Set in %edx
         movl    (%ebx),%edx
         movl    (%ebx),%edx
         addl    $4,%ebx
         addl    $4,%ebx
-# %ebx points to First element in record
-.MyRecordDecRefLoop:
+// %ebx points to First element in record
+.LMyRecordDecRefLoop:
         decl    %edx
         decl    %edx
-        jl      .ExitDecRef
-# Calculate data
+        jl      .LExitDecRef
+// Calculate data
         movl    8(%ebp),%eax
         movl    8(%ebp),%eax
         addl    (%ebx),%eax
         addl    (%ebx),%eax
         addl     $4,%ebx
         addl     $4,%ebx
-# Push type
+// Push type
         pushl    (%ebx)
         pushl    (%ebx)
         addl     $4,%ebx
         addl     $4,%ebx
-# push data
+// push data
         pushl    %eax
         pushl    %eax
-        call    FPC_DECREF
-        jmp     .MyRecordDecRefLoop
-# Array handling
-.DoArrayDecRef:
-# %ebx points to size. Put size in ecx
+        call    DECREF
+        jmp     .LMyRecordDecRefLoop
+// Array handling
+.LDoArrayDecRef:
+// %ebx points to size. Put size in ecx
         movl    (%ebx),%ecx
         movl    (%ebx),%ecx
         addl    $4, %ebx
         addl    $4, %ebx
-# %ebx points to count. Put count in %edx
+// %ebx points to count. Put count in %edx
         movl    (%ebx),%edx
         movl    (%ebx),%edx
         addl    $4, %ebx
         addl    $4, %ebx
-# %ebx points to type. Put into ebx.
-# Start treating elements.
-.MyArrayDecRefLoop:
+// %ebx points to type. Put into ebx.
+// Start treating elements.
+.LMyArrayDecRefLoop:
         decl    %edx
         decl    %edx
-        jl      .ExitDecRef
-# push type
+        jl      .LExitDecRef
+// push type
         pushl   (%ebx)
         pushl   (%ebx)
-# calculate data
+// calculate data
         movl    %ecx,%eax
         movl    %ecx,%eax
         imull    %edx,%eax
         imull    %edx,%eax
         addl    8(%ebp),%eax
         addl    8(%ebp),%eax
-# push data
+// push data
         pushl   %eax
         pushl   %eax
-        call    FPC_DECREF
-        jmp     .MyArrayDecRefLoop
-# AnsiString handling :
-.DoAnsiStringDecRef:
+        call    DECREF
+        jmp     .LMyArrayDecRefLoop
+// AnsiString handling :
+.LDoAnsiStringDecRef:
         movl    8(%ebp),%eax
         movl    8(%ebp),%eax
         pushl   %eax
         pushl   %eax
-        call    FPC_ANSISTR_DECR_REF
-.ExitDecRef:
+        call    ANSISTR_DECR_REF
+.LExitDecRef:
         pop     %edx
         pop     %edx
         pop     %ecx
         pop     %ecx
         pop     %ebx
         pop     %ebx
         pop     %eax
         pop     %eax
 end;
 end;
 
 
-{$ASMMODE DEFAULT}
-
 {
 {
   $Log$
   $Log$
-  Revision 1.15  1998-12-20 14:08:06  michael
+  Revision 1.16  1999-03-01 15:40:58  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.15  1998/12/20 14:08:06  michael
   + Finalize fixed after florians fix :)
   + Finalize fixed after florians fix :)
 
 
   Revision 1.14  1998/12/19 00:22:09  florian
   Revision 1.14  1998/12/19 00:22:09  florian

+ 5 - 3
rtl/i386/set.inc

@@ -14,8 +14,6 @@
 
 
  **********************************************************************}
  **********************************************************************}
 
 
-{$ASMMODE ATT}
-
 procedure do_load_small(p : pointer;l:longint);assembler;[public,alias:'FPC_SET_LOAD_SMALL'];
 procedure do_load_small(p : pointer;l:longint);assembler;[public,alias:'FPC_SET_LOAD_SMALL'];
 {
 {
   load a normal set p from a smallset l
   load a normal set p from a smallset l
@@ -430,7 +428,11 @@ end;
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.9  1999-01-20 17:48:02  jonas
+  Revision 1.10  1999-03-01 15:40:59  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.9  1999/01/20 17:48:02  jonas
     + fixed bug0163 (set1 <= set2 support)
     + fixed bug0163 (set1 <= set2 support)
 
 
   Revision 1.8  1998/12/15 22:43:00  peter
   Revision 1.8  1998/12/15 22:43:00  peter

+ 6 - 6
rtl/i386/setjump.inc

@@ -14,8 +14,6 @@
 
 
  **********************************************************************}
  **********************************************************************}
 
 
-{$ASMMODE DIRECT}
-
 Function SetJmp (Var S : Jmp_buf) : longint;assembler;[Public, alias : 'FPC_SETJMP'];
 Function SetJmp (Var S : Jmp_buf) : longint;assembler;[Public, alias : 'FPC_SETJMP'];
 asm
 asm
   movl 8(%ebp),%eax
   movl 8(%ebp),%eax
@@ -45,14 +43,16 @@ asm
   movl 8(%ecx),%edi
   movl 8(%ecx),%edi
   movl 12(%ecx),%ebp
   movl 12(%ecx),%ebp
   movl 16(%ecx),%esp
   movl 16(%ecx),%esp
-  jmp *20(%ecx)
+  jmp 20(%ecx)
 end;
 end;
 
 
-{$ASMMODE ATT}
-
 {
 {
   $Log$
   $Log$
-  Revision 1.4  1998-09-14 10:48:13  peter
+  Revision 1.5  1999-03-01 15:41:00  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.4  1998/09/14 10:48:13  peter
     * FPC_ names
     * FPC_ names
     * Heap manager is now system independent
     * Heap manager is now system independent
 
 

+ 14 - 7
rtl/i386/stringss.inc

@@ -3,9 +3,9 @@
     This file is part of the Free Pascal run time library.
     This file is part of the Free Pascal run time library.
     Copyright (c) 1998 by the Free Pascal development team
     Copyright (c) 1998 by the Free Pascal development team
 
 
-    Processor dependent part of strings.pp, not shared with 
+    Processor dependent part of strings.pp, not shared with
     sysutils unit.
     sysutils unit.
-    
+
     See the file COPYING.FPC, included in this distribution,
     See the file COPYING.FPC, included in this distribution,
     for details about the copyright.
     for details about the copyright.
 
 
@@ -15,12 +15,11 @@
 
 
  **********************************************************************}
  **********************************************************************}
 
 
-{$ASMMODE DIRECT}
     function strpas(p : pchar) : string;
     function strpas(p : pchar) : string;
     begin
     begin
       asm
       asm
         cld
         cld
-        movl    12(%ebp),%edi
+        movl    p,%edi
         movl    $0xff,%ecx
         movl    $0xff,%ecx
         xorl    %eax,%eax
         xorl    %eax,%eax
         movl    %edi,%esi
         movl    %edi,%esi
@@ -28,7 +27,11 @@
         scasb
         scasb
         movl    %ecx,%eax
         movl    %ecx,%eax
 
 
+{$ifdef NEWATT1}
+        movl    __RESULT,%edi
+{$else}
         movl    8(%ebp),%edi
         movl    8(%ebp),%edi
+{$endif}
         notb    %al
         notb    %al
         decl    %eax
         decl    %eax
         stosb
         stosb
@@ -51,7 +54,7 @@
         movsb
         movsb
       end ['ECX','EAX','ESI','EDI'];
       end ['ECX','EAX','ESI','EDI'];
     end;
     end;
-{$ASMMODE ATT}
+
 
 
     function strpcopy(d : pchar;const s : string) : pchar;
     function strpcopy(d : pchar;const s : string) : pchar;
 
 
@@ -77,7 +80,11 @@
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.2  1999-02-25 10:07:02  michael
+  Revision 1.3  1999-03-01 15:41:01  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.2  1999/02/25 10:07:02  michael
   + Added header and log
   + Added header and log
 
 
-}
+}

+ 13 - 19
rtl/inc/astrings.inc

@@ -37,8 +37,8 @@
 
 
 Function  NewAnsiString (Len : Longint) : Pointer; forward;
 Function  NewAnsiString (Len : Longint) : Pointer; forward;
 Procedure DisposeAnsiString (Var S : Pointer); forward;
 Procedure DisposeAnsiString (Var S : Pointer); forward;
-Procedure Decr_Ansi_Ref (Var S : Pointer); forward;
-Procedure Incr_Ansi_Ref (Var S : Pointer); forward;
+Procedure AnsiStr_Decr_Ref (Var S : Pointer); forward;
+Procedure AnsiStr_Incr_Ref (Var S : Pointer); forward;
 Procedure AssignAnsiString (Var S1 : Pointer; S2 : Pointer); forward;
 Procedure AssignAnsiString (Var S1 : Pointer; S2 : Pointer); forward;
 Function  Ansi_String_Concat (S1,S2 : Pointer): Pointer; forward;
 Function  Ansi_String_Concat (S1,S2 : Pointer): Pointer; forward;
 Procedure Ansi_ShortString_Concat (Var S1: AnsiString; Var S2 : ShortString); forward;
 Procedure Ansi_ShortString_Concat (Var S1: AnsiString; Var S2 : ShortString); forward;
@@ -114,7 +114,7 @@ begin
 end;
 end;
 
 
 
 
-Procedure Decr_Ansi_Ref (Var S : Pointer);[Public,Alias:'FPC_ANSISTR_DECR_REF'];
+Procedure AnsiStr_Decr_Ref (Var S : Pointer);[Public,Alias:'FPC_ANSISTR_DECR_REF'];
 {
 {
   Decreases the ReferenceCount of a non constant ansistring;
   Decreases the ReferenceCount of a non constant ansistring;
   If the reference count is zero, deallocate the string;
   If the reference count is zero, deallocate the string;
@@ -136,7 +136,7 @@ Begin
 end;
 end;
 
 
 
 
-Procedure Incr_Ansi_Ref (Var S : Pointer);[Public,Alias:'FPC_ANSISTR_INCR_REF'];
+Procedure AnsiStr_Incr_Ref (Var S : Pointer);[Public,Alias:'FPC_ANSISTR_INCR_REF'];
 Begin
 Begin
   If S=Nil then
   If S=Nil then
     exit;
     exit;
@@ -161,7 +161,7 @@ begin
     SNew:=NewAnsiString (PAnsiRec(Pointer(S)-FirstOff)^.len);
     SNew:=NewAnsiString (PAnsiRec(Pointer(S)-FirstOff)^.len);
     Move (Pointer(S)^,SNew^,PAnsiRec(Pointer(S)-FirstOff)^.len+1);
     Move (Pointer(S)^,SNew^,PAnsiRec(Pointer(S)-FirstOff)^.len+1);
     PAnsiRec(SNew-FirstOff)^.len:=PAnsiRec(Pointer(S)-FirstOff)^.len;
     PAnsiRec(SNew-FirstOff)^.len:=PAnsiRec(Pointer(S)-FirstOff)^.len;
-    Decr_Ansi_Ref (Pointer(S));  { Thread safe }
+    ansistr_decr_ref (Pointer(S));  { Thread safe }
     Pointer(S):=SNew;
     Pointer(S):=SNew;
     end;
     end;
 end;
 end;
@@ -176,7 +176,7 @@ begin
     If PAnsiRec(S2-FirstOff)^.Ref>0 then
     If PAnsiRec(S2-FirstOff)^.Ref>0 then
       Inc(PAnsiRec(S2-FirstOff)^.ref);
       Inc(PAnsiRec(S2-FirstOff)^.ref);
   { Decrease the reference count on the old S1 }
   { Decrease the reference count on the old S1 }
-  Decr_Ansi_Ref (S1);
+  ansistr_decr_ref (S1);
   { And finally, have S1 pointing to S2 (or its copy) }
   { And finally, have S1 pointing to S2 (or its copy) }
   S1:=S2;
   S1:=S2;
 end;
 end;
@@ -309,16 +309,6 @@ begin
 end;
 end;
 }
 }
 
 
-{ stupid solution, could be done with public,name in later versions }
-{$ASMMODE DIRECT}
-procedure dummy;assembler;
-  asm
-     .globl FPC_EMPTYCHAR
-     FPC_EMPTYCHAR:
-     .byte 0
-  end;
-{$ASMMODE ATT}
-
 
 
 Function AnsiCompare(S1,S2 : Pointer): Longint;[Public,Alias : 'FPC_ANSISTR_COMPARE'];
 Function AnsiCompare(S1,S2 : Pointer): Longint;[Public,Alias : 'FPC_ANSISTR_COMPARE'];
 {
 {
@@ -439,7 +429,7 @@ begin
       Temp:=Pointer(NewAnsiString(L));
       Temp:=Pointer(NewAnsiString(L));
       if Length(S)>0 then
       if Length(S)>0 then
         Move (Pointer(S)^,Temp^,Length(S)+1);
         Move (Pointer(S)^,Temp^,Length(S)+1);
-      Decr_Ansi_ref (Pointer(S));
+      ansistr_decr_ref (Pointer(S));
       Pointer(S):=Temp;
       Pointer(S):=Temp;
       end
       end
     else
     else
@@ -450,7 +440,7 @@ begin
   else
   else
     { Length=0 }
     { Length=0 }
     begin
     begin
-    Decr_Ansi_Ref (Pointer(S));
+    ansistr_decr_ref (Pointer(S));
     Pointer(S):=Nil;
     Pointer(S):=Nil;
     end;
     end;
 end;
 end;
@@ -741,7 +731,11 @@ end;
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.11  1999-02-04 14:55:42  michael
+  Revision 1.12  1999-03-01 15:41:02  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.11  1999/02/04 14:55:42  michael
   * Fixed pos
   * Fixed pos
 
 
   Revision 1.10  1999/02/04 10:49:21  florian
   Revision 1.10  1999/02/04 10:49:21  florian

+ 10 - 1
rtl/inc/system.inc

@@ -42,6 +42,11 @@ const
 { For Error Handling.}
 { For Error Handling.}
   ErrorBase : Longint = 0;
   ErrorBase : Longint = 0;
 
 
+{ Used by the ansistrings and maybe also other things in the future }
+var
+  emptychar : char;public name 'FPC_EMPTYCHAR';
+
+
 {****************************************************************************
 {****************************************************************************
                      Routines which have compiler magic
                      Routines which have compiler magic
 ****************************************************************************}
 ****************************************************************************}
@@ -480,7 +485,11 @@ end;
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.54  1999-02-01 00:05:14  florian
+  Revision 1.55  1999-03-01 15:41:03  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.54  1999/02/01 00:05:14  florian
     + functions lo/hi for DWord type implemented
     + functions lo/hi for DWord type implemented
 
 
   Revision 1.53  1999/01/29 09:23:09  pierre
   Revision 1.53  1999/01/29 09:23:09  pierre

+ 6 - 2
rtl/inc/text.inc

@@ -913,7 +913,7 @@ var
   maxlen,spos,len : longint;
   maxlen,spos,len : longint;
 Begin
 Begin
 { Delete the string }
 { Delete the string }
-  Decr_ansi_ref (Pointer(S));
+  AnsiStr_Decr_ref (Pointer(S));
   { We assign room for 1024 characters totally at random.... }
   { We assign room for 1024 characters totally at random.... }
   Pointer(s):=Pointer(NewAnsiString(1024));
   Pointer(s):=Pointer(NewAnsiString(1024));
   MaxLen:=1024;
   MaxLen:=1024;
@@ -1201,7 +1201,11 @@ end;
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.39  1999-02-17 10:13:29  peter
+  Revision 1.40  1999-03-01 15:41:04  peter
+    * use external names
+    * removed all direct assembler modes
+
+  Revision 1.39  1999/02/17 10:13:29  peter
     * when error when opening a file, then reset the mode to fmclosed
     * when error when opening a file, then reset the mode to fmclosed
 
 
   Revision 1.38  1999/01/28 19:38:19  peter
   Revision 1.38  1999/01/28 19:38:19  peter

Some files were not shown because too many files changed in this diff