+ some basic stuff for mips64el

git-svn-id: trunk@45614 -
This commit is contained in:
florian 2020-06-07 20:04:17 +00:00
parent eb6f503bad
commit 9710b2cbb4
5 changed files with 112 additions and 3 deletions

1
.gitattributes vendored
View File

@ -660,6 +660,7 @@ compiler/ppcgen/ngppcset.pas svneol=native#text/plain
compiler/ppcgen/rgcpu.pas svneol=native#text/plain
compiler/ppcjvm.lpi svneol=native#text/plain
compiler/ppcmips.lpi svneol=native#text/plain
compiler/ppcmips64el.lpi svneol=native#text/plain
compiler/ppcmipsel.lpi svneol=native#text/plain
compiler/ppcppc.lpi svneol=native#text/plain
compiler/ppcppc64.lpi svneol=native#text/plain

View File

@ -242,6 +242,10 @@
{$endif mips}
{$endif mipsel}
{$ifdef mips64el}
{$define mips}
{$define mips64}
{$endif mipsel}
{$ifdef mips}
{$ifndef mips64}
@ -249,7 +253,9 @@
{$define cpu32bitalu}
{$define cpu32bitaddr}
{$else}
{$error mips64 not yet supported}
{$define cpu64bit}
{$define cpu64bitalu}
{$define cpu64bitaddr}
{$endif}
{$define cpuflags} { Flags are emulated }
{$define cputargethasfixedstack}

View File

@ -27,7 +27,11 @@ interface
uses
globtype, parabase,
cgbase, cgutils, cgobj, cg64f32, cpupara,
cgbase, cgutils, cgobj,
{$ifndef mips64}
cg64f32,
{$endif mips64}
cpupara,
aasmbase, aasmtai, aasmcpu, aasmdata,
cpubase, cpuinfo,
node, symconst, SymType, symdef,
@ -88,6 +92,7 @@ type
procedure g_profilecode(list: TAsmList);override;
end;
{$ifndef mips64}
TCg64MPSel = class(tcg64f32)
public
procedure a_load64_reg_ref(list: tasmlist; reg: tregister64; const ref: treference); override;
@ -100,6 +105,7 @@ type
procedure a_op64_const_reg_reg_checkoverflow(list: tasmlist; op: TOpCG; size: tcgsize; Value: int64; regsrc, regdst: tregister64; setflags: boolean; var ovloc: tlocation); override;
procedure a_op64_reg_reg_reg_checkoverflow(list: tasmlist; op: TOpCG; size: tcgsize; regsrc1, regsrc2, regdst: tregister64; setflags: boolean; var ovloc: tlocation); override;
end;
{$endif mips64}
procedure create_codegen;
@ -1691,6 +1697,7 @@ procedure TCGMIPS.g_adjust_self_value(list:TAsmList;procdef: tprocdef;ioffset: t
end;
{$ifndef mips64}
{****************************************************************************
TCG64_MIPSel
****************************************************************************}
@ -1928,12 +1935,15 @@ begin
internalerror(200306017);
end;
end;
{$endif mips64}
procedure create_codegen;
begin
cg:=TCGMIPS.Create;
{$ifndef mips64}
cg64:=TCg64MPSel.Create;
{$endif mips64}
end;
end.

92
compiler/ppcmips64el.lpi Normal file
View File

@ -0,0 +1,92 @@
<?xml version="1.0"?>
<CONFIG>
<ProjectOptions>
<Version Value="9"/>
<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="ppcmips64el"/>
</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>
<RequiredPackages Count="1">
<Item1>
<PackageName Value="LCL"/>
<MinVersion Major="1" Valid="True"/>
</Item1>
</RequiredPackages>
<Units Count="4">
<Unit0>
<Filename Value="pp.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="pp"/>
</Unit0>
<Unit1>
<Filename Value="mips\aasmcpu.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="aasmcpu"/>
</Unit1>
<Unit2>
<Filename Value="mips\aoptcpu.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="aoptcpu"/>
</Unit2>
<Unit3>
<Filename Value="aopt.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="aopt"/>
</Unit3>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="11"/>
<PathDelim Value="\"/>
<Target>
<Filename Value="mips64el\pp"/>
</Target>
<SearchPaths>
<IncludeFiles Value="mips"/>
<OtherUnitFiles Value="mips64;mips;systems"/>
<UnitOutputDirectory Value="mips64el\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="-dmips64el"/>
<CompilerPath Value="$(CompPath)"/>
</Other>
</CompilerOptions>
</CONFIG>

View File

@ -117,7 +117,7 @@ interface
{ This table is kept OS,Cpu because it is easier to maintain (PFV) }
OSCpuPossible : array[TOS,TCpu] of boolean = (
{ os i386 m68k ppc sparc x86_64 arm ppc64 avr armeb armel mips mipsel mips64 misp64el jvm i8086 aarch64 wasm sparc64 riscv32 riscv64 xtensa z80 }
{ linux } ( true, true, true, true, true, true, true, false, true, false, true, true, false, false, false, false, true, false, true, true, true, true, false),
{ linux } ( true, true, true, true, true, true, true, false, true, false, true, true, false, true, false, false, true, false, true, true, true, true, false),
{ go32v2 } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false),
{ win32 } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false),
{ os2 } ( true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false),