diff options
author | peter <peter@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2005-10-20 19:20:38 +0000 |
---|---|---|
committer | peter <peter@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2005-10-20 19:20:38 +0000 |
commit | 5ed980d600661e3e77f429a510f093f4a001dee9 (patch) | |
tree | 40d655e7921c1019d039da654a9df550de3cd249 /compiler/alpha/rgcpu.pas | |
parent | 907c764cb881dab769452696fc5e6bee076c2656 (diff) | |
download | fpc-5ed980d600661e3e77f429a510f093f4a001dee9.tar.gz |
* retag for unitrwunitrw
git-svn-id: http://svn.freepascal.org/svn/fpc/branches/unitrw@1551 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/alpha/rgcpu.pas')
-rw-r--r-- | compiler/alpha/rgcpu.pas | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/compiler/alpha/rgcpu.pas b/compiler/alpha/rgcpu.pas new file mode 100644 index 0000000000..23a1ca06e5 --- /dev/null +++ b/compiler/alpha/rgcpu.pas @@ -0,0 +1,69 @@ +{ + Copyright (c) 1998-2002 by Florian Klaempfl + + This unit implements the powerpc specific class for the register + allocator + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + 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 rgcpu; + +{$i fpcdefs.inc} + + interface + + uses + aasmbase,aasmtai, + cpubase, + rgobj; + + type + trgcpu = class(trgobj) + function getcpuregisterint(list: taasmoutput; reg: tregister): tregister; override; + procedure ungetregisterint(list: taasmoutput; reg: tregister); override; + end; + + implementation + + uses + cgobj; + + function trgcpu.getcpuregisterint(list: taasmoutput; reg: tregister): tregister; + + begin + if reg = R_0 then + begin + cg.a_reg_alloc(list,reg); + result := reg; + end + else result := inherited getcpuregisterint(list,reg); + end; + + + procedure trgcpu.ungetregisterint(list: taasmoutput; reg: tregister); + + begin + if reg = R_0 then + cg.a_reg_dealloc(list,reg) + else + inherited ungetregisterint(list,reg); + end; + +initialization + rg := trgcpu.create; +end. |