⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setup.h

📁 嵌入式系统设计与实例开发实验教材二源码 多线程应用程序设计 串行端口程序设计 AD接口实验 CAN总线通信实验 GPS通信实验 Linux内核移植与编译实验 IC卡读写实验 SD驱动使
💻 H
字号:
/*** asm/setup.h -- Definition of the Linux/m68k boot information structure**** Copyright 1992 by Greg Harp**** This file is subject to the terms and conditions of the GNU General Public** License.  See the file COPYING in the main directory of this archive** for more details.**** Created 09/29/92 by Greg Harp**** 5/2/94 Roman Hodek:**   Added bi_atari part of the machine dependent union bi_un; for now it**   contains just a model field to distinguish between TT and Falcon.** 26/7/96 Roman Zippel:**   Renamed to setup.h; added some useful macros to allow gcc some**   optimizations if possible.*/#ifndef _M68K_SETUP_H#define _M68K_SETUP_H#include <linux/config.h>#define CL_SIZE	(256)#if 0#include <asm/zorro.h>/* * Amiga specific part of bootinfo structure. */#define NUM_AUTO    16#ifndef __ASSEMBLY__#define AMIGAHW_DECLARE(name)	unsigned name : 1#define AMIGAHW_SET(name)	(boot_info.bi_amiga.hw_present.name = 1)#define AMIGAHW_PRESENT(name)	(boot_info.bi_amiga.hw_present.name)struct bi_Amiga {	int model;				/* Amiga Model (3000?) */	int num_autocon;			/* # of autoconfig devices found */	struct ConfigDev autocon[NUM_AUTO];	/* up to 16 autoconfig devices */#ifdef HACKER_KERNEL	void (*exit_func)(void);		/* addr of function to exit kernel */	unsigned long chip_addr;		/* start of chip memory (bytes) */#endif	unsigned long chip_size;		/* size of chip memory (bytes) */	unsigned char vblank;	 		/* VBLANK frequency */	unsigned char psfreq; 			/* power supply frequency */	unsigned long eclock; 			/* EClock frequency */	unsigned long chipset;			/* native chipset present */	struct {		/* video hardware */		AMIGAHW_DECLARE(AMI_VIDEO);	/* Amiga Video */		AMIGAHW_DECLARE(AMI_BLITTER);	/* Amiga Blitter */		AMIGAHW_DECLARE(AMBER_FF);	/* Amber Flicker Fixer */		/* sound hardware */		AMIGAHW_DECLARE(AMI_AUDIO);	/* Amiga Audio */		/* disk storage interfaces */		AMIGAHW_DECLARE(AMI_FLOPPY);	/* Amiga Floppy */		AMIGAHW_DECLARE(A3000_SCSI);	/* SCSI (wd33c93, A3000 alike) */		AMIGAHW_DECLARE(A4000_SCSI);	/* SCSI (ncr53c710, A4000T alike) */		AMIGAHW_DECLARE(A1200_IDE);	/* IDE (A1200 alike) */		AMIGAHW_DECLARE(A4000_IDE);	/* IDE (A4000 alike) */		AMIGAHW_DECLARE(CD_ROM);	/* CD ROM drive */		/* other I/O hardware */		AMIGAHW_DECLARE(AMI_KEYBOARD);	/* Amiga Keyboard */		AMIGAHW_DECLARE(AMI_MOUSE);	/* Amiga Mouse */		AMIGAHW_DECLARE(AMI_SERIAL);	/* Amiga Serial */		AMIGAHW_DECLARE(AMI_PARALLEL);	/* Amiga Parallel */		/* real time clocks */		AMIGAHW_DECLARE(A2000_CLK);	/* Hardware Clock (A2000 alike) */		AMIGAHW_DECLARE(A3000_CLK);	/* Hardware Clock (A3000 alike) */		/* supporting hardware */		AMIGAHW_DECLARE(CHIP_RAM);	/* Chip RAM */		AMIGAHW_DECLARE(PAULA);		/* Paula (8364) */		AMIGAHW_DECLARE(DENISE);	/* Denise (8362) */		AMIGAHW_DECLARE(DENISE_HR);	/* Denise (8373) */		AMIGAHW_DECLARE(LISA);		/* Lisa (8375) */		AMIGAHW_DECLARE(AGNUS_PAL);	/* Normal/Fat PAL Agnus (8367/8371) */		AMIGAHW_DECLARE(AGNUS_NTSC);	/* Normal/Fat NTSC Agnus (8361/8370) */		AMIGAHW_DECLARE(AGNUS_HR_PAL);	/* Fat Hires PAL Agnus (8372) */		AMIGAHW_DECLARE(AGNUS_HR_NTSC);	/* Fat Hires NTSC Agnus (8372) */		AMIGAHW_DECLARE(ALICE_PAL);	/* PAL Alice (8374) */		AMIGAHW_DECLARE(ALICE_NTSC);	/* NTSC Alice (8374) */		AMIGAHW_DECLARE(MAGIC_REKICK);	/* A3000 Magic Hard Rekick */		AMIGAHW_DECLARE(ZORRO);		/* Zorro AutoConfig */	} hw_present;};#else	/* __ASSEMBLY__ */ BI_amiga_model		= BI_unBI_amiga_num_autcon	= BI_amiga_model+4BI_amiga_autocon	= BI_amiga_num_autcon+4#ifdef HACKER_KERNELBI_amiga_exit_func	= BI_amiga_autocon+(CD_sizeof*NUM_AUTO)BI_amiga_chip_addr	= BI_amiga_exit_func+4BI_amiga_chip_size	= BI_amiga_chip_addr+4#elseBI_amiga_chip_size	= BI_amiga_autocon+(CD_sizeof*NUM_AUTO)#endifBI_amiga_vblank		= BI_amiga_chip_size+4BI_amiga_psfreq		= BI_amiga_vblank+1BI_amiga_eclock		= BI_amiga_psfreq+1BI_amiga_chipset	= BI_amiga_eclock+4BI_amiga_hw_present	= BI_amiga_chipset+4#endif	/* __ASSEMBLY__ *//* Atari specific part of bootinfo *//* * Define several Hardware-Chips for indication so that for the ATARI we do * no longer decide whether it is a Falcon or other machine . It's just * important what hardware the machine uses *//* ++roman 08/08/95: rewritten from ORing constants to a C bitfield */#ifndef __ASSEMBLY__#define ATARIHW_DECLARE(name)	unsigned name : 1#define ATARIHW_SET(name)	(boot_info.bi_atari.hw_present.name = 1)#define ATARIHW_PRESENT(name)	(boot_info.bi_atari.hw_present.name)struct bi_Atari {	struct {		/* video hardware */		ATARIHW_DECLARE(STND_SHIFTER);	/* ST-Shifter - no base low ! */		ATARIHW_DECLARE(EXTD_SHIFTER);	/* STe-Shifter - 24 bit address */		ATARIHW_DECLARE(TT_SHIFTER);	/* TT-Shifter */		ATARIHW_DECLARE(VIDEL_SHIFTER);	/* Falcon-Shifter */		/* sound hardware */		ATARIHW_DECLARE(YM_2149);	/* Yamaha YM 2149 */		ATARIHW_DECLARE(PCM_8BIT);	/* PCM-Sound in STe-ATARI */		ATARIHW_DECLARE(CODEC);		/* CODEC Sound (Falcon) */		/* disk storage interfaces */		ATARIHW_DECLARE(TT_SCSI);	/* Directly mapped NCR5380 */		ATARIHW_DECLARE(ST_SCSI);	/* NCR5380 via ST-DMA (Falcon) */		ATARIHW_DECLARE(ACSI);		/* Standard ACSI like in STs */		ATARIHW_DECLARE(IDE);		/* IDE Interface */		ATARIHW_DECLARE(FDCSPEED);	/* 8/16 MHz switch for FDC */		/* other I/O hardware */		ATARIHW_DECLARE(ST_MFP);	/* The ST-MFP (there should						   be no Atari without						   it... but who knows?) */		ATARIHW_DECLARE(TT_MFP);	/* 2nd MFP */		ATARIHW_DECLARE(SCC);		/* Serial Communications Contr. */		ATARIHW_DECLARE(ST_ESCC);	/* SCC Z83230 in an ST */		ATARIHW_DECLARE(ANALOG_JOY);	/* Paddle Interface for STe						   and Falcon */		ATARIHW_DECLARE(MICROWIRE);	/* Microwire Interface */		/* DMA */		ATARIHW_DECLARE(STND_DMA);	/* 24 Bit limited ST-DMA */		ATARIHW_DECLARE(EXTD_DMA);	/* 32 Bit ST-DMA */		ATARIHW_DECLARE(SCSI_DMA);	/* DMA for the NCR5380 */		ATARIHW_DECLARE(SCC_DMA);	/* DMA for the SCC */		/* real time clocks */		ATARIHW_DECLARE(TT_CLK);	/* TT compatible clock chip */		ATARIHW_DECLARE(MSTE_CLK);	/* Mega ST(E) clock chip */		/* supporting hardware */		ATARIHW_DECLARE(SCU);		/* System Control Unit */		ATARIHW_DECLARE(BLITTER);	/* Blitter */		ATARIHW_DECLARE(VME);		/* VME Bus */	} hw_present;	unsigned long mch_cookie;		/* _MCH cookie from TOS */};/* mch_cookie values (upper word) */#define	ATARI_MCH_ST		0#define	ATARI_MCH_STE		1#define	ATARI_MCH_TT		2#define	ATARI_MCH_FALCON	3struct mem_info {	unsigned long addr;			/* physical address of memory chunk */	unsigned long size;			/* length of memory chunk (in bytes) */};#else	/* __ASSEMBLY__ */MI_addr		= 0MI_size		= MI_addr+4MI_sizeof	= MI_size+4#endif /* __ASSEMBLY__ */#define NUM_MEMINFO  4#define MACH_AMIGA   1#define MACH_ATARI   2#define MACH_MAC     3/* * CPU and FPU types */#define CPUB_68020 0#define CPUB_68030 1#define CPUB_68040 2#define CPUB_68060 3#define FPUB_68881 5#define FPUB_68882 6#define FPUB_68040 7				/* Internal FPU */#define FPUB_68060 8				/* Internal FPU */#define CPU_68020    (1<<CPUB_68020)#define CPU_68030    (1<<CPUB_68030)#define CPU_68040    (1<<CPUB_68040)#define CPU_68060    (1<<CPUB_68060)#define CPU_MASK     (31)#define FPU_68881    (1<<FPUB_68881)#define FPU_68882    (1<<FPUB_68882)#define FPU_68040    (1<<FPUB_68040)		/* Internal FPU */#define FPU_68060    (1<<FPUB_68060)		/* Internal FPU */#define FPU_MASK     (0xfe0)#define CL_SIZE      (256)/* * machine type definitions */#if !defined(CONFIG_AMIGA)#  define MACH_IS_AMIGA (0)#elif defined(CONFIG_ATARI) || defined(CONFIG_MAC)#  define MACH_IS_AMIGA (boot_info.machtype == MACH_AMIGA)#else#  define CONFIG_AMIGA_ONLY#  define MACH_IS_AMIGA (1)#  define MACH_TYPE (MACH_AMIGA)#endif#if !defined(CONFIG_ATARI)#  define MACH_IS_ATARI (0)#elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC)#  define MACH_IS_ATARI (boot_info.machtype == MACH_ATARI)#else#  define CONFIG_ATARI_ONLY#  define MACH_IS_ATARI (1)#  define MACH_TYPE (MACH_ATARI)#endif#if defined(CONFIG_MAC)#  error Currently no Mac support!#endif#ifndef MACH_TYPE#  define MACH_TYPE (boot_info.machtype)#endif/* * cpu type definitions */#if !defined(CONFIG_M68020)#  define CPU_IS_020 (0)#elif defined(CONFIG_M68030) || defined(CONFIG_M68040) || defined(CONFIG_M68060)#  define CPU_IS_020 (boot_info.cputype & CPU_68020)#else#  define CONFIG_M68020_ONLY#  define CPU_IS_020 (1)#endif#if !defined(CONFIG_M68030)#  define CPU_IS_030 (0)#elif defined(CONFIG_M68020) || defined(CONFIG_M68040) || defined(CONFIG_M68060)#  define CPU_IS_030 (boot_info.cputype & CPU_68030)#else#  define CONFIG_M68030_ONLY#  define CPU_IS_030 (1)#endif#if !defined(CONFIG_M68040)#  define CPU_IS_040 (0)#elif defined(CONFIG_M68020) || defined(CONFIG_M68030) || defined(CONFIG_M68060)#  define CPU_IS_040 (boot_info.cputype & CPU_68040)#else#  define CONFIG_M68040_ONLY#  define CPU_IS_040 (1)#endif#if !defined(CONFIG_M68060)#  define CPU_IS_060 (0)#elif defined(CONFIG_M68020) || defined(CONFIG_M68030) || defined(CONFIG_M68040)#  define CPU_IS_060 (boot_info.cputype & CPU_68060)#else#  define CONFIG_M68060_ONLY#  define CPU_IS_060 (1)#endif#if !defined(CONFIG_M68020) && !defined(CONFIG_M68030)#  define CPU_IS_020_OR_030 (0)#else#  define CONFIG_M68020_OR_M68030#  if defined(CONFIG_M68040) || defined(CONFIG_M68060)#    define CPU_IS_020_OR_030 (!m68k_is040or060)#  else#    define CONFIG_M68020_OR_M68030_ONLY#    define CPU_IS_020_OR_030 (1)#  endif#endif#if !defined(CONFIG_M68040) && !defined(CONFIG_M68060)#  define CPU_IS_040_OR_060 (0)#else#  define CONFIG_M68040_OR_M68060#  if defined(CONFIG_M68020) || defined(CONFIG_M68030)#    define CPU_IS_040_OR_060 (m68k_is040or060)#  else#    define CONFIG_M68040_OR_M68060_ONLY#    define CPU_IS_040_OR_060 (1)#  endif#endif#define CPU_TYPE (boot_info.cputype)#ifndef __ASSEMBLY__#ifdef __KERNEL__	/*	 * m68k_is040or060 is != 0 for a '040 or higher;	 * used numbers are 4 for 68040 and 6 for 68060.	 */extern int m68k_is040or060;#endifstruct bootinfo {	unsigned long machtype;			/* machine type */	unsigned long cputype;			/* system CPU & FPU */	struct mem_info memory[NUM_MEMINFO];	/* memory description */	int num_memory;				/* # of memory blocks found */	unsigned long ramdisk_size;		/* ramdisk size in 1024 byte blocks */	unsigned long ramdisk_addr;		/* address of the ram disk in mem */	char command_line[CL_SIZE];		/* kernel command line parameters */	union {		struct bi_Amiga bi_ami; 	/* Amiga specific information */		struct bi_Atari bi_ata; 	/* Atari specific information */	} bi_un;};#define bi_amiga bi_un.bi_ami#define bi_atari bi_un.bi_ata#define bi_mac	 bi_un.bi_macextern struct bootinfo    boot_info;#else	/* __ASSEMBLY__ */BI_machtype	= 0BI_cputype	= BI_machtype+4BI_memory	= BI_cputype+4BI_num_memory	= BI_memory+(MI_sizeof*NUM_MEMINFO)BI_ramdisk_size	= BI_num_memory+4BI_ramdisk_addr	= BI_ramdisk_size+4BI_command_line	= BI_ramdisk_addr+4BI_un		= BI_command_line+CL_SIZE#endif /* __ASSEMBLY__ *//* * Stuff for bootinfo interface versioning * * At the start of kernel code, a 'struct bootversion' is located. bootstrap * checks for a matching version of the interface before booting a kernel, to * avoid user confusion if kernel and bootstrap don't work together :-) * * If incompatible changes are made to the bootinfo interface, the major * number below should be stepped (and the minor reset to 0) for the * appropriate machine. If a change is backward-compatible, the minor should * be stepped. "Backwards-compatible" means that booting will work, but * certain features may not. */#define BOOTINFOV_MAGIC			0x4249561A	/* 'BIV^Z' */#define MK_BI_VERSION(major,minor)	(((major)<<16)+(minor))#define BI_VERSION_MAJOR(v)		(((v) >> 16) & 0xffff)#define BI_VERSION_MINOR(v)		((v) & 0xffff)#ifndef __ASSEMBLY__struct bootversion {	unsigned short branch;	unsigned long magic;	struct {		unsigned long machtype;		unsigned long version;	} machversions[0];};#endif /* __ASSEMBLY__ */#define AMIGA_BOOTI_VERSION    MK_BI_VERSION( 1, 0 )#define ATARI_BOOTI_VERSION    MK_BI_VERSION( 1, 0 )#endif#endif /* _M68K_SETUP_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -