1 {
2     Copyright (c) 1998-2002 by Florian Klaempfl
3 
4     Basic Processor information for the SPARC64
5 
6     This program is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10 
11     This program is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15 
16     You should have received a copy of the GNU General Public License
17     along with this program; if not, write to the Free Software
18     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 
20  ****************************************************************************
21 }
22 unit cpuinfo;
23 
24 {$i fpcdefs.inc}
25 
26 interface
27 
28 uses
29   globtype;
30 
31 type
32   bestreal = double;
33 {$if FPC_FULLVERSION>20700}
34   bestrealrec = TDoubleRec;
35 {$endif FPC_FULLVERSION>20700}
36   ts32real = single;
37   ts64real = double;
38   ts80real = extended;
39   ts128real = type extended;
40   ts64comp = type extended;
41   pbestreal=^bestreal;
42 
43   { possible supported processors for this target }
44   tcputype=(cpu_none,
45     cpu_SPARC_V9
46   );
47 
48   tfputype =(fpu_none,
49     fpu_soft,
50     fpu_hard
51   );
52 
53   tcontrollertype =(ct_none
54   );
55 
56    tcontrollerdatatype = record
57       controllertypestr, controllerunitstr: string[20];
58       cputype: tcputype; fputype: tfputype;
59       flashbase, flashsize, srambase, sramsize, eeprombase, eepromsize, bootbase, bootsize: dword;
60    end;
61 
62 
63 Const
64   { Is there support for dealing with multiple microcontrollers available }
65   { for this platform? }
66   ControllerSupport = false;
67 
68   { We know that there are fields after sramsize
69     but we don't care about this warning }
70   {$PUSH}
71    {$WARN 3177 OFF}
72   embedded_controllers : array [tcontrollertype] of tcontrollerdatatype =
73   (
74       (controllertypestr:''; controllerunitstr:''; cputype:cpu_none; fputype:fpu_none; flashbase:0; flashsize:0; srambase:0; sramsize:0));
75   {$POP}
76 
77   { calling conventions supported by the code generator }
78   supported_calling_conventions : tproccalloptions = [
79     pocall_internproc,
80     pocall_stdcall,
81     pocall_safecall,
82     pocall_cdecl,
83     pocall_cppdecl
84   ];
85 
86    cputypestr : array[tcputype] of string[10] = ('',
87      'SPARCV9'
88    );
89 
90    fputypestr : array[tfputype] of string[6] = ('',
91      'SOFT',
92      'HARD'
93    );
94 
95    { Supported optimizations, only used for information }
96    supported_optimizerswitches = genericlevel1optimizerswitches+
97                                  genericlevel2optimizerswitches+
98                                  genericlevel3optimizerswitches-
99                                  { no need to write info about those }
100                                  [cs_opt_level1,cs_opt_level2,cs_opt_level3]+
101                                  [cs_opt_regvar,cs_opt_loopunroll,
102                                   cs_opt_tailrecursion,cs_opt_nodecse,
103                                   cs_opt_reorder_fields,cs_opt_fastmath];
104 
105    level1optimizerswitches = genericlevel1optimizerswitches;
106    level2optimizerswitches = genericlevel2optimizerswitches + level1optimizerswitches +
107      [cs_opt_regvar,cs_opt_tailrecursion,cs_opt_nodecse];
108    level3optimizerswitches = genericlevel3optimizerswitches + level2optimizerswitches + [{,cs_opt_loopunroll}];
109    level4optimizerswitches = genericlevel4optimizerswitches + level3optimizerswitches + [];
110 
111 implementation
112 
113 end.
114