Browse Source

* fixed compilation

florian 21 years ago
parent
commit
e750e24f3b
1 changed files with 22 additions and 16 deletions
  1. 22 16
      compiler/m68k/cgcpu.pas

+ 22 - 16
compiler/m68k/cgcpu.pas

@@ -66,6 +66,7 @@ unit cgcpu;
           procedure g_restore_frame_pointer(list : taasmoutput);override;
           procedure g_return_from_proc(list : taasmoutput;parasize : aword);override;
           procedure g_restore_standard_registers(list:Taasmoutput);override;
+          procedure g_save_standard_registers(list:Taasmoutput);override;
           procedure g_save_all_registers(list : taasmoutput);override;
           procedure g_restore_all_registers(list : taasmoutput;const funcretparaloc:tparalocation);override;
      protected
@@ -105,7 +106,7 @@ unit cgcpu;
 
     uses
        globtype,globals,verbose,systems,cutils,
-       symdef,symsym,defutil,paramgr,
+       symdef,symsym,defutil,paramgr,procinfo,
        rgobj,tgobj,rgcpu,
        cgutils;
 
@@ -986,7 +987,7 @@ unit cgcpu;
            end { endif localsize <> 0 }
           else
            begin
-             reference_reset_base(ref,NR_STACK_POINTER_REG);
+             reference_reset_base(ref,NR_STACK_POINTER_REG,0);
              ref.direction:=dir_dec;
              list.concat(taicpu.op_reg_ref(A_MOVE,S_L,r,ref));
              list.concat(taicpu.op_reg_reg(A_MOVE,S_L,rsp,r));
@@ -1038,7 +1039,7 @@ unit cgcpu;
 
                 { save the PC counter (pop it from the stack)         }
                 hregister := getaddressregister(list);
-                reference_reset_base(ref,NR_STACK_POINTER_REG);
+                reference_reset_base(ref,NR_STACK_POINTER_REG,0);
                 ref.direction:=dir_inc;
                 list.concat(taicpu.op_ref_reg(A_MOVE,S_L,ref,hregister));
                 { can we do a quick addition ... }
@@ -1049,7 +1050,7 @@ unit cgcpu;
                    list.concat(taicpu.op_const_reg(A_ADD,S_L,parasize,r));
 
                 { restore the PC counter (push it on the stack)       }
-                reference_reset_base(ref,NR_STACK_POINTER_REG);
+                reference_reset_base(ref,NR_STACK_POINTER_REG,0);
                 ref.direction:=dir_dec;
                 list.concat(taicpu.op_reg_ref(A_MOVE,S_L,hregister,ref));
                 list.concat(taicpu.op_none(A_RTS,S_NO));
@@ -1060,41 +1061,43 @@ unit cgcpu;
       end;
 
 
-    procedure Tcg68k.g_save_standard_registers(list:Taasmoutput;usedinproc:Tsupregset);
+    procedure Tcg68k.g_save_standard_registers(list:Taasmoutput);
       var
-        tosave:Tsupregset;
+        tosave : tcpuregisterset;
         ref : treference;
       begin
+
         tosave:=std_saved_registers;
         { only save the registers which are not used and must be saved }
-        tosave:=tosave*usedinproc;
-        reference_reset_base(ref,NR_STACK_POINTER_REG);
+        tosave:=tosave*(rg[R_INTREGISTER].used_in_proc+rg[R_ADDRESSREGISTER].used_in_proc);
+        reference_reset_base(ref,NR_STACK_POINTER_REG,0);
         ref.direction:=dir_dec;
         if tosave<>[] then
-          list.concat(taicpu.op_reglist_reg(A_MOVEM,S_L,tosave,r));
+          list.concat(taicpu.op_regset_ref(A_MOVEM,S_L,tosave,ref));
       end;
 
 
-    procedure Tcg68k.g_restore_standard_registers(list:Taasmoutput;usedinproc:Tsupregset);
+    procedure Tcg68k.g_restore_standard_registers(list:Taasmoutput);
       var
-        torestore:Tsupregset;
+        torestore : tcpuregisterset;
         r:Tregister;
         ref : treference;
       begin
         torestore:=std_saved_registers;
         { should be intersected with used regs, no ? }
-        torestore:=torestore*usedinproc;
-        reference_reset_base(ref,NR_STACKPOINTER_REG);
+        torestore:=torestore*(rg[R_INTREGISTER].used_in_proc+rg[R_ADDRESSREGISTER].used_in_proc);
+        reference_reset_base(ref,NR_STACK_POINTER_REG,0);
         ref.direction:=dir_inc;
         if torestore<>[] then
-          list.concat(taicpu.op_ref_reglist(A_MOVEM,S_L,ref,torestore));
+          list.concat(taicpu.op_ref_regset(A_MOVEM,S_L,ref,torestore));
       end;
 
+
     procedure tcg68k.g_save_all_registers(list : taasmoutput);
       begin
       end;
 
-    procedure tcg68k.g_restore_all_registers(list : taasmoutput;accused,acchiused:boolean);
+    procedure tcg68k.g_restore_all_registers(list : taasmoutput;const funcretparaloc:tparalocation);
       begin
       end;
 
@@ -1273,7 +1276,10 @@ end.
 
 {
   $Log$
-  Revision 1.23  2004-04-18 21:13:59  florian
+  Revision 1.24  2004-04-19 21:15:12  florian
+    * fixed compilation
+
+  Revision 1.23  2004/04/18 21:13:59  florian
     * more adaptions for m68k
 
   Revision 1.22  2004/03/02 00:36:33  olle