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