Add powerpc64 as a CPU target. Issue , patch from Alfred.

git-svn-id: trunk@56135 -
This commit is contained in:
juha 2017-10-20 10:27:45 +00:00
parent b7b6bf8878
commit 647d8f84ab
5 changed files with 43 additions and 12 deletions

View File

@ -184,7 +184,7 @@ const
FPCOperatingSystemAlternative2Names: array[1..2] of shortstring =(
'bsd', 'linux' // see GetDefaultSrcOS2ForTargetOS
);
FPCProcessorNames: array[1..12] of shortstring =(
FPCProcessorNames: array[1..13] of shortstring =(
'aarch64',
'arm',
'avr',
@ -195,6 +195,7 @@ const
'mips',
'mipsel',
'powerpc',
'powerpc64',
'sparc',
'x86_64'
);
@ -202,7 +203,7 @@ const
'FPC', 'ObjFPC', 'Delphi', 'TP', 'MacPas', 'ISO'
);
Lazarus_CPU_OS_Widget_Combinations: array[1..81] of shortstring = (
Lazarus_CPU_OS_Widget_Combinations: array[1..91] of shortstring = (
'i386-linux-gtk',
'i386-linux-gtk2',
'i386-linux-qt',
@ -253,6 +254,16 @@ const
'powerpc-linux-nogui',
'powerpc-morphos-mui',
'powerpc-morphos-nogui',
'powerpc64-darwin-gtk',
'powerpc64-darwin-gtk2',
'powerpc64-darwin-cocoa',
'powerpc64-darwin-nogui',
'powerpc64-linux-gtk',
'powerpc64-linux-gtk2',
'powerpc64-linux-nogui',
'powerpc64-aix-gtk',
'powerpc64-aix-gtk2',
'powerpc64-aix-nogui',
'sparc-linux-gtk',
'sparc-linux-gtk2',
'sparc-linux-nogui',
@ -3550,6 +3561,18 @@ procedure GetTargetProcessors(const TargetCPU: string; aList: TStrings);
aList.Add('970');
end;
procedure PowerPC64;
begin
//aList.Add('power4');
aList.Add('970');
//aList.Add('power5');
//aList.Add('power5+');
//aList.Add('power6');
//aList.Add('power6x');
//aList.Add('power7');
//aList.Add('power8');
end;
procedure Sparc;
begin
aList.Add('SPARC V7');
@ -3601,12 +3624,13 @@ begin
'avr' : AVR;
'i386' : Intel_i386;
'm68k' : M68k;
'powerpc': PowerPC;
'powerpc' : PowerPC;
'powerpc64': PowerPC64;
'sparc' : Sparc;
'x86_64' : Intel_x86_64;
'mipsel','mips' : Mips;
'jvm' : ;
'aarch64': ;
'aarch64' : ;
end;
end;

View File

@ -1662,7 +1662,9 @@ begin
if AtomIsChar('<') then
ReadGenericParam
else if UpAtomIs('LOCATION')
and (Scanner.Values.IsDefined('CPUM68K') or Scanner.Values.IsDefined('CPUPOWERPC'))
and ( Scanner.Values.IsDefined('CPUM68K')
or Scanner.Values.IsDefined('CPUPOWERPC')
or Scanner.Values.IsDefined('CPUPOWERPC64') )
then begin
// for example Domain: LongInt location 'd0'
ReadNextAtom;

View File

@ -1478,7 +1478,8 @@ type
cpu_iA64, { 7 }
cpu_x86_64, { 8 }
cpu_mips, { 9 }
cpu_arm { 10 }
cpu_arm, { 10 }
cpu_powerpc64 { 11 }
);
var
EntryNr: Byte;

View File

@ -1575,12 +1575,15 @@ end;
{ =========================================================================== }
function CpuNameToPtrSize(const CpuName: String): Integer;
var
lcCpu: String;
begin
//'x86', 'i386', 'i486', 'i586', 'i686',
//'ia64', 'x86_64', 'powerpc', aarch64
//'sparc', 'arm'
Result := 4;
if (LowerCase(CpuName) = 'ia64') or (LowerCase(CpuName) = 'x86_64') or (LowerCase(CpuName) = 'aarch64')
lcCpu := LowerCase(CpuName);
if (lcCpu='ia64') or (lcCpu='x86_64') or (lcCpu='aarch64') or (lcCpu='powerpc64')
then Result := 8;
end;
@ -2269,7 +2272,7 @@ begin
case StringCase(TargetInfo^.TargetCPU, [
'x86', 'i386', 'i486', 'i586', 'i686',
'ia64', 'x86_64', 'powerpc',
'ia64', 'x86_64', 'powerpc', 'powerpc64',
'sparc', 'arm', 'aarch64'
], True, False) of
0..4: begin // x86
@ -2296,7 +2299,7 @@ begin
TargetInfo^.TargetRegisters[2] := '$rdx';
end;
end;
7: begin // powerpc
7, 8: begin // powerpc,powerpc64
TargetInfo^.TargetIsBE := True;
// alltough darwin can start with r2, it seems that all OS start with r3
// if UpperCase(FTargetInfo.TargetOS) = 'DARWIN'
@ -2311,18 +2314,18 @@ begin
TargetInfo^.TargetRegisters[2] := '$r5';
// end;
end;
8: begin // sparc
9: begin // sparc
TargetInfo^.TargetIsBE := True;
TargetInfo^.TargetRegisters[0] := '$g1';
TargetInfo^.TargetRegisters[1] := '$o0';
TargetInfo^.TargetRegisters[2] := '$o1';
end;
9: begin // arm
10: begin // arm
TargetInfo^.TargetRegisters[0] := '$r0';
TargetInfo^.TargetRegisters[1] := '$r1';
TargetInfo^.TargetRegisters[2] := '$r2';
end;
10: begin // aarch64
11: begin // aarch64
//TargetInfo^.TargetRegisters[0] := '$r0';
//TargetInfo^.TargetRegisters[1] := '$r1';
//TargetInfo^.TargetRegisters[2] := '$r2';

View File

@ -1096,6 +1096,7 @@ begin
Add('i386');
Add('m68k');
Add('powerpc');
Add('powerpc64');
Add('sparc');
Add('x86_64');
end;