瀏覽代碼

* more adaptions for SPARC64

git-svn-id: trunk@36381 -
florian 8 年之前
父節點
當前提交
832ad67d63
共有 4 個文件被更改,包括 59 次插入3 次删除
  1. 3 3
      .gitattributes
  2. 56 0
      compiler/sparcgen/cpubase.pas
  3. 0 0
      compiler/sparcgen/opcode.inc
  4. 0 0
      compiler/sparcgen/strinst.inc

+ 3 - 3
.gitattributes

@@ -663,7 +663,6 @@ compiler/sparc/aoptcpu.pas svneol=native#text/plain
 compiler/sparc/aoptcpub.pas svneol=native#text/plain
 compiler/sparc/aoptcpud.pas svneol=native#text/plain
 compiler/sparc/cgcpu.pas svneol=native#text/plain
-compiler/sparc/cpubase.pas svneol=native#text/plain
 compiler/sparc/cpuelf.pas svneol=native#text/plain
 compiler/sparc/cpugas.pas svneol=native#text/plain
 compiler/sparc/cpuinfo.pas svneol=native#text/plain
@@ -679,7 +678,6 @@ compiler/sparc/ncpucnv.pas svneol=native#text/plain
 compiler/sparc/ncpuinln.pas svneol=native#text/plain
 compiler/sparc/ncpumat.pas svneol=native#text/plain
 compiler/sparc/ncpuset.pas svneol=native#text/plain
-compiler/sparc/opcode.inc svneol=native#text/plain
 compiler/sparc/racpu.pas svneol=native#text/plain
 compiler/sparc/racpugas.pas svneol=native#text/plain
 compiler/sparc/rgcpu.pas svneol=native#text/plain
@@ -692,7 +690,6 @@ compiler/sparc/rspsri.inc svneol=native#text/plain
 compiler/sparc/rspstab.inc svneol=native#text/plain
 compiler/sparc/rspstd.inc svneol=native#text/plain
 compiler/sparc/rspsup.inc svneol=native#text/plain
-compiler/sparc/strinst.inc svneol=native#text/plain
 compiler/sparc/symcpu.pas svneol=native#text/plain
 compiler/sparc64/cpuinfo.pas svneol=native#text/plain
 compiler/sparc64/rsp64con.inc svneol=native#text/pascal
@@ -704,7 +701,10 @@ compiler/sparc64/rsp64sri.inc svneol=native#text/pascal
 compiler/sparc64/rsp64stab.inc svneol=native#text/pascal
 compiler/sparc64/rsp64std.inc svneol=native#text/pascal
 compiler/sparc64/rsp64sup.inc svneol=native#text/pascal
+compiler/sparcgen/cpubase.pas svneol=native#text/plain
+compiler/sparcgen/opcode.inc svneol=native#text/plain
 compiler/sparcgen/spreg.dat svneol=native#text/plain
+compiler/sparcgen/strinst.inc svneol=native#text/plain
 compiler/switches.pas svneol=native#text/plain
 compiler/symbase.pas svneol=native#text/plain
 compiler/symconst.pas svneol=native#text/plain

+ 56 - 0
compiler/sparc/cpubase.pas → compiler/sparcgen/cpubase.pas

@@ -53,6 +53,7 @@ uses
                                   Registers
 *****************************************************************************}
 
+{$ifdef SPARC}
     type
       { Number of registers used for indexing in tables }
       tregisterindex=0..{$i rspnor.inc}-1;
@@ -89,7 +90,46 @@ uses
       regdwarf_table : array[tregisterindex] of ShortInt = (
         {$i rspdwrf.inc}
       );
+{$endif SPARC}
 
+{$ifdef SPARC64}
+    type
+      { Number of registers used for indexing in tables }
+      tregisterindex=0..{$i rsp64nor.inc}-1;
+      totherregisterset = set of tregisterindex;
+
+    const
+      { Available Superregisters }
+      {$i rsp64sup.inc}
+
+      { No Subregisters }
+      R_SUBWHOLE = R_SUBQ;
+
+      { Available Registers }
+      {$i rsp64con.inc}
+
+      first_int_imreg = $20;
+      first_fpu_imreg = $20;
+
+      { MM Super register first and last }
+      first_mm_supreg    = 0;
+      first_mm_imreg     = 1;
+
+{ TODO: Calculate bsstart}
+      regnumber_count_bsstart = 128;
+
+      regnumber_table : array[tregisterindex] of tregister = (
+        {$i rsp64num.inc}
+      );
+
+      regstabs_table : array[tregisterindex] of ShortInt = (
+        {$i rsp64stab.inc}
+      );
+
+      regdwarf_table : array[tregisterindex] of ShortInt = (
+        {$i rsp64dwrf.inc}
+      );
+{$endif SPARC64}
 
 {*****************************************************************************
                                 Conditions
@@ -298,6 +338,7 @@ implementation
     uses
       rgBase,verbose;
 
+{$ifdef SPARC}
     const
       std_regname_table : TRegNameTAble = (
         {$i rspstd.inc}
@@ -310,7 +351,22 @@ implementation
       std_regname_index : TRegisterIndexTable = (
         {$i rspsri.inc}
       );
+{$endif SPARC}
 
+{$ifdef SPARC64}
+    const
+      std_regname_table : TRegNameTAble = (
+        {$i rsp64std.inc}
+      );
+
+      regnumber_index : TRegisterIndexTable = (
+        {$i rsp64rni.inc}
+      );
+
+      std_regname_index : TRegisterIndexTable = (
+        {$i rsp64sri.inc}
+      );
+{$endif SPARC64}
 
 {*****************************************************************************
                                   Helpers

+ 0 - 0
compiler/sparc/opcode.inc → compiler/sparcgen/opcode.inc


+ 0 - 0
compiler/sparc/strinst.inc → compiler/sparcgen/strinst.inc