فهرست منبع

+ syscall directive support for MorphOS added

florian 21 سال پیش
والد
کامیت
c68ea95074

+ 5 - 2
compiler/arm/cpuinfo.pas

@@ -80,7 +80,7 @@ Const
    jmp_buf_size = 220; { according to sizeof(jmp_buf) on my Zaurus (FK) }
    jmp_buf_size = 220; { according to sizeof(jmp_buf) on my Zaurus (FK) }
 
 
    { calling conventions supported by the code generator }
    { calling conventions supported by the code generator }
-   supported_calling_conventions = [
+   supported_calling_conventions : tproccalloptions = [
      pocall_internproc,
      pocall_internproc,
      pocall_compilerproc,
      pocall_compilerproc,
      pocall_inline,
      pocall_inline,
@@ -114,7 +114,10 @@ Implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.6  2004-03-06 20:35:19  florian
+  Revision 1.7  2004-04-28 15:19:03  florian
+    + syscall directive support for MorphOS added
+
+  Revision 1.6  2004/03/06 20:35:19  florian
     * fixed arm compilation
     * fixed arm compilation
     * cleaned up code generation for exported linux procedures
     * cleaned up code generation for exported linux procedures
 
 

+ 6 - 3
compiler/globals.pas

@@ -1383,7 +1383,7 @@ implementation
                2: (a,b: cardinal);
                2: (a,b: cardinal);
             end;
             end;
         begin
         begin
-          { load currect control register contents }
+          { load current control register contents }
           asm
           asm
             mffs f0
             mffs f0
             stfd f0,newmask.d
             stfd f0,newmask.d
@@ -1524,7 +1524,7 @@ implementation
          'FPCCALL',
          'FPCCALL',
          'INLINE',
          'INLINE',
          '', { internproc }
          '', { internproc }
-         '', { palmossyscall }
+         '', { syscall }
          'PASCAL',
          'PASCAL',
          'REGISTER',
          'REGISTER',
          'SAFECALL',
          'SAFECALL',
@@ -1897,7 +1897,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.126  2004-03-14 20:08:37  peter
+  Revision 1.127  2004-04-28 15:19:03  florian
+    + syscall directive support for MorphOS added
+
+  Revision 1.126  2004/03/14 20:08:37  peter
     * packrecords fixed for settings from $PACKRECORDS
     * packrecords fixed for settings from $PACKRECORDS
     * default packrecords now uses value 0 and uses info from aligment
     * default packrecords now uses value 0 and uses info from aligment
       structure only, initpackrecords removed
       structure only, initpackrecords removed

+ 7 - 4
compiler/globtype.pas

@@ -147,8 +147,8 @@ interface
          pocall_inline,
          pocall_inline,
          { Procedure has compiler magic}
          { Procedure has compiler magic}
          pocall_internproc,
          pocall_internproc,
-         { procedure is a PalmOS system call }
-         pocall_palmossyscall,
+         { procedure is a system call, applies e.g. to MorphOS and PalmOS }
+         pocall_syscall,
          { pascal standard left to right }
          { pascal standard left to right }
          pocall_pascal,
          pocall_pascal,
          { procedure uses register (fastcall) calling }
          { procedure uses register (fastcall) calling }
@@ -177,7 +177,7 @@ interface
            'OldFPCCall',
            'OldFPCCall',
            'Inline',
            'Inline',
            'InternProc',
            'InternProc',
-           'PalmOSSysCall',
+           'SysCall',
            'Pascal',
            'Pascal',
            'Register',
            'Register',
            'SafeCall',
            'SafeCall',
@@ -239,7 +239,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.51  2004-04-04 18:46:09  olle
+  Revision 1.52  2004-04-28 15:19:03  florian
+    + syscall directive support for MorphOS added
+
+  Revision 1.51  2004/04/04 18:46:09  olle
     + added $APPTYPE TOOL for MPW tools on MacOS
     + added $APPTYPE TOOL for MPW tools on MacOS
 
 
   Revision 1.50  2004/03/10 22:52:57  peter
   Revision 1.50  2004/03/10 22:52:57  peter

+ 5 - 2
compiler/i386/cpuinfo.pas

@@ -87,7 +87,7 @@ Const
    jmp_buf_size = 24;
    jmp_buf_size = 24;
 
 
    { calling conventions supported by the code generator }
    { calling conventions supported by the code generator }
-   supported_calling_conventions = [
+   supported_calling_conventions : tproccalloptions = [
      pocall_internproc,
      pocall_internproc,
      pocall_compilerproc,
      pocall_compilerproc,
      pocall_inline,
      pocall_inline,
@@ -124,7 +124,10 @@ Implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.23  2004-02-27 10:21:05  florian
+  Revision 1.24  2004-04-28 15:19:03  florian
+    + syscall directive support for MorphOS added
+
+  Revision 1.23  2004/02/27 10:21:05  florian
     * top_symbol killed
     * top_symbol killed
     + refaddr to treference added
     + refaddr to treference added
     + refsymbol to treference added
     + refsymbol to treference added

+ 5 - 2
compiler/m68k/cpuinfo.pas

@@ -75,7 +75,7 @@ Const
    target_cpu_string = 'm68k';
    target_cpu_string = 'm68k';
 
 
    { calling conventions supported by the code generator }
    { calling conventions supported by the code generator }
-   supported_calling_conventions = [
+   supported_calling_conventions : tproccalloptions = [
      pocall_internproc,
      pocall_internproc,
      pocall_compilerproc,
      pocall_compilerproc,
      pocall_inline,
      pocall_inline,
@@ -105,7 +105,10 @@ Implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.9  2004-04-18 21:13:59  florian
+  Revision 1.10  2004-04-28 15:19:03  florian
+    + syscall directive support for MorphOS added
+
+  Revision 1.9  2004/04/18 21:13:59  florian
     * more adaptions for m68k
     * more adaptions for m68k
 
 
   Revision 1.8  2004/01/30 12:17:18  florian
   Revision 1.8  2004/01/30 12:17:18  florian

+ 16 - 7
compiler/ncgcal.pas

@@ -67,6 +67,7 @@ interface
           procedure pop_parasize(pop_size:longint);virtual;
           procedure pop_parasize(pop_size:longint);virtual;
           procedure extra_interrupt_code;virtual;
           procedure extra_interrupt_code;virtual;
           procedure extra_call_code;virtual;
           procedure extra_call_code;virtual;
+          procedure do_syscall;virtual;abstract;
        public
        public
           procedure pass_2;override;
           procedure pass_2;override;
        end;
        end;
@@ -915,12 +916,17 @@ implementation
                   if cg.uses_registers(R_MMREGISTER) then
                   if cg.uses_registers(R_MMREGISTER) then
                     cg.allocexplicitregisters(exprasmlist,R_MMREGISTER,paramanager.get_volatile_registers_mm(procdefinition.proccalloption));
                     cg.allocexplicitregisters(exprasmlist,R_MMREGISTER,paramanager.get_volatile_registers_mm(procdefinition.proccalloption));
 
 
-                  { Calling interrupt from the same code requires some
-                    extra code }
-                  if (po_interrupt in procdefinition.procoptions) then
-                    extra_interrupt_code;
-                  extra_call_code;
-                  cg.a_call_name(exprasmlist,tprocdef(procdefinition).mangledname);
+                  if procdefinition.proccalloption=pocall_syscall then
+                    do_syscall
+                  else
+                    begin
+                      { Calling interrupt from the same code requires some
+                        extra code }
+                      if (po_interrupt in procdefinition.procoptions) then
+                        extra_interrupt_code;
+                      extra_call_code;
+                      cg.a_call_name(exprasmlist,tprocdef(procdefinition).mangledname);
+                    end;
                end;
                end;
            end
            end
          else
          else
@@ -1266,7 +1272,10 @@ begin
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.164  2004-03-14 20:10:56  peter
+  Revision 1.165  2004-04-28 15:19:03  florian
+    + syscall directive support for MorphOS added
+
+  Revision 1.164  2004/03/14 20:10:56  peter
     * disable some debuginfo info when valgrind support is used
     * disable some debuginfo info when valgrind support is used
 
 
   Revision 1.163  2004/03/13 21:23:21  florian
   Revision 1.163  2004/03/13 21:23:21  florian

+ 10 - 1
compiler/parser.pas

@@ -118,6 +118,12 @@ implementation
          { codegen }
          { codegen }
          if paraprintnodetree<>0 then
          if paraprintnodetree<>0 then
            printnode_reset;
            printnode_reset;
+
+         { target specific stuff }
+         case target_info.system of
+           system_powerpc_morphos:
+             include(supported_calling_conventions,pocall_syscall);
+         end;
       end;
       end;
 
 
 
 
@@ -705,7 +711,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.63  2004-03-16 16:20:49  peter
+  Revision 1.64  2004-04-28 15:19:03  florian
+    + syscall directive support for MorphOS added
+
+  Revision 1.63  2004/03/16 16:20:49  peter
     * reset current_module,current_procinfo so the destroy routines
     * reset current_module,current_procinfo so the destroy routines
       can't access their info anymore, because that can be already
       can't access their info anymore, because that can be already
       destroyed
       destroyed

+ 7 - 4
compiler/pdecsub.pas

@@ -1314,7 +1314,7 @@ const
       handler  : {$ifdef FPCPROCVAR}@{$endif}pd_external;
       handler  : {$ifdef FPCPROCVAR}@{$endif}pd_external;
       pocall   : pocall_none;
       pocall   : pocall_none;
       pooption : [po_external];
       pooption : [po_external];
-      mutexclpocall : [pocall_internproc,pocall_inline,pocall_palmossyscall];
+      mutexclpocall : [pocall_internproc,pocall_inline,pocall_syscall];
       mutexclpotype : [potype_constructor,potype_destructor];
       mutexclpotype : [potype_constructor,potype_destructor];
       mutexclpo     : [po_exports,po_interrupt,po_assembler]
       mutexclpo     : [po_exports,po_interrupt,po_assembler]
     ),(
     ),(
@@ -1520,9 +1520,9 @@ const
       mutexclpo     : [po_external]
       mutexclpo     : [po_external]
     ),(
     ),(
       idtok:_SYSCALL;
       idtok:_SYSCALL;
-      pd_flags : [pd_interface,pd_implemen,pd_notobjintf];
+      pd_flags : [pd_interface,pd_implemen,pd_notobject,pd_notobjintf];
       handler  : {$ifdef FPCPROCVAR}@{$endif}pd_syscall;
       handler  : {$ifdef FPCPROCVAR}@{$endif}pd_syscall;
-      pocall   : pocall_palmossyscall;
+      pocall   : pocall_syscall;
       pooption : [];
       pooption : [];
       mutexclpocall : [];
       mutexclpocall : [];
       mutexclpotype : [potype_constructor,potype_destructor];
       mutexclpotype : [potype_constructor,potype_destructor];
@@ -2193,7 +2193,10 @@ const
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.167  2004-04-28 00:20:43  karoly
+  Revision 1.168  2004-04-28 15:19:03  florian
+    + syscall directive support for MorphOS added
+
+  Revision 1.167  2004/04/28 00:20:43  karoly
     * fixed locationstr having nonsense values in some cases
     * fixed locationstr having nonsense values in some cases
 
 
   Revision 1.166  2004/04/19 02:12:18  karoly
   Revision 1.166  2004/04/19 02:12:18  karoly

+ 5 - 2
compiler/powerpc/cpuinfo.pas

@@ -75,7 +75,7 @@ Const
    jmp_buf_size = 232;
    jmp_buf_size = 232;
 
 
    { calling conventions supported by the code generator }
    { calling conventions supported by the code generator }
-   supported_calling_conventions = [
+   supported_calling_conventions : tproccalloptions = [
      pocall_internproc,
      pocall_internproc,
      pocall_compilerproc,
      pocall_compilerproc,
      pocall_inline,
      pocall_inline,
@@ -101,7 +101,10 @@ Implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.17  2004-02-27 10:21:05  florian
+  Revision 1.18  2004-04-28 15:19:03  florian
+    + syscall directive support for MorphOS added
+
+  Revision 1.17  2004/02/27 10:21:05  florian
     * top_symbol killed
     * top_symbol killed
     + refaddr to treference added
     + refaddr to treference added
     + refsymbol to treference added
     + refsymbol to treference added

+ 5 - 2
compiler/sparc/cpuinfo.pas

@@ -66,7 +66,7 @@ const
   JMP_BUF_SIZE = 4; // 4 is used temporary to remove AllocTemp warning
   JMP_BUF_SIZE = 4; // 4 is used temporary to remove AllocTemp warning
 
 
   { calling conventions supported by the code generator }
   { calling conventions supported by the code generator }
-  supported_calling_conventions = [
+  supported_calling_conventions : tproccalloptions = [
     pocall_internproc,
     pocall_internproc,
     pocall_compilerproc,
     pocall_compilerproc,
     pocall_inline,
     pocall_inline,
@@ -90,7 +90,10 @@ implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.15  2004-03-12 08:18:11  mazen
+  Revision 1.16  2004-04-28 15:19:03  florian
+    + syscall directive support for MorphOS added
+
+  Revision 1.15  2004/03/12 08:18:11  mazen
   - revert '../' from include path
   - revert '../' from include path
 
 
   Revision 1.14  2004/03/11 16:22:28  mazen
   Revision 1.14  2004/03/11 16:22:28  mazen

+ 6 - 3
compiler/symconst.pas

@@ -369,13 +369,13 @@ const
 
 
 const
 const
    savestdregs_pocalls = [
    savestdregs_pocalls = [
-     pocall_cdecl,pocall_cppdecl,pocall_palmossyscall,
+     pocall_cdecl,pocall_cppdecl,pocall_syscall,
      pocall_stdcall,pocall_safecall,pocall_compilerproc,
      pocall_stdcall,pocall_safecall,pocall_compilerproc,
      pocall_register,pocall_softfloat
      pocall_register,pocall_softfloat
    ];
    ];
 
 
    clearstack_pocalls = [
    clearstack_pocalls = [
-     pocall_cdecl,pocall_cppdecl,pocall_palmossyscall
+     pocall_cdecl,pocall_cppdecl,pocall_syscall
    ];
    ];
 
 
    pushleftright_pocalls : tproccalloptions = [pocall_register,pocall_pascal];
    pushleftright_pocalls : tproccalloptions = [pocall_register,pocall_pascal];
@@ -407,7 +407,10 @@ initialization
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.79  2004-04-18 15:22:24  florian
+  Revision 1.80  2004-04-28 15:19:03  florian
+    + syscall directive support for MorphOS added
+
+  Revision 1.79  2004/04/18 15:22:24  florian
     + location support for arguments, currently PowerPC/MorphOS only
     + location support for arguments, currently PowerPC/MorphOS only
 
 
   Revision 1.78  2004/03/23 22:34:49  peter
   Revision 1.78  2004/03/23 22:34:49  peter

+ 6 - 3
compiler/systems/t_morph.pas

@@ -102,7 +102,7 @@ begin
      s:=HPath.Str;
      s:=HPath.Str;
      if not (cs_link_on_target in aktglobalswitches) then
      if not (cs_link_on_target in aktglobalswitches) then
        s:=GetShortName(s);
        s:=GetShortName(s);
-     if s<>'' then  
+     if s<>'' then
        LinkRes.Add('SEARCH_DIR('+s+')');
        LinkRes.Add('SEARCH_DIR('+s+')');
      HPath:=TStringListItem(HPath.Next);
      HPath:=TStringListItem(HPath.Next);
    end;
    end;
@@ -187,7 +187,7 @@ begin
   StripStr:='';
   StripStr:='';
   { FIXME!!! - Need to add proper stripping support with }
   { FIXME!!! - Need to add proper stripping support with }
   { separate strip command, to avoid stripping __abox__ symbol, }
   { separate strip command, to avoid stripping __abox__ symbol, }
-  { which is required to be present in current MorphOS executables! } 
+  { which is required to be present in current MorphOS executables! }
 {  if (cs_link_strip in aktglobalswitches) then
 {  if (cs_link_strip in aktglobalswitches) then
    StripStr:='-s';}
    StripStr:='-s';}
 
 
@@ -224,7 +224,10 @@ initialization
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.3  2004-04-09 01:32:46  karoly
+  Revision 1.4  2004-04-28 15:19:03  florian
+    + syscall directive support for MorphOS added
+
+  Revision 1.3  2004/04/09 01:32:46  karoly
    * disable stripping in mos linking scripts.
    * disable stripping in mos linking scripts.
 
 
   Revision 1.2  2004/04/08 17:11:02  karoly
   Revision 1.2  2004/04/08 17:11:02  karoly

+ 10 - 8
compiler/x86/cgx86.pas

@@ -202,12 +202,11 @@ unit cgx86;
       end;
       end;
 
 
     function Tcgx86.getmmxregister(list:Taasmoutput):Tregister;
     function Tcgx86.getmmxregister(list:Taasmoutput):Tregister;
-
-    begin
-      if not assigned(rg[R_MMXREGISTER]) then
-        internalerror(200312124);
-      result:=rg[R_MMXREGISTER].getregister(list,R_SUBNONE);
-    end;
+      begin
+        if not assigned(rg[R_MMXREGISTER]) then
+          internalerror(200312124);
+        result:=rg[R_MMXREGISTER].getregister(list,R_SUBNONE);
+      end;
 
 
     procedure Tcgx86.getexplicitregister(list:Taasmoutput;r:Tregister);
     procedure Tcgx86.getexplicitregister(list:Taasmoutput;r:Tregister);
       begin
       begin
@@ -1791,7 +1790,10 @@ unit cgx86;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.120  2004-04-09 14:36:05  peter
+  Revision 1.121  2004-04-28 15:19:03  florian
+    + syscall directive support for MorphOS added
+
+  Revision 1.120  2004/04/09 14:36:05  peter
     * A_MOVSL renamed to A_MOVSD
     * A_MOVSL renamed to A_MOVSD
 
 
   Revision 1.119  2004/03/11 19:35:05  peter
   Revision 1.119  2004/03/11 19:35:05  peter
@@ -2272,4 +2274,4 @@ end.
     * splitting of i386\cgcpu.pas into x86\cgx86.pas and i386\cgcpu.pas
     * splitting of i386\cgcpu.pas into x86\cgx86.pas and i386\cgcpu.pas
       cgx86.pas will contain the common code for i386 and x86_64
       cgx86.pas will contain the common code for i386 and x86_64
 
 
-}
+}

+ 5 - 2
compiler/x86_64/cpuinfo.pas

@@ -84,7 +84,7 @@ Const
 
 
 
 
    { calling conventions supported by the code generator }
    { calling conventions supported by the code generator }
-   supported_calling_conventions = [
+   supported_calling_conventions : tproccalloptions = [
      pocall_internproc,
      pocall_internproc,
      pocall_compilerproc,
      pocall_compilerproc,
      pocall_inline,
      pocall_inline,
@@ -111,7 +111,10 @@ Implementation
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.11  2004-04-12 18:25:26  florian
+  Revision 1.12  2004-04-28 15:19:03  florian
+    + syscall directive support for MorphOS added
+
+  Revision 1.11  2004/04/12 18:25:26  florian
     + AInt added
     + AInt added
 
 
   Revision 1.10  2003/12/25 01:07:09  florian
   Revision 1.10  2003/12/25 01:07:09  florian