mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-11-22 16:39:34 +01:00
+ basics for sparc64 support, we continue to use the name "sparc" for sparc32, both sparc are identified by sparcgen (dirs, defines etc.)
git-svn-id: trunk@36374 -
This commit is contained in:
parent
a5b3576577
commit
188ec0f0c7
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -638,6 +638,7 @@ compiler/ppcmipsel.lpi svneol=native#text/plain
|
|||||||
compiler/ppcppc.lpi svneol=native#text/plain
|
compiler/ppcppc.lpi svneol=native#text/plain
|
||||||
compiler/ppcppc64.lpi svneol=native#text/plain
|
compiler/ppcppc64.lpi svneol=native#text/plain
|
||||||
compiler/ppcsparc.lpi svneol=native#text/plain
|
compiler/ppcsparc.lpi svneol=native#text/plain
|
||||||
|
compiler/ppcsparc64.lpi svneol=native#text/plain
|
||||||
compiler/ppheap.pas svneol=native#text/plain
|
compiler/ppheap.pas svneol=native#text/plain
|
||||||
compiler/ppu.pas svneol=native#text/plain
|
compiler/ppu.pas svneol=native#text/plain
|
||||||
compiler/ppx86_64.lpi svneol=native#text/plain
|
compiler/ppx86_64.lpi svneol=native#text/plain
|
||||||
@ -694,6 +695,7 @@ compiler/sparc/rspsup.inc svneol=native#text/plain
|
|||||||
compiler/sparc/spreg.dat svneol=native#text/plain
|
compiler/sparc/spreg.dat svneol=native#text/plain
|
||||||
compiler/sparc/strinst.inc svneol=native#text/plain
|
compiler/sparc/strinst.inc svneol=native#text/plain
|
||||||
compiler/sparc/symcpu.pas svneol=native#text/plain
|
compiler/sparc/symcpu.pas svneol=native#text/plain
|
||||||
|
compiler/sparc64/cpuinfo.pas svneol=native#text/plain
|
||||||
compiler/switches.pas svneol=native#text/plain
|
compiler/switches.pas svneol=native#text/plain
|
||||||
compiler/symbase.pas svneol=native#text/plain
|
compiler/symbase.pas svneol=native#text/plain
|
||||||
compiler/symconst.pas svneol=native#text/plain
|
compiler/symconst.pas svneol=native#text/plain
|
||||||
|
|||||||
@ -32,7 +32,7 @@ fpcdir=..
|
|||||||
unexport FPC_VERSION FPC_COMPILERINFO
|
unexport FPC_VERSION FPC_COMPILERINFO
|
||||||
|
|
||||||
# Which platforms are ready for inclusion in the cycle
|
# Which platforms are ready for inclusion in the cycle
|
||||||
CYCLETARGETS=i386 powerpc sparc arm x86_64 powerpc64 m68k armeb mipsel mips avr jvm i8086 aarch64
|
CYCLETARGETS=i386 powerpc sparc arm x86_64 powerpc64 m68k armeb mipsel mips avr jvm i8086 aarch64 sparc64
|
||||||
|
|
||||||
# All supported targets used for clean
|
# All supported targets used for clean
|
||||||
ALLTARGETS=$(CYCLETARGETS)
|
ALLTARGETS=$(CYCLETARGETS)
|
||||||
@ -47,6 +47,9 @@ endif
|
|||||||
ifdef SPARC
|
ifdef SPARC
|
||||||
PPC_TARGET=sparc
|
PPC_TARGET=sparc
|
||||||
endif
|
endif
|
||||||
|
ifdef SPARC64
|
||||||
|
PPC_TARGET=sparc64
|
||||||
|
endif
|
||||||
ifdef M68K
|
ifdef M68K
|
||||||
PPC_TARGET=m68k
|
PPC_TARGET=m68k
|
||||||
endif
|
endif
|
||||||
@ -182,6 +185,9 @@ endif
|
|||||||
ifeq ($(CPC_TARGET),sparc)
|
ifeq ($(CPC_TARGET),sparc)
|
||||||
CPUSUF=sparc
|
CPUSUF=sparc
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(CPC_TARGET),sparc64)
|
||||||
|
CPUSUF=sparc64
|
||||||
|
endif
|
||||||
ifeq ($(CPC_TARGET),x86_64)
|
ifeq ($(CPC_TARGET),x86_64)
|
||||||
CPUSUF=x64
|
CPUSUF=x64
|
||||||
endif
|
endif
|
||||||
@ -281,7 +287,12 @@ endif
|
|||||||
|
|
||||||
# Sparc specific
|
# Sparc specific
|
||||||
ifeq ($(PPC_TARGET),sparc)
|
ifeq ($(PPC_TARGET),sparc)
|
||||||
override LOCALOPT+=
|
override LOCALOPT+=-Fusparcgen
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Sparc specific
|
||||||
|
ifeq ($(PPC_TARGET),sparc64)
|
||||||
|
override LOCALOPT+=-Fusparcgen
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# ARM specific
|
# ARM specific
|
||||||
@ -411,7 +422,7 @@ endif
|
|||||||
# CPU targets
|
# CPU targets
|
||||||
#####################################################################
|
#####################################################################
|
||||||
|
|
||||||
PPC_TARGETS=i386 m68k powerpc sparc arm armeb x86_64 powerpc64 mips mipsel avr jvm i8086 aarch64
|
PPC_TARGETS=i386 m68k powerpc sparc arm armeb x86_64 powerpc64 mips mipsel avr jvm i8086 aarch64 sparc64
|
||||||
INSTALL_TARGETS=$(addsuffix _exe_install,$(sort $(CYCLETARGETS) $(PPC_TARGETS)))
|
INSTALL_TARGETS=$(addsuffix _exe_install,$(sort $(CYCLETARGETS) $(PPC_TARGETS)))
|
||||||
SYMLINKINSTALL_TARGETS=$(addsuffix _symlink_install,$(sort $(CYCLETARGETS) $(PPC_TARGETS)))
|
SYMLINKINSTALL_TARGETS=$(addsuffix _symlink_install,$(sort $(CYCLETARGETS) $(PPC_TARGETS)))
|
||||||
|
|
||||||
@ -773,7 +784,7 @@ ifeq ($(OS_SOURCE),win64)
|
|||||||
EXCLUDE_80BIT_TARGETS=1
|
EXCLUDE_80BIT_TARGETS=1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(findstring $(CPU_SOURCE),aarch64 arm avr jvm m68k mips mipsel powerpc powerpc64 sparc),)
|
ifneq ($(findstring $(CPU_SOURCE),aarch64 arm avr jvm m68k mips mipsel powerpc powerpc64 sparc sparc64),)
|
||||||
EXCLUDE_80BIT_TARGETS=1
|
EXCLUDE_80BIT_TARGETS=1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
@ -102,8 +102,20 @@
|
|||||||
{$define cputargethasfixedstack}
|
{$define cputargethasfixedstack}
|
||||||
{$define cpurefshaveindexreg}
|
{$define cpurefshaveindexreg}
|
||||||
{$define SUPPORT_SAFECALL}
|
{$define SUPPORT_SAFECALL}
|
||||||
|
{$define sparcgen}
|
||||||
{$endif sparc}
|
{$endif sparc}
|
||||||
|
|
||||||
|
{$ifdef sparc64}
|
||||||
|
{$define cpu64bit}
|
||||||
|
{$define cpu64bitaddr}
|
||||||
|
{$define cpu64bitalu}
|
||||||
|
{$define cpuflags}
|
||||||
|
{$define cputargethasfixedstack}
|
||||||
|
{$define cpurefshaveindexreg}
|
||||||
|
{$define SUPPORT_SAFECALL}
|
||||||
|
{$define sparcgen}
|
||||||
|
{$endif sparc64}
|
||||||
|
|
||||||
{$ifdef powerpc}
|
{$ifdef powerpc}
|
||||||
{$define cpu32bit}
|
{$define cpu32bit}
|
||||||
{$define cpu32bitaddr}
|
{$define cpu32bitaddr}
|
||||||
|
|||||||
@ -449,6 +449,12 @@ interface
|
|||||||
asmcputype : cpu_none;
|
asmcputype : cpu_none;
|
||||||
fputype : fpu_hard;
|
fputype : fpu_hard;
|
||||||
{$endif sparc}
|
{$endif sparc}
|
||||||
|
{$ifdef sparc64}
|
||||||
|
cputype : cpu_SPARC_V9;
|
||||||
|
optimizecputype : cpu_SPARC_V9;
|
||||||
|
asmcputype : cpu_none;
|
||||||
|
fputype : fpu_hard;
|
||||||
|
{$endif sparc64}
|
||||||
{$ifdef arm}
|
{$ifdef arm}
|
||||||
cputype : cpu_armv4;
|
cputype : cpu_armv4;
|
||||||
optimizecputype : cpu_armv4;
|
optimizecputype : cpu_armv4;
|
||||||
|
|||||||
@ -30,6 +30,7 @@ program pp;
|
|||||||
x86_64 generate a compiler for the AMD x86-64 architecture
|
x86_64 generate a compiler for the AMD x86-64 architecture
|
||||||
M68K generate a compiler for the M68000
|
M68K generate a compiler for the M68000
|
||||||
SPARC generate a compiler for SPARC
|
SPARC generate a compiler for SPARC
|
||||||
|
SPARC64 generate a compiler for SPARC64
|
||||||
POWERPC generate a compiler for the PowerPC
|
POWERPC generate a compiler for the PowerPC
|
||||||
POWERPC64 generate a compiler for the PowerPC64 architecture
|
POWERPC64 generate a compiler for the PowerPC64 architecture
|
||||||
DEBUG version with debug code is generated
|
DEBUG version with debug code is generated
|
||||||
@ -104,6 +105,12 @@ program pp;
|
|||||||
{$endif CPUDEFINED}
|
{$endif CPUDEFINED}
|
||||||
{$define CPUDEFINED}
|
{$define CPUDEFINED}
|
||||||
{$endif SPARC}
|
{$endif SPARC}
|
||||||
|
{$ifdef SPARC64}
|
||||||
|
{$ifdef CPUDEFINED}
|
||||||
|
{$fatal ONLY one of the switches for the CPU type must be defined}
|
||||||
|
{$endif CPUDEFINED}
|
||||||
|
{$define CPUDEFINED}
|
||||||
|
{$endif SPARC64}
|
||||||
{$ifdef ARM}
|
{$ifdef ARM}
|
||||||
{$ifdef CPUDEFINED}
|
{$ifdef CPUDEFINED}
|
||||||
{$fatal ONLY one of the switches for the CPU type must be defined}
|
{$fatal ONLY one of the switches for the CPU type must be defined}
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<CONFIG>
|
<CONFIG>
|
||||||
<ProjectOptions>
|
<ProjectOptions>
|
||||||
<Version Value="9"/>
|
<Version Value="10"/>
|
||||||
<PathDelim Value="\"/>
|
<PathDelim Value="\"/>
|
||||||
<General>
|
<General>
|
||||||
<Flags>
|
<Flags>
|
||||||
@ -32,12 +32,10 @@
|
|||||||
<Unit0>
|
<Unit0>
|
||||||
<Filename Value="pp.pas"/>
|
<Filename Value="pp.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="pp"/>
|
|
||||||
</Unit0>
|
</Unit0>
|
||||||
<Unit1>
|
<Unit1>
|
||||||
<Filename Value="sparc\aasmcpu.pas"/>
|
<Filename Value="sparc\aasmcpu.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="aasmcpu"/>
|
|
||||||
</Unit1>
|
</Unit1>
|
||||||
</Units>
|
</Units>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
@ -48,8 +46,8 @@
|
|||||||
<Filename Value="sparc\pp"/>
|
<Filename Value="sparc\pp"/>
|
||||||
</Target>
|
</Target>
|
||||||
<SearchPaths>
|
<SearchPaths>
|
||||||
<IncludeFiles Value="sparc"/>
|
<IncludeFiles Value="sparc;sparcgen"/>
|
||||||
<OtherUnitFiles Value="sparc;systems"/>
|
<OtherUnitFiles Value="sparc;sparcgen;systems"/>
|
||||||
<UnitOutputDirectory Value="sparc\lazbuild"/>
|
<UnitOutputDirectory Value="sparc\lazbuild"/>
|
||||||
</SearchPaths>
|
</SearchPaths>
|
||||||
<Parsing>
|
<Parsing>
|
||||||
@ -70,7 +68,6 @@
|
|||||||
<StopAfterErrCount Value="50"/>
|
<StopAfterErrCount Value="50"/>
|
||||||
</ConfigFile>
|
</ConfigFile>
|
||||||
<CustomOptions Value="-dsparc"/>
|
<CustomOptions Value="-dsparc"/>
|
||||||
<CompilerPath Value="$(CompPath)"/>
|
|
||||||
</Other>
|
</Other>
|
||||||
</CompilerOptions>
|
</CompilerOptions>
|
||||||
</CONFIG>
|
</CONFIG>
|
||||||
|
|||||||
73
compiler/ppcsparc64.lpi
Normal file
73
compiler/ppcsparc64.lpi
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<CONFIG>
|
||||||
|
<ProjectOptions>
|
||||||
|
<Version Value="10"/>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<General>
|
||||||
|
<Flags>
|
||||||
|
<MainUnitHasUsesSectionForAllUnits Value="False"/>
|
||||||
|
<MainUnitHasCreateFormStatements Value="False"/>
|
||||||
|
<MainUnitHasTitleStatement Value="False"/>
|
||||||
|
<LRSInOutputDirectory Value="False"/>
|
||||||
|
</Flags>
|
||||||
|
<SessionStorage Value="InProjectDir"/>
|
||||||
|
<MainUnit Value="0"/>
|
||||||
|
<Title Value="ppcsparc64"/>
|
||||||
|
</General>
|
||||||
|
<BuildModes Count="1">
|
||||||
|
<Item1 Name="default" Default="True"/>
|
||||||
|
</BuildModes>
|
||||||
|
<PublishOptions>
|
||||||
|
<Version Value="2"/>
|
||||||
|
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
|
||||||
|
<ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
|
||||||
|
</PublishOptions>
|
||||||
|
<RunParams>
|
||||||
|
<local>
|
||||||
|
<FormatVersion Value="1"/>
|
||||||
|
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
|
||||||
|
</local>
|
||||||
|
</RunParams>
|
||||||
|
<Units Count="2">
|
||||||
|
<Unit0>
|
||||||
|
<Filename Value="pp.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
</Unit0>
|
||||||
|
<Unit1>
|
||||||
|
<Filename Value="sparc64\aasmcpu.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
</Unit1>
|
||||||
|
</Units>
|
||||||
|
</ProjectOptions>
|
||||||
|
<CompilerOptions>
|
||||||
|
<Version Value="11"/>
|
||||||
|
<PathDelim Value="\"/>
|
||||||
|
<Target>
|
||||||
|
<Filename Value="sparc64\pp"/>
|
||||||
|
</Target>
|
||||||
|
<SearchPaths>
|
||||||
|
<IncludeFiles Value="sparc64;sparcgen"/>
|
||||||
|
<OtherUnitFiles Value="sparc64;sparcgen;systems"/>
|
||||||
|
<UnitOutputDirectory Value="sparc64\lazbuild"/>
|
||||||
|
</SearchPaths>
|
||||||
|
<Parsing>
|
||||||
|
<SyntaxOptions>
|
||||||
|
<CStyleOperator Value="False"/>
|
||||||
|
<AllowLabel Value="False"/>
|
||||||
|
<CPPInline Value="False"/>
|
||||||
|
<UseAnsiStrings Value="False"/>
|
||||||
|
</SyntaxOptions>
|
||||||
|
</Parsing>
|
||||||
|
<Other>
|
||||||
|
<Verbosity>
|
||||||
|
<ShowWarn Value="False"/>
|
||||||
|
<ShowNotes Value="False"/>
|
||||||
|
<ShowHints Value="False"/>
|
||||||
|
</Verbosity>
|
||||||
|
<ConfigFile>
|
||||||
|
<StopAfterErrCount Value="50"/>
|
||||||
|
</ConfigFile>
|
||||||
|
<CustomOptions Value="-dsparc64"/>
|
||||||
|
</Other>
|
||||||
|
</CompilerOptions>
|
||||||
|
</CONFIG>
|
||||||
113
compiler/sparc64/cpuinfo.pas
Normal file
113
compiler/sparc64/cpuinfo.pas
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 1998-2002 by Florian Klaempfl
|
||||||
|
|
||||||
|
Basic Processor information for the SPARC64
|
||||||
|
|
||||||
|
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 cpuinfo;
|
||||||
|
|
||||||
|
{$i fpcdefs.inc}
|
||||||
|
|
||||||
|
interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
type
|
||||||
|
bestreal = double;
|
||||||
|
{$if FPC_FULLVERSION>20700}
|
||||||
|
bestrealrec = TDoubleRec;
|
||||||
|
{$endif FPC_FULLVERSION>20700}
|
||||||
|
ts32real = single;
|
||||||
|
ts64real = double;
|
||||||
|
ts80real = extended;
|
||||||
|
ts128real = type extended;
|
||||||
|
ts64comp = type extended;
|
||||||
|
pbestreal=^bestreal;
|
||||||
|
|
||||||
|
{ possible supported processors for this target }
|
||||||
|
tcputype=(cpu_none,
|
||||||
|
cpu_SPARC_V9
|
||||||
|
);
|
||||||
|
|
||||||
|
tfputype =(fpu_none,
|
||||||
|
fpu_soft,
|
||||||
|
fpu_hard
|
||||||
|
);
|
||||||
|
|
||||||
|
tcontrollertype =(ct_none
|
||||||
|
);
|
||||||
|
|
||||||
|
tcontrollerdatatype = record
|
||||||
|
controllertypestr, controllerunitstr: string[20];
|
||||||
|
cputype: tcputype; fputype: tfputype;
|
||||||
|
flashbase, flashsize, srambase, sramsize, eeprombase, eepromsize, bootbase, bootsize: dword;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
Const
|
||||||
|
{ Is there support for dealing with multiple microcontrollers available }
|
||||||
|
{ for this platform? }
|
||||||
|
ControllerSupport = true;
|
||||||
|
|
||||||
|
{ We know that there are fields after sramsize
|
||||||
|
but we don't care about this warning }
|
||||||
|
{$PUSH}
|
||||||
|
{$WARN 3177 OFF}
|
||||||
|
embedded_controllers : array [tcontrollertype] of tcontrollerdatatype =
|
||||||
|
(
|
||||||
|
(controllertypestr:''; controllerunitstr:''; cputype:cpu_none; fputype:fpu_none; flashbase:0; flashsize:0; srambase:0; sramsize:0));
|
||||||
|
{$POP}
|
||||||
|
|
||||||
|
{ calling conventions supported by the code generator }
|
||||||
|
supported_calling_conventions : tproccalloptions = [
|
||||||
|
pocall_internproc,
|
||||||
|
pocall_stdcall,
|
||||||
|
pocall_safecall,
|
||||||
|
pocall_cdecl,
|
||||||
|
pocall_cppdecl
|
||||||
|
];
|
||||||
|
|
||||||
|
cputypestr : array[tcputype] of string[10] = ('',
|
||||||
|
'SPARCV9'
|
||||||
|
);
|
||||||
|
|
||||||
|
fputypestr : array[tfputype] of string[6] = ('',
|
||||||
|
'SOFT',
|
||||||
|
'HARD'
|
||||||
|
);
|
||||||
|
|
||||||
|
{ Supported optimizations, only used for information }
|
||||||
|
supported_optimizerswitches = genericlevel1optimizerswitches+
|
||||||
|
genericlevel2optimizerswitches+
|
||||||
|
genericlevel3optimizerswitches-
|
||||||
|
{ no need to write info about those }
|
||||||
|
[cs_opt_level1,cs_opt_level2,cs_opt_level3]+
|
||||||
|
[cs_opt_regvar,cs_opt_loopunroll,
|
||||||
|
cs_opt_tailrecursion,cs_opt_nodecse,
|
||||||
|
cs_opt_reorder_fields,cs_opt_fastmath];
|
||||||
|
|
||||||
|
level1optimizerswitches = genericlevel1optimizerswitches;
|
||||||
|
level2optimizerswitches = genericlevel2optimizerswitches + level1optimizerswitches +
|
||||||
|
[cs_opt_regvar,cs_opt_tailrecursion,cs_opt_nodecse];
|
||||||
|
level3optimizerswitches = genericlevel3optimizerswitches + level2optimizerswitches + [{,cs_opt_loopunroll}];
|
||||||
|
level4optimizerswitches = genericlevel4optimizerswitches + level3optimizerswitches + [];
|
||||||
|
|
||||||
|
implementation
|
||||||
|
|
||||||
|
end.
|
||||||
Loading…
Reference in New Issue
Block a user