Browse Source

* fixed some x86-64 issues

florian 21 years ago
parent
commit
6170faf334

+ 5 - 2
compiler/cg64f64.pas

@@ -34,7 +34,7 @@ unit cg64f64;
     uses
        aasmbase,aasmtai,aasmcpu,
        cpuinfo, cpubase,
-       cginfo, cgobj,
+       cgbase,cgobj,
        symtype;
 
     type
@@ -223,7 +223,10 @@ unit cg64f64;
 end.
 {
   $Log$
-  Revision 1.8  2003-06-03 21:11:09  peter
+  Revision 1.9  2003-12-22 19:00:17  florian
+    * fixed some x86-64 issues
+
+  Revision 1.8  2003/06/03 21:11:09  peter
     * cg.a_load_* get a from and to size specifier
     * makeregsize only accepts newregister
     * i386 uses generic tcgnotnode,tcgunaryminus

+ 5 - 2
compiler/cgobj.pas

@@ -831,7 +831,7 @@ implementation
               if (locpara.size in [OS_S64,OS_64]) then
                 begin
 {$ifdef cpu64bit}
-                  ungetregisterint(list,locpara.register64);
+                  ungetregister(list,locpara.register64);
 {$else cpu64bit}
                   getexplicitregister(list,locpara.registerlow);
                   getexplicitregister(list,locpara.registerhigh);
@@ -1986,7 +1986,10 @@ finalization
 end.
 {
   $Log$
-  Revision 1.141  2003-12-21 19:42:42  florian
+  Revision 1.142  2003-12-22 19:00:17  florian
+    * fixed some x86-64 issues
+
+  Revision 1.141  2003/12/21 19:42:42  florian
     * fixed ppc inlining stuff
     * fixed wrong unit writing
     + added some sse stuff

+ 8 - 5
compiler/ncgutil.pas

@@ -31,9 +31,9 @@ interface
       globtype,
       cpubase,cgbase,
       aasmbase,aasmtai,aasmcpu,
-      symconst,symbase,symdef,symsym,symtype,symtable,
+      symconst,symbase,symdef,symsym,symtype,symtable
 {$ifndef cpu64bit}
-      cg64f32
+      ,cg64f32
 {$endif cpu64bit}
       ;
 
@@ -501,7 +501,7 @@ implementation
               else
                begin
                  location_release(list,l);
-                 hregister:=cg.getregisterint(list,OS_INT);
+                 hregister:=cg.getintregister(list,OS_INT);
                end;
               { load value in low register }
               case l.loc of
@@ -543,7 +543,7 @@ implementation
               else
                begin
                  location_release(list,l);
-                 hregister:=cg.getregisterint(list,OS_INT);
+                 hregister:=cg.getintregister(list,OS_INT);
                end;
             end;
            hregister:=cg.makeregsize(hregister,dst_size);
@@ -2001,7 +2001,10 @@ implementation
 end.
 {
   $Log$
-  Revision 1.174  2003-12-07 16:28:30  jonas
+  Revision 1.175  2003-12-22 19:00:17  florian
+    * fixed some x86-64 issues
+
+  Revision 1.174  2003/12/07 16:28:30  jonas
     * fixed typo found by Charlie
 
   Revision 1.173  2003/12/06 01:15:22  florian

+ 5 - 2
compiler/x86_64/cgcpu.pas

@@ -29,7 +29,7 @@ unit cgcpu;
   interface
 
     uses
-       cginfo,cgbase,cgobj,cg64f64,cgx86,
+       cgbase,cgobj,cg64f64,cgx86,
        aasmbase,aasmtai,aasmcpu,
        cpubase,cpuinfo,cpupara,
        node,symconst;
@@ -192,7 +192,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.5  2003-09-25 13:13:32  florian
+  Revision 1.6  2003-12-22 19:00:17  florian
+    * fixed some x86-64 issues
+
+  Revision 1.5  2003/09/25 13:13:32  florian
     * more x86-64 fixes
 
   Revision 1.4  2003/04/30 15:45:35  florian

+ 5 - 25
compiler/x86_64/cpubase.inc

@@ -51,31 +51,8 @@ const
 *****************************************************************************}
 
     const
-      firstsaveintreg = RS_RAX;
-      lastsaveintreg  = RS_R15;
-      firstsavefpureg = RS_INVALID;
-      lastsavefpureg  = RS_INVALID;
-      firstsavemmreg  = RS_MM0;
-      lastsavemmreg   = RS_MM15;
-
-      general_registers = [RS_EAX,RS_EBX,RS_ECX,RS_EDX];
-      general_superregisters = [RS_RAX,RS_RBX,RS_RCX,RS_RDX];
-
-      usableregsint = [first_int_imreg..last_int_imreg];
       c_countusableregsint = 4;
 
-      maxaddrregs = 0;
-      usableregsaddr = [];
-      c_countusableregsaddr = 0;
-
-      maxvarregs = 4;
-      varregs : array[1..maxvarregs] of tsuperregister =
-         (RS_EBX,RS_EDX,RS_ECX,RS_EAX);
-
-      maxfpuvarregs = 8;
-      fpuvarregs : Array [1..maxfpuvarregs] of Tsuperregister =
-                (RS_MM8,RS_MM9,RS_MM10,RS_MM11,RS_MM12,RS_MM13,RS_MM14,RS_MM15);
-
 {*****************************************************************************
                                GDB Information
 *****************************************************************************}
@@ -112,7 +89,7 @@ const
       RS_STACK_POINTER_REG = RS_RSP;
       NR_STACK_POINTER_REG = NR_RSP;
       {# Frame pointer register }
-      RS_FRAME_POINTER_REG = RS_EBP;
+      RS_FRAME_POINTER_REG = RS_RBP;
       NR_FRAME_POINTER_REG = NR_RBP;
       { Register for addressing absolute data in a position independant way,
         such as in PIC code. The exact meaning is ABI specific. For
@@ -158,7 +135,10 @@ const
 
 {
   $Log$
-  Revision 1.8  2003-09-25 13:13:32  florian
+  Revision 1.9  2003-12-22 19:00:17  florian
+    * fixed some x86-64 issues
+
+  Revision 1.8  2003/09/25 13:13:32  florian
     * more x86-64 fixes
 
   Revision 1.7  2003/09/24 17:12:02  florian

+ 6 - 2
compiler/x86_64/cpuinfo.pas

@@ -49,7 +49,8 @@ Type
    ts32real = single;
    ts64real = double;
    ts80real = extended;
-   ts64comp = extended;
+   ts128real = type extended;
+   ts64comp = type extended;
 
    pbestreal=^bestreal;
 
@@ -106,7 +107,10 @@ Implementation
 end.
 {
   $Log$
-  Revision 1.8  2003-12-20 12:38:51  florian
+  Revision 1.9  2003-12-22 19:00:17  florian
+    * fixed some x86-64 issues
+
+  Revision 1.8  2003/12/20 12:38:51  florian
     * some x86-64 compilation fixe
 
   Revision 1.7  2003/09/24 17:12:02  florian