xref: /OK3568_Linux_fs/kernel/arch/m68k/include/asm/setup.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun ** asm/setup.h -- Definition of the Linux/m68k setup information
3*4882a593Smuzhiyun **
4*4882a593Smuzhiyun ** Copyright 1992 by Greg Harp
5*4882a593Smuzhiyun **
6*4882a593Smuzhiyun ** This file is subject to the terms and conditions of the GNU General Public
7*4882a593Smuzhiyun ** License.  See the file COPYING in the main directory of this archive
8*4882a593Smuzhiyun ** for more details.
9*4882a593Smuzhiyun **
10*4882a593Smuzhiyun ** Created 09/29/92 by Greg Harp
11*4882a593Smuzhiyun **
12*4882a593Smuzhiyun ** 5/2/94 Roman Hodek:
13*4882a593Smuzhiyun **   Added bi_atari part of the machine dependent union bi_un; for now it
14*4882a593Smuzhiyun **   contains just a model field to distinguish between TT and Falcon.
15*4882a593Smuzhiyun ** 26/7/96 Roman Zippel:
16*4882a593Smuzhiyun **   Renamed to setup.h; added some useful macros to allow gcc some
17*4882a593Smuzhiyun **   optimizations if possible.
18*4882a593Smuzhiyun ** 5/10/96 Geert Uytterhoeven:
19*4882a593Smuzhiyun **   Redesign of the boot information structure; moved boot information
20*4882a593Smuzhiyun **   structure to bootinfo.h
21*4882a593Smuzhiyun */
22*4882a593Smuzhiyun #ifndef _M68K_SETUP_H
23*4882a593Smuzhiyun #define _M68K_SETUP_H
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun #include <uapi/asm/bootinfo.h>
26*4882a593Smuzhiyun #include <uapi/asm/setup.h>
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun #define CL_SIZE COMMAND_LINE_SIZE
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun #ifndef __ASSEMBLY__
32*4882a593Smuzhiyun extern unsigned long m68k_machtype;
33*4882a593Smuzhiyun #endif /* !__ASSEMBLY__ */
34*4882a593Smuzhiyun 
35*4882a593Smuzhiyun #if !defined(CONFIG_AMIGA)
36*4882a593Smuzhiyun #  define MACH_IS_AMIGA (0)
37*4882a593Smuzhiyun #elif defined(CONFIG_ATARI) || defined(CONFIG_MAC) || defined(CONFIG_APOLLO) \
38*4882a593Smuzhiyun 	|| defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000)               \
39*4882a593Smuzhiyun 	|| defined(CONFIG_HP300) || defined(CONFIG_Q40)                      \
40*4882a593Smuzhiyun 	|| defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
41*4882a593Smuzhiyun #  define MACH_IS_AMIGA (m68k_machtype == MACH_AMIGA)
42*4882a593Smuzhiyun #else
43*4882a593Smuzhiyun #  define MACH_AMIGA_ONLY
44*4882a593Smuzhiyun #  define MACH_IS_AMIGA (1)
45*4882a593Smuzhiyun #  define MACH_TYPE (MACH_AMIGA)
46*4882a593Smuzhiyun #endif
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun #if !defined(CONFIG_ATARI)
49*4882a593Smuzhiyun #  define MACH_IS_ATARI (0)
50*4882a593Smuzhiyun #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_APOLLO) \
51*4882a593Smuzhiyun 	|| defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000)               \
52*4882a593Smuzhiyun 	|| defined(CONFIG_HP300) || defined(CONFIG_Q40)                      \
53*4882a593Smuzhiyun 	|| defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
54*4882a593Smuzhiyun #  define MACH_IS_ATARI (m68k_machtype == MACH_ATARI)
55*4882a593Smuzhiyun #else
56*4882a593Smuzhiyun #  define MACH_ATARI_ONLY
57*4882a593Smuzhiyun #  define MACH_IS_ATARI (1)
58*4882a593Smuzhiyun #  define MACH_TYPE (MACH_ATARI)
59*4882a593Smuzhiyun #endif
60*4882a593Smuzhiyun 
61*4882a593Smuzhiyun #if !defined(CONFIG_MAC)
62*4882a593Smuzhiyun #  define MACH_IS_MAC (0)
63*4882a593Smuzhiyun #elif defined(CONFIG_AMIGA) || defined(CONFIG_ATARI) || defined(CONFIG_APOLLO) \
64*4882a593Smuzhiyun 	|| defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000)                 \
65*4882a593Smuzhiyun 	|| defined(CONFIG_HP300) || defined(CONFIG_Q40)                        \
66*4882a593Smuzhiyun 	|| defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
67*4882a593Smuzhiyun #  define MACH_IS_MAC (m68k_machtype == MACH_MAC)
68*4882a593Smuzhiyun #else
69*4882a593Smuzhiyun #  define MACH_MAC_ONLY
70*4882a593Smuzhiyun #  define MACH_IS_MAC (1)
71*4882a593Smuzhiyun #  define MACH_TYPE (MACH_MAC)
72*4882a593Smuzhiyun #endif
73*4882a593Smuzhiyun 
74*4882a593Smuzhiyun #if defined(CONFIG_SUN3)
75*4882a593Smuzhiyun #define MACH_IS_SUN3 (1)
76*4882a593Smuzhiyun #define MACH_SUN3_ONLY (1)
77*4882a593Smuzhiyun #define MACH_TYPE (MACH_SUN3)
78*4882a593Smuzhiyun #else
79*4882a593Smuzhiyun #define MACH_IS_SUN3 (0)
80*4882a593Smuzhiyun #endif
81*4882a593Smuzhiyun 
82*4882a593Smuzhiyun #if !defined (CONFIG_APOLLO)
83*4882a593Smuzhiyun #  define MACH_IS_APOLLO (0)
84*4882a593Smuzhiyun #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
85*4882a593Smuzhiyun 	|| defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000)              \
86*4882a593Smuzhiyun 	|| defined(CONFIG_HP300) || defined(CONFIG_Q40)                     \
87*4882a593Smuzhiyun 	|| defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
88*4882a593Smuzhiyun #  define MACH_IS_APOLLO (m68k_machtype == MACH_APOLLO)
89*4882a593Smuzhiyun #else
90*4882a593Smuzhiyun #  define MACH_APOLLO_ONLY
91*4882a593Smuzhiyun #  define MACH_IS_APOLLO (1)
92*4882a593Smuzhiyun #  define MACH_TYPE (MACH_APOLLO)
93*4882a593Smuzhiyun #endif
94*4882a593Smuzhiyun 
95*4882a593Smuzhiyun #if !defined (CONFIG_MVME147)
96*4882a593Smuzhiyun #  define MACH_IS_MVME147 (0)
97*4882a593Smuzhiyun #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
98*4882a593Smuzhiyun 	|| defined(CONFIG_APOLLO) || defined(CONFIG_BVME6000)               \
99*4882a593Smuzhiyun 	|| defined(CONFIG_HP300) || defined(CONFIG_Q40)                     \
100*4882a593Smuzhiyun 	|| defined(CONFIG_SUN3X) || defined(CONFIG_MVME16x)
101*4882a593Smuzhiyun #  define MACH_IS_MVME147 (m68k_machtype == MACH_MVME147)
102*4882a593Smuzhiyun #else
103*4882a593Smuzhiyun #  define MACH_MVME147_ONLY
104*4882a593Smuzhiyun #  define MACH_IS_MVME147 (1)
105*4882a593Smuzhiyun #  define MACH_TYPE (MACH_MVME147)
106*4882a593Smuzhiyun #endif
107*4882a593Smuzhiyun 
108*4882a593Smuzhiyun #if !defined (CONFIG_MVME16x)
109*4882a593Smuzhiyun #  define MACH_IS_MVME16x (0)
110*4882a593Smuzhiyun #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
111*4882a593Smuzhiyun 	|| defined(CONFIG_APOLLO) || defined(CONFIG_BVME6000)               \
112*4882a593Smuzhiyun 	|| defined(CONFIG_HP300) || defined(CONFIG_Q40)                     \
113*4882a593Smuzhiyun 	|| defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
114*4882a593Smuzhiyun #  define MACH_IS_MVME16x (m68k_machtype == MACH_MVME16x)
115*4882a593Smuzhiyun #else
116*4882a593Smuzhiyun #  define MACH_MVME16x_ONLY
117*4882a593Smuzhiyun #  define MACH_IS_MVME16x (1)
118*4882a593Smuzhiyun #  define MACH_TYPE (MACH_MVME16x)
119*4882a593Smuzhiyun #endif
120*4882a593Smuzhiyun 
121*4882a593Smuzhiyun #if !defined (CONFIG_BVME6000)
122*4882a593Smuzhiyun #  define MACH_IS_BVME6000 (0)
123*4882a593Smuzhiyun #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
124*4882a593Smuzhiyun 	|| defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x)                \
125*4882a593Smuzhiyun 	|| defined(CONFIG_HP300) || defined(CONFIG_Q40)                     \
126*4882a593Smuzhiyun 	|| defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
127*4882a593Smuzhiyun #  define MACH_IS_BVME6000 (m68k_machtype == MACH_BVME6000)
128*4882a593Smuzhiyun #else
129*4882a593Smuzhiyun #  define MACH_BVME6000_ONLY
130*4882a593Smuzhiyun #  define MACH_IS_BVME6000 (1)
131*4882a593Smuzhiyun #  define MACH_TYPE (MACH_BVME6000)
132*4882a593Smuzhiyun #endif
133*4882a593Smuzhiyun 
134*4882a593Smuzhiyun #if !defined (CONFIG_HP300)
135*4882a593Smuzhiyun #  define MACH_IS_HP300 (0)
136*4882a593Smuzhiyun #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
137*4882a593Smuzhiyun 	|| defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \
138*4882a593Smuzhiyun 	|| defined(CONFIG_BVME6000) || defined(CONFIG_Q40) \
139*4882a593Smuzhiyun 	|| defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
140*4882a593Smuzhiyun #  define MACH_IS_HP300 (m68k_machtype == MACH_HP300)
141*4882a593Smuzhiyun #else
142*4882a593Smuzhiyun #  define MACH_HP300_ONLY
143*4882a593Smuzhiyun #  define MACH_IS_HP300 (1)
144*4882a593Smuzhiyun #  define MACH_TYPE (MACH_HP300)
145*4882a593Smuzhiyun #endif
146*4882a593Smuzhiyun 
147*4882a593Smuzhiyun #if !defined (CONFIG_Q40)
148*4882a593Smuzhiyun #  define MACH_IS_Q40 (0)
149*4882a593Smuzhiyun #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
150*4882a593Smuzhiyun 	|| defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x)                \
151*4882a593Smuzhiyun 	|| defined(CONFIG_BVME6000) || defined(CONFIG_HP300)                \
152*4882a593Smuzhiyun 	|| defined(CONFIG_SUN3X) || defined(CONFIG_MVME147)
153*4882a593Smuzhiyun #  define MACH_IS_Q40 (m68k_machtype == MACH_Q40)
154*4882a593Smuzhiyun #else
155*4882a593Smuzhiyun #  define MACH_Q40_ONLY
156*4882a593Smuzhiyun #  define MACH_IS_Q40 (1)
157*4882a593Smuzhiyun #  define MACH_TYPE (MACH_Q40)
158*4882a593Smuzhiyun #endif
159*4882a593Smuzhiyun 
160*4882a593Smuzhiyun #if !defined (CONFIG_SUN3X)
161*4882a593Smuzhiyun #  define MACH_IS_SUN3X (0)
162*4882a593Smuzhiyun #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \
163*4882a593Smuzhiyun 	|| defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x)                \
164*4882a593Smuzhiyun 	|| defined(CONFIG_BVME6000) || defined(CONFIG_HP300)                \
165*4882a593Smuzhiyun 	|| defined(CONFIG_Q40) || defined(CONFIG_MVME147)
166*4882a593Smuzhiyun #  define MACH_IS_SUN3X (m68k_machtype == MACH_SUN3X)
167*4882a593Smuzhiyun #else
168*4882a593Smuzhiyun #  define CONFIG_SUN3X_ONLY
169*4882a593Smuzhiyun #  define MACH_IS_SUN3X (1)
170*4882a593Smuzhiyun #  define MACH_TYPE (MACH_SUN3X)
171*4882a593Smuzhiyun #endif
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun #ifndef MACH_TYPE
174*4882a593Smuzhiyun #  define MACH_TYPE (m68k_machtype)
175*4882a593Smuzhiyun #endif
176*4882a593Smuzhiyun 
177*4882a593Smuzhiyun 
178*4882a593Smuzhiyun #ifndef __ASSEMBLY__
179*4882a593Smuzhiyun extern unsigned long m68k_cputype;
180*4882a593Smuzhiyun extern unsigned long m68k_fputype;
181*4882a593Smuzhiyun extern unsigned long m68k_mmutype;
182*4882a593Smuzhiyun #ifdef CONFIG_VME
183*4882a593Smuzhiyun extern unsigned long vme_brdtype;
184*4882a593Smuzhiyun #endif
185*4882a593Smuzhiyun 
186*4882a593Smuzhiyun     /*
187*4882a593Smuzhiyun      *  m68k_is040or060 is != 0 for a '040 or higher;
188*4882a593Smuzhiyun      *  used numbers are 4 for 68040 and 6 for 68060.
189*4882a593Smuzhiyun      */
190*4882a593Smuzhiyun 
191*4882a593Smuzhiyun extern int m68k_is040or060;
192*4882a593Smuzhiyun #endif /* !__ASSEMBLY__ */
193*4882a593Smuzhiyun 
194*4882a593Smuzhiyun #if !defined(CONFIG_M68020)
195*4882a593Smuzhiyun #  define CPU_IS_020 (0)
196*4882a593Smuzhiyun #  define MMU_IS_851 (0)
197*4882a593Smuzhiyun #  define MMU_IS_SUN3 (0)
198*4882a593Smuzhiyun #elif defined(CONFIG_M68030) || defined(CONFIG_M68040) || defined(CONFIG_M68060)
199*4882a593Smuzhiyun #  define CPU_IS_020 (m68k_cputype & CPU_68020)
200*4882a593Smuzhiyun #  define MMU_IS_851 (m68k_mmutype & MMU_68851)
201*4882a593Smuzhiyun #  define MMU_IS_SUN3 (0)	/* Sun3 not supported with other CPU enabled */
202*4882a593Smuzhiyun #else
203*4882a593Smuzhiyun #  define CPU_M68020_ONLY
204*4882a593Smuzhiyun #  define CPU_IS_020 (1)
205*4882a593Smuzhiyun #ifdef MACH_SUN3_ONLY
206*4882a593Smuzhiyun #  define MMU_IS_SUN3 (1)
207*4882a593Smuzhiyun #  define MMU_IS_851 (0)
208*4882a593Smuzhiyun #else
209*4882a593Smuzhiyun #  define MMU_IS_SUN3 (0)
210*4882a593Smuzhiyun #  define MMU_IS_851 (1)
211*4882a593Smuzhiyun #endif
212*4882a593Smuzhiyun #endif
213*4882a593Smuzhiyun 
214*4882a593Smuzhiyun #if !defined(CONFIG_M68030)
215*4882a593Smuzhiyun #  define CPU_IS_030 (0)
216*4882a593Smuzhiyun #  define MMU_IS_030 (0)
217*4882a593Smuzhiyun #elif defined(CONFIG_M68020) || defined(CONFIG_M68040) || defined(CONFIG_M68060)
218*4882a593Smuzhiyun #  define CPU_IS_030 (m68k_cputype & CPU_68030)
219*4882a593Smuzhiyun #  define MMU_IS_030 (m68k_mmutype & MMU_68030)
220*4882a593Smuzhiyun #else
221*4882a593Smuzhiyun #  define CPU_M68030_ONLY
222*4882a593Smuzhiyun #  define CPU_IS_030 (1)
223*4882a593Smuzhiyun #  define MMU_IS_030 (1)
224*4882a593Smuzhiyun #endif
225*4882a593Smuzhiyun 
226*4882a593Smuzhiyun #if !defined(CONFIG_M68040)
227*4882a593Smuzhiyun #  define CPU_IS_040 (0)
228*4882a593Smuzhiyun #  define MMU_IS_040 (0)
229*4882a593Smuzhiyun #elif defined(CONFIG_M68020) || defined(CONFIG_M68030) || defined(CONFIG_M68060)
230*4882a593Smuzhiyun #  define CPU_IS_040 (m68k_cputype & CPU_68040)
231*4882a593Smuzhiyun #  define MMU_IS_040 (m68k_mmutype & MMU_68040)
232*4882a593Smuzhiyun #else
233*4882a593Smuzhiyun #  define CPU_M68040_ONLY
234*4882a593Smuzhiyun #  define CPU_IS_040 (1)
235*4882a593Smuzhiyun #  define MMU_IS_040 (1)
236*4882a593Smuzhiyun #endif
237*4882a593Smuzhiyun 
238*4882a593Smuzhiyun #if !defined(CONFIG_M68060)
239*4882a593Smuzhiyun #  define CPU_IS_060 (0)
240*4882a593Smuzhiyun #  define MMU_IS_060 (0)
241*4882a593Smuzhiyun #elif defined(CONFIG_M68020) || defined(CONFIG_M68030) || defined(CONFIG_M68040)
242*4882a593Smuzhiyun #  define CPU_IS_060 (m68k_cputype & CPU_68060)
243*4882a593Smuzhiyun #  define MMU_IS_060 (m68k_mmutype & MMU_68060)
244*4882a593Smuzhiyun #else
245*4882a593Smuzhiyun #  define CPU_M68060_ONLY
246*4882a593Smuzhiyun #  define CPU_IS_060 (1)
247*4882a593Smuzhiyun #  define MMU_IS_060 (1)
248*4882a593Smuzhiyun #endif
249*4882a593Smuzhiyun 
250*4882a593Smuzhiyun #if !defined(CONFIG_M68020) && !defined(CONFIG_M68030)
251*4882a593Smuzhiyun #  define CPU_IS_020_OR_030 (0)
252*4882a593Smuzhiyun #else
253*4882a593Smuzhiyun #  define CPU_M68020_OR_M68030
254*4882a593Smuzhiyun #  if defined(CONFIG_M68040) || defined(CONFIG_M68060)
255*4882a593Smuzhiyun #    define CPU_IS_020_OR_030 (!m68k_is040or060)
256*4882a593Smuzhiyun #  else
257*4882a593Smuzhiyun #    define CPU_M68020_OR_M68030_ONLY
258*4882a593Smuzhiyun #    define CPU_IS_020_OR_030 (1)
259*4882a593Smuzhiyun #  endif
260*4882a593Smuzhiyun #endif
261*4882a593Smuzhiyun 
262*4882a593Smuzhiyun #if !defined(CONFIG_M68040) && !defined(CONFIG_M68060)
263*4882a593Smuzhiyun #  define CPU_IS_040_OR_060 (0)
264*4882a593Smuzhiyun #else
265*4882a593Smuzhiyun #  define CPU_M68040_OR_M68060
266*4882a593Smuzhiyun #  if defined(CONFIG_M68020) || defined(CONFIG_M68030)
267*4882a593Smuzhiyun #    define CPU_IS_040_OR_060 (m68k_is040or060)
268*4882a593Smuzhiyun #  else
269*4882a593Smuzhiyun #    define CPU_M68040_OR_M68060_ONLY
270*4882a593Smuzhiyun #    define CPU_IS_040_OR_060 (1)
271*4882a593Smuzhiyun #  endif
272*4882a593Smuzhiyun #endif
273*4882a593Smuzhiyun 
274*4882a593Smuzhiyun #if !defined(CONFIG_COLDFIRE)
275*4882a593Smuzhiyun #  define CPU_IS_COLDFIRE (0)
276*4882a593Smuzhiyun #else
277*4882a593Smuzhiyun #  define CPU_IS_COLDFIRE (1)
278*4882a593Smuzhiyun #  define MMU_IS_COLDFIRE (1)
279*4882a593Smuzhiyun #endif
280*4882a593Smuzhiyun 
281*4882a593Smuzhiyun #define CPU_TYPE (m68k_cputype)
282*4882a593Smuzhiyun 
283*4882a593Smuzhiyun #ifdef CONFIG_M68KFPU_EMU
284*4882a593Smuzhiyun #  ifdef CONFIG_M68KFPU_EMU_ONLY
285*4882a593Smuzhiyun #    define FPU_IS_EMU (1)
286*4882a593Smuzhiyun #  else
287*4882a593Smuzhiyun #    define FPU_IS_EMU (!m68k_fputype)
288*4882a593Smuzhiyun #  endif
289*4882a593Smuzhiyun #else
290*4882a593Smuzhiyun #  define FPU_IS_EMU (0)
291*4882a593Smuzhiyun #endif
292*4882a593Smuzhiyun 
293*4882a593Smuzhiyun 
294*4882a593Smuzhiyun     /*
295*4882a593Smuzhiyun      *  Miscellaneous
296*4882a593Smuzhiyun      */
297*4882a593Smuzhiyun 
298*4882a593Smuzhiyun #define NUM_MEMINFO	4
299*4882a593Smuzhiyun 
300*4882a593Smuzhiyun #ifndef __ASSEMBLY__
301*4882a593Smuzhiyun struct m68k_mem_info {
302*4882a593Smuzhiyun 	unsigned long addr;		/* physical address of memory chunk */
303*4882a593Smuzhiyun 	unsigned long size;		/* length of memory chunk (in bytes) */
304*4882a593Smuzhiyun };
305*4882a593Smuzhiyun 
306*4882a593Smuzhiyun extern int m68k_num_memory;		/* # of memory blocks found (and used) */
307*4882a593Smuzhiyun extern int m68k_realnum_memory;		/* real # of memory blocks found */
308*4882a593Smuzhiyun extern struct m68k_mem_info m68k_memory[NUM_MEMINFO];/* memory description */
309*4882a593Smuzhiyun #endif
310*4882a593Smuzhiyun 
311*4882a593Smuzhiyun #endif /* _M68K_SETUP_H */
312