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