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