123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- {
- Copyright (c) 1998-2002 by the Free Pascal development team
- Basic Processor information for the m68k
- 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 = extended;
- ts128real = type extended;
- ts64comp = extended;
- pbestreal=^bestreal;
- { possible supported processors for this target }
- tcputype =
- (cpu_none,
- cpu_MC68000,
- cpu_MC68020,
- cpu_MC68040,
- cpu_isa_a,
- cpu_isa_a_p,
- cpu_isa_b,
- cpu_isa_c
- );
- tfputype =
- (fpu_none,
- fpu_soft,
- fpu_libgcc,
- fpu_68881
- );
- Const
- { calling conventions supported by the code generator }
- supported_calling_conventions : tproccalloptions = [
- pocall_internproc,
- pocall_stdcall,
- { the difference to stdcall is only the name mangling }
- pocall_cdecl,
- { the difference to stdcall is only the name mangling }
- pocall_cppdecl,
- { this used by the PalmOS port only }
- pocall_syscall
- ];
- cputypestr : array[tcputype] of string[8] = ('',
- '68000',
- '68020',
- '68040',
- 'ISAA',
- 'ISAA+',
- 'ISAB',
- 'ISAC'
- );
- gascputypestr : array[tcputype] of string[8] = ('',
- '68000',
- '68020',
- '68040',
- 'isaa',
- 'isaaplus',
- 'isab',
- 'isac'
- );
- fputypestr : array[tfputype] of string[6] = ('',
- 'SOFT',
- 'LIBGCC',
- '68881'
- );
- { 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_nodecse,
- cs_opt_reorder_fields,cs_opt_fastmath];
- level1optimizerswitches = genericlevel1optimizerswitches;
- level2optimizerswitches = genericlevel2optimizerswitches + level1optimizerswitches +
- [cs_opt_regvar,cs_opt_stackframe,cs_opt_nodecse];
- level3optimizerswitches = genericlevel3optimizerswitches + level2optimizerswitches + [{,cs_opt_loopunroll}];
- level4optimizerswitches = genericlevel4optimizerswitches + level3optimizerswitches + [];
- type
- tcpuflags =
- (CPUM68K_HAS_DBRA, { CPU supports the DBRA instruction }
- CPUM68K_HAS_CAS, { CPU supports the CAS instruction }
- CPUM68K_HAS_TAS, { CPU supports the TAS instruction }
- CPUM68K_HAS_BRAL, { CPU supports the BRA.L/Bcc.L instructions }
- CPUM68K_HAS_ROLROR, { CPU supports the ROL/ROR and ROXL/ROXR instructions }
- CPUM68K_HAS_BYTEREV { CPU supports the BYTEREV instruction }
- );
- const
- cpu_capabilities : array[tcputype] of set of tcpuflags =
- ( { cpu_none } [],
- { cpu_68000 } [CPUM68K_HAS_DBRA,CPUM68K_HAS_TAS,CPUM68K_HAS_ROLROR],
- { cpu_68020 } [CPUM68K_HAS_DBRA,CPUM68K_HAS_CAS,CPUM68K_HAS_TAS,CPUM68K_HAS_BRAL,CPUM68K_HAS_ROLROR],
- { cpu_68040 } [CPUM68K_HAS_DBRA,CPUM68K_HAS_CAS,CPUM68K_HAS_TAS,CPUM68K_HAS_BRAL,CPUM68K_HAS_ROLROR],
- { cpu_isaa } [],
- { cpu_isaap } [CPUM68K_HAS_BRAL,CPUM68K_HAS_BYTEREV],
- { cpu_isab } [CPUM68K_HAS_TAS,CPUM68K_HAS_BRAL],
- { cpu_isac } [CPUM68K_HAS_TAS,CPUM68K_HAS_BYTEREV]
- );
- { all CPUs commonly called "coldfire" }
- cpu_coldfire = [cpu_isa_a,cpu_isa_a_p,cpu_isa_b,cpu_isa_c];
- Implementation
- end.
|