浏览代码

+ added n68kcal.pas, forgot to add previously

git-svn-id: trunk@1977 -
Károly Balogh 19 年之前
父节点
当前提交
12b1ff0df2
共有 2 个文件被更改,包括 74 次插入0 次删除
  1. 1 0
      .gitattributes
  2. 73 0
      compiler/m68k/n68kcal.pas

+ 1 - 0
.gitattributes

@@ -179,6 +179,7 @@ compiler/m68k/cpupi.pas svneol=native#text/plain
 compiler/m68k/cpuswtch.pas svneol=native#text/plain
 compiler/m68k/cputarg.pas svneol=native#text/plain
 compiler/m68k/itcpugas.pas svneol=native#text/plain
+compiler/m68k/n68kcal.pas svneol=native#text/plain
 compiler/m68k/n68kcnv.pas svneol=native#text/plain
 compiler/m68k/n68kmat.pas svneol=native#text/plain
 compiler/m68k/ncpuadd.pas svneol=native#text/plain

+ 73 - 0
compiler/m68k/n68kcal.pas

@@ -0,0 +1,73 @@
+{
+    Copyright (c) 2002 by Florian Klaempfl
+
+    Implements the M68K specific part of call nodes
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published bymethodpointer
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ ****************************************************************************
+}
+unit n68kcal;
+
+{$i fpcdefs.inc}
+
+interface
+
+    uses
+      symdef,node,ncal,ncgcal;
+
+    type
+       tm68kcallnode = class(tcgcallnode)
+         procedure do_syscall;override;
+       end;
+
+
+implementation
+
+    uses
+      globtype,systems,
+      cutils,verbose,globals,
+      symconst,symbase,symsym,symtable,defutil,paramgr,parabase,
+      cgbase,pass_2,
+      cpuinfo,cpubase,aasmbase,aasmtai,aasmcpu,
+      nmem,nld,ncnv,
+      ncgutil,cgutils,cgobj,tgobj,regvars,rgobj,rgcpu,
+      cg64f32,cgcpu,cpupi,procinfo;
+
+
+    procedure tm68kcallnode.do_syscall;
+      var
+        tmpref: treference;
+      begin
+        case target_info.system of
+          system_m68k_amiga:
+            begin
+              if po_syscall_legacy in tprocdef(procdefinition).procoptions then
+                begin
+                  reference_reset_base(tmpref,NR_A6,-tprocdef(procdefinition).extnumber);
+                  exprasmlist.concat(taicpu.op_ref_reg(A_JSR,S_NO,tmpref,NR_NO));
+                end
+              else
+                internalerror(2005010403);
+            end;
+          else
+            internalerror(2004042901);
+        end;
+      end;
+
+
+begin
+   ccallnode:=tm68kcallnode;
+end.