* Give access to CPU specific fields of tsettings record

in GENERIC_CPU mode, to be used by ppudump utility.

  generic/cpuinfo.pas: Add tinstructionset, used for ARM cpu.
  globals.pas: Put all CPU specific fields of tsettings record
  inside a variant part when GENERIC_CPU is defined.
  Also import llvm unit when GENERIC_CPU is defined.

  + utils/Makefile.fpc: Add -Fu../llvm option to compile ppudump,
  as it now also needs llvm specific code decause of globals unit change.

git-svn-id: trunk@47438 -
This commit is contained in:
pierre 2020-11-16 22:34:38 +00:00
parent 6380df9b42
commit c44095733c
4 changed files with 32 additions and 20 deletions

View File

@ -44,6 +44,10 @@ Type
(cpu_none
);
{ copied from arm/cpuinfo unit for arm specific
TSettings field }
tinstructionset = (is_thumb,is_arm);
Type
tfputype =

View File

@ -44,9 +44,9 @@ interface
{ comphook pulls in sysutils anyways }
cutils,cclasses,cfileutl,
cpuinfo,
{$if defined(LLVM) and not defined(GENERIC_CPU)}
{$if defined(LLVM) or defined(GENERIC_CPU)}
llvminfo,
{$endif LLVM and not GENERIC_CPU}
{$endif LLVM or GENERIC_CPU}
globtype,version,systems;
const
@ -166,23 +166,31 @@ interface
tlsmodel : ttlsmodel;
{$if defined(i8086)}
x86memorymodel : tx86memorymodel;
{$endif defined(i8086)}
{$if defined(ARM)}
instructionset : tinstructionset;
{$endif defined(ARM)}
{$if defined(LLVM) and not defined(GENERIC_CPU)}
llvmversion: tllvmversion;
{$endif defined(LLVM) and not defined(GENERIC_CPU)}
{ CPU targets with microcontroller support can add a controller specific unit }
controllertype : tcontrollertype;
{ WARNING: this pointer cannot be written as such in record token }
pmessage : pmessagestaterecord;
{$if defined(generic_cpu)}
case byte of
{$endif}
{$if defined(i8086) or defined(generic_cpu)}
{$ifdef generic_cpu} 1:({$endif}
x86memorymodel : tx86memorymodel;
{$ifdef generic_cpu} );{$endif}
{$endif defined(i8086) or defined(generic_cpu)}
{$if defined(ARM) or defined(generic_cpu)}
{$ifdef generic_cpu} 2:({$endif}
instructionset : tinstructionset;
{$ifdef generic_cpu} );{$endif}
{$endif defined(ARM) or defined(generic_cpu)}
{$if defined(LLVM) or defined(GENERIC_CPU)}
{$ifdef generic_cpu} 3:({$endif}
llvmversion: tllvmversion;
{$ifdef generic_cpu} );{$endif}
{$endif defined(LLVM) or defined(GENERIC_CPU)}
end;
const
@ -591,17 +599,17 @@ interface
disabledircache : false;
tlsmodel : tlsm_none;
{$if defined(i8086)}
controllertype : ct_none;
pmessage : nil;
{$if defined(i8086) or defined(GENERIC_CPU)}
x86memorymodel : mm_small;
{$endif defined(i8086)}
{$endif defined(i8086) or defined(GENERIC_CPU)}
{$if defined(ARM)}
instructionset : is_arm;
{$endif defined(ARM)}
{$if defined(LLVM) and not defined(GENERIC_CPU)}
llvmversion : llvmver_7_0;
{$endif defined(LLVM) and not defined(GENERIC_CPU)}
controllertype : ct_none;
pmessage : nil;
);
var

View File

@ -3236,7 +3236,7 @@ else
ppu$(PPUEXT): ../ppu.pas
$(COMPILER) ../ppu.pas -Fu../generic -dGENERIC_CPU -Fi..
ppudump$(EXEEXT): ppuutils/ppudump.pp ppu$(PPUEXT)
$(COMPILER) ppuutils/ppudump.pp -Fu../generic -dGENERIC_CPU -Fi..
$(COMPILER) ppuutils/ppudump.pp -Fu../llvm -Fu../generic -dGENERIC_CPU -Fi..
ppufiles$(EXEEXT): ppufiles.pp ppu$(PPUEXT)
$(COMPILER) ppufiles.pp -Fu../generic -dGENERIC_CPU -Fi..
ppumove$(EXEEXT): ppumove.pp ppu$(PPUEXT)

View File

@ -60,7 +60,7 @@ ppu$(PPUEXT): ../ppu.pas
$(COMPILER) ../ppu.pas -Fu../generic -dGENERIC_CPU -Fi..
ppudump$(EXEEXT): ppuutils/ppudump.pp ppu$(PPUEXT)
$(COMPILER) ppuutils/ppudump.pp -Fu../generic -dGENERIC_CPU -Fi..
$(COMPILER) ppuutils/ppudump.pp -Fu../llvm -Fu../generic -dGENERIC_CPU -Fi..
ppufiles$(EXEEXT): ppufiles.pp ppu$(PPUEXT)
$(COMPILER) ppufiles.pp -Fu../generic -dGENERIC_CPU -Fi..