mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 16:19:21 +02:00
+ cpuinfo unit for arm64
+ set basic types in the globals units for arm64 git-svn-id: trunk@22896 -
This commit is contained in:
parent
7089d1d638
commit
1cb97f23e5
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -7,6 +7,7 @@ compiler/Makefile svneol=native#text/plain
|
|||||||
compiler/Makefile.fpc svneol=native#text/plain
|
compiler/Makefile.fpc svneol=native#text/plain
|
||||||
compiler/README.txt svneol=native#text/plain
|
compiler/README.txt svneol=native#text/plain
|
||||||
compiler/aarch64/a64reg.dat svneol=native#text/plain
|
compiler/aarch64/a64reg.dat svneol=native#text/plain
|
||||||
|
compiler/aarch64/cpuinfo.pas svneol=native#text/plain
|
||||||
compiler/aarch64/ra64con.inc svneol=native#text/plain
|
compiler/aarch64/ra64con.inc svneol=native#text/plain
|
||||||
compiler/aarch64/ra64dwa.inc svneol=native#text/plain
|
compiler/aarch64/ra64dwa.inc svneol=native#text/plain
|
||||||
compiler/aarch64/ra64nor.inc svneol=native#text/plain
|
compiler/aarch64/ra64nor.inc svneol=native#text/plain
|
||||||
|
102
compiler/aarch64/cpuinfo.pas
Normal file
102
compiler/aarch64/cpuinfo.pas
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
{
|
||||||
|
Copyright (c) 1998-2002 by the Free Pascal development team
|
||||||
|
|
||||||
|
Basic Processor information for AArch64
|
||||||
|
|
||||||
|
See the file COPYING.FPC, included in this distribution,
|
||||||
|
for details about the copyright.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
**********************************************************************}
|
||||||
|
|
||||||
|
Unit CPUInfo;
|
||||||
|
|
||||||
|
Interface
|
||||||
|
|
||||||
|
uses
|
||||||
|
globtype;
|
||||||
|
|
||||||
|
Type
|
||||||
|
bestreal = double;
|
||||||
|
ts32real = single;
|
||||||
|
ts64real = double;
|
||||||
|
ts80real = type extended;
|
||||||
|
ts128real = type extended;
|
||||||
|
ts64comp = comp;
|
||||||
|
|
||||||
|
pbestreal=^bestreal;
|
||||||
|
|
||||||
|
{ possible supported processors for this target }
|
||||||
|
tcputype =
|
||||||
|
(cpu_none,
|
||||||
|
cpu_armv8
|
||||||
|
);
|
||||||
|
|
||||||
|
Type
|
||||||
|
tfputype =
|
||||||
|
(fpu_none,
|
||||||
|
fpu_vfp
|
||||||
|
);
|
||||||
|
|
||||||
|
tcontrollertype =
|
||||||
|
(ct_none
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
Const
|
||||||
|
{# Size of native extended floating point type }
|
||||||
|
extended_size = 8;
|
||||||
|
{# Size of a multimedia register }
|
||||||
|
mmreg_size = 16;
|
||||||
|
{ target cpu string (used by compiler options) }
|
||||||
|
target_cpu_string = 'aarch64';
|
||||||
|
|
||||||
|
{ calling conventions supported by the code generator }
|
||||||
|
supported_calling_conventions : tproccalloptions = [
|
||||||
|
pocall_internproc,
|
||||||
|
pocall_safecall,
|
||||||
|
pocall_stdcall,
|
||||||
|
{ same as stdcall only different name mangling }
|
||||||
|
pocall_cdecl,
|
||||||
|
{ same as stdcall only different name mangling }
|
||||||
|
pocall_cppdecl,
|
||||||
|
{ same as stdcall but floating point numbers are handled like equal sized integers }
|
||||||
|
pocall_softfloat,
|
||||||
|
{ same as stdcall (requires that all const records are passed by
|
||||||
|
reference, but that's already done for stdcall) }
|
||||||
|
pocall_mwpascal,
|
||||||
|
{ used for interrupt handling }
|
||||||
|
pocall_interrupt
|
||||||
|
];
|
||||||
|
|
||||||
|
cputypestr : array[tcputype] of string[8] = ('',
|
||||||
|
'ARMV8'
|
||||||
|
);
|
||||||
|
|
||||||
|
fputypestr : array[tfputype] of string[9] = ('',
|
||||||
|
'VFP'
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
{ 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_stackframe,cs_opt_nodecse,cs_opt_reorder_fields,cs_opt_fastmath];
|
||||||
|
|
||||||
|
level1optimizerswitches = genericlevel1optimizerswitches;
|
||||||
|
level2optimizerswitches = genericlevel2optimizerswitches + level1optimizerswitches +
|
||||||
|
[cs_opt_regvar,cs_opt_stackframe,cs_opt_tailrecursion,cs_opt_nodecse];
|
||||||
|
level3optimizerswitches = genericlevel3optimizerswitches + level2optimizerswitches + [cs_opt_scheduler{,cs_opt_loopunroll}];
|
||||||
|
level4optimizerswitches = genericlevel4optimizerswitches + level3optimizerswitches + [];
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
|
||||||
|
end.
|
||||||
|
|
@ -445,6 +445,11 @@ interface
|
|||||||
optimizecputype : cpu_none;
|
optimizecputype : cpu_none;
|
||||||
fputype : fpu_standard;
|
fputype : fpu_standard;
|
||||||
{$endif jvm}
|
{$endif jvm}
|
||||||
|
{$ifdef aarch64}
|
||||||
|
cputype : cpu_armv8;
|
||||||
|
optimizecputype : cpu_armv8;
|
||||||
|
fputype : fpu_vfp;
|
||||||
|
{$endif aarch64}
|
||||||
{$endif not GENERIC_CPU}
|
{$endif not GENERIC_CPU}
|
||||||
asmmode : asmmode_standard;
|
asmmode : asmmode_standard;
|
||||||
{$ifndef jvm}
|
{$ifndef jvm}
|
||||||
|
Loading…
Reference in New Issue
Block a user