mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 18:09:30 +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/README.txt 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/ra64dwa.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;
|
||||
fputype : fpu_standard;
|
||||
{$endif jvm}
|
||||
{$ifdef aarch64}
|
||||
cputype : cpu_armv8;
|
||||
optimizecputype : cpu_armv8;
|
||||
fputype : fpu_vfp;
|
||||
{$endif aarch64}
|
||||
{$endif not GENERIC_CPU}
|
||||
asmmode : asmmode_standard;
|
||||
{$ifndef jvm}
|
||||
|
Loading…
Reference in New Issue
Block a user