Explorar o código

+ added more patches from Mazen for SPARC port

carl %!s(int64=23) %!d(string=hai) anos
pai
achega
f3e1648aa9
Modificáronse 4 ficheiros con 103 adicións e 16 borrados
  1. 4 8
      compiler/cginfo.pas
  2. 12 2
      compiler/gdb.pas
  3. 11 4
      compiler/systems.pas
  4. 76 2
      compiler/targets/t_linux.pas

+ 4 - 8
compiler/cginfo.pas

@@ -90,13 +90,6 @@ interface
        OS_FLOAT = OS_F??;
        OS_VECTOR = OS_NO; { the normal registers can also be used as vectors }
 {$endif ia64}
-{$ifdef SPARC}
-       OS_ADDR=OS_32;
-       OS_INT=OS_32;
-       OS_FLOAT=OS_F64;
-       {$WARNING "OS_VECTOR" was set to "OS_M64" but not verified!}  
-       OS_VECTOR=OS_M64;
-{$endif SPARC}
 
     const
        tcgsize2size : Array[tcgsize] of integer =
@@ -121,7 +114,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.5  2002-04-21 19:46:52  carl
+  Revision 1.6  2002-05-06 19:48:26  carl
+  + added more patches from Mazen for SPARC port
+
+  Revision 1.5  2002/04/21 19:46:52  carl
   + added patch for SPARC from Mazen (to move to cpuinfo)
 
   Revision 1.4  2002/04/21 15:26:15  carl

+ 12 - 2
compiler/gdb.pas

@@ -145,7 +145,14 @@ Const
           -1,-1,-1,-1,-1,-1,-1,-1
         );
 {$endif}
-
+{$IFDEF SPARC}
+        GDB_SPARC_index:ARRAY[tregister]OF ShortInt=(0,0,0,0,0,0,0,0,0,0,0,0,0,
+          0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+          0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+          0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+          0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+          0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
+{$ENDIF SPARC}
   implementation
 
 { to use N_EXCL we have to count the character in the stabs for
@@ -297,7 +304,10 @@ end.
 
 {
   $Log$
-  Revision 1.9  2001-12-02 17:20:58  peter
+  Revision 1.10  2002-05-06 19:49:26  carl
+  + added more patches from Mazen for SPARC port
+
+  Revision 1.9  2001/12/02 17:20:58  peter
     * merged register fixes
 
   Revision 1.8  2001/10/12 16:05:36  peter

+ 11 - 4
compiler/systems.pas

@@ -112,7 +112,8 @@ interface
             ,as_m68k_as,as_m68k_gas,as_m68k_mit,as_m68k_mot,
               as_m68k_mpw,as_m68k_palm
             ,as_alpha_as
-            ,as_powerpc_as,as_powerpc_mpw
+            ,as_powerpc_as,as_powerpc_mpw,
+            as_SPARC_as,as_SPARC_elf32
        );
 
        tld = (ld_none,
@@ -122,7 +123,8 @@ interface
             ld_m68k_Amiga,ld_m68k_Atari,ld_m68k_Mac,
               ld_m68k_linux,ld_m68k_PalmOS,ld_m68k_freebsd,
             ld_alpha_linux,
-            ld_powerpc_linux,ld_powerpc_macos,ld_i386_Wdosx
+            ld_powerpc_linux,ld_powerpc_macos,ld_i386_Wdosx,
+            ld_SPARC_SunOs,ld_SPARC_linux
        );
 
        tar = (ar_none
@@ -641,7 +643,6 @@ begin
     {$endif atari}
   {$endif amiga}
 {$endif cpu68}
-
 { Now default target, this is dependent on the i386 or m68k define,
   when the define is the same as the current cpu then we use the source
   os, else we pick a default }
@@ -673,6 +674,9 @@ begin
     default_target(target_powerpc_linux);
   {$endif cpuppc}
 {$endif powerpc}
+{$IFDEF SPARC}
+  default_target(target_SPARC_linux);
+{$ENDIF SPARC}
 end;
 
 
@@ -682,7 +686,10 @@ finalization
 end.
 {
   $Log$
-  Revision 1.41  2002-04-24 16:08:30  carl
+  Revision 1.42  2002-05-06 19:52:04  carl
+  + added more patches from Mazen for SPARC port
+
+  Revision 1.41  2002/04/24 16:08:30  carl
 
   * fix compilation problem
 

+ 76 - 2
compiler/targets/t_linux.pas

@@ -699,7 +699,72 @@ end;
             use_function_relative_addresses : true
           );
 {$endif alpha}
-
+{$IFDEF SPARC}
+  CONST
+       target_SPARC_linux_info : ttargetinfo =
+          (
+            target       : target_SPARC_Linux;
+            name         : 'Linux for SPARC';
+            shortname    : 'Linux';
+            flags        : [];
+            cpu          : cpu_SPARC;
+            unit_env     : 'LINUXUNITS';
+            extradefines : 'UNIX';
+            sourceext    : '.pp';
+            pasext       : '.pas';
+            exeext       : '';
+            defext       : '.def';
+            scriptext    : '.sh';
+            smartext     : '.sl';
+            unitext      : '.ppu';
+            unitlibext   : '.ppl';
+            asmext       : '.s';
+            objext       : '.o';
+            resext       : '.res';
+            resobjext    : '.or';
+            sharedlibext : '.so';
+            staticlibext : '.a';
+            staticlibprefix : 'libp';
+            sharedlibprefix : 'lib';
+            sharedClibext : '.so';
+            staticClibext : '.a';
+            staticClibprefix : 'lib';
+            sharedClibprefix : 'lib';
+            Cprefix      : '';
+            newline      : #10;
+            dirsep       : '/';
+            files_case_relevent : true;
+            assem        : as_SPARC_elf32;
+            assemextern  : as_SPARC_as;
+            link         : ld_SPARC_linux;
+            linkextern   : ld_SPARC_linux;
+            ar           : ar_gnu_ar;
+            res          : res_none;
+            script       : script_unix;
+            endian       : endian_little;
+            alignment    :
+              (
+                procalign       : 4;
+                loopalign       : 4;
+                jumpalign       : 0;
+                constalignmin   : 0;
+                constalignmax   : 4;
+                varalignmin     : 0;
+                varalignmax     : 4;
+                localalignmin   : 0;
+                localalignmax   : 4;
+                paraalign       : 4;
+                recordalignmin  : 0;
+                recordalignmax  : 2;
+                maxCrecordalign : 4
+              );
+            first_parm_offset : 8;
+            heapsize     : 256*1024;
+            stacksize    : 262144;
+            DllScanSupported:false;
+            use_function_relative_addresses : true
+          );
+{$ENDIF SPARC}
 
 initialization
 {$ifdef i386}
@@ -726,10 +791,19 @@ initialization
   RegisterExport(target_alpha_linux,texportliblinux);
   RegisterTarget(target_alpha_linux_info);
 {$endif alpha}
+{$IFDEF SPARC}
+  RegisterLinker(ld_SPARC_linux,TLinkerLinux);
+  RegisterImport(target_SPARC_linux,timportliblinux);
+  RegisterExport(target_SPARC_linux,texportliblinux);
+  RegisterTarget(target_SPARC_linux_info);
+{$ENDIF SPARC}
 end.
 {
   $Log$
-  Revision 1.21  2002-04-22 18:19:22  carl
+  Revision 1.22  2002-05-06 19:46:36  carl
+  + added more patches from Mazen for SPARC port
+
+  Revision 1.21  2002/04/22 18:19:22  carl
   - remove use_bound_instruction field
 
   Revision 1.20  2002/04/20 21:43:18  carl