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

📄 biosvar.h

📁 国产CPU-龙芯(loongson)BIOS源代码
💻 H
字号:
/*	$OpenBSD: biosvar.h,v 1.40 2002/03/14 01:26:33 millert Exp $	*//* * Copyright (c) 1997-1999 Michael Shalayeff * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *      This product includes software developed by Michael Shalayeff. * 4. The name of the author may not be used to endorse or promote products *    derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR OR HIS RELATIVES BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. */#ifndef _I386_BIOSVAR_H_#define _I386_BIOSVAR_H_#pragma pack(1)	/* some boxes put apm data seg in the 2nd page */#define	BOOTARG_OFF	(NBPG*2)#define	BOOTARG_LEN	(NBPG*1)#define	BOOTBIOS_ADDR	(0x7c00)	/* BIOS configure flags */#define	BIOSF_BIOS32	0x0001#define	BIOSF_PCIBIOS	0x0002#define	BIOSF_PROMSCAN	0x0004/* BIOS media ID */#define BIOSM_F320K	0xff	/* floppy ds/sd  8 spt */#define	BIOSM_F160K	0xfe	/* floppy ss/sd  8 spt */#define	BIOSM_F360K	0xfd	/* floppy ds/sd  9 spt */#define	BIOSM_F180K	0xfc	/* floppy ss/sd  9 spt */#define	BIOSM_ROMD	0xfa	/* ROM disk */#define	BIOSM_F120M	0xf9	/* floppy ds/hd 15 spt 5.25" */#define	BIOSM_F720K	0xf9	/* floppy ds/dd  9 spt 3.50" */#define	BIOSM_HD	0xf8	/* hard drive */#define	BIOSM_F144K	0xf0	/* floppy ds/hd 18 spt 3.50" */#define	BIOSM_OTHER	0xf0	/* any other *//* * BIOS memory maps */#define	BIOS_MAP_END	0x00	/* End of array XXX - special */#define	BIOS_MAP_FREE	0x01	/* Usable memory */#define	BIOS_MAP_RES	0x02	/* Reserved memory */#define	BIOS_MAP_ACPI	0x03	/* ACPI Reclaim memory */#define	BIOS_MAP_NVS	0x04	/* ACPI NVS memory *//* * Optional ROM header */typedefstruct bios_romheader {	u_int16_t	signature;	/* 0xaa55 */	u_int8_t	len;		/* length in pages (512 bytes) */	u_int32_t	entry;		/* initialization entry point */	u_int8_t	reserved[19];	u_int16_t	pnpheader;	/* offset to PnP expansion header */} *bios_romheader_t;/* * BIOS32 */typedefstruct bios32_header {	u_int32_t	signature;	/* 00: signature "_32_" */	u_int32_t	entry;		/* 04: entry point */	u_int8_t	rev;		/* 08: revision */	u_int8_t	length;		/* 09: header length */	u_int8_t	cksum;		/* 0a: modulo 256 checksum */	u_int8_t	reserved[5];} *bios32_header_t;typedefstruct bios32_entry_info {	paddr_t	bei_base;	psize_t	bei_size;	paddr_t	bei_entry;} *bios32_entry_info_t;typedefstruct bios32_entry {	u_int32_t offset;	u_int16_t segment;} *bios32_entry_t;#define	BIOS32_START	0xe0000#define	BIOS32_SIZE	0x20000#define	BIOS32_END	(BIOS32_START + BIOS32_SIZE - 0x10)#define	BIOS32_MAKESIG(a, b, c, d) \	((a) | ((b) << 8) | ((c) << 16) | ((d) << 24))#define	BIOS32_SIGNATURE	BIOS32_MAKESIG('_', '3', '2', '_')#define	PCIBIOS_SIGNATURE	BIOS32_MAKESIG('$', 'P', 'C', 'I')/* * CTL_BIOS definitions. */#define	BIOS_DEV		1	/* int: BIOS boot device */#define	BIOS_DISKINFO		2	/* struct: BIOS boot device info */#define BIOS_CKSUMLEN		3	/* int: disk cksum block count */#define	BIOS_MAXID		4	/* number of valid machdep ids */#define	CTL_BIOS_NAMES { \	{ 0, 0 }, \	{ "biosdev", CTLTYPE_INT }, \	{ "diskinfo", CTLTYPE_STRUCT }, \	{ "cksumlen", CTLTYPE_INT }, \}#define	BOOTARG_MEMMAP 0typedef struct _bios_memmap {	u_int64_t addr;		/* Beginning of block */	u_int64_t size;		/* Size of block */	u_int32_t type;		/* Type of block */} bios_memmap_t;/* Info about disk from the bios, plus the mapping from * BIOS numbers to BSD major (driver?) number. * * Also, do not bother with BIOSN*() macros, just parcel * the info out, and use it like this.  This makes for less * of a dependance on BIOSN*() macros having to be the same * across /boot, /bsd, and userland. */#define	BOOTARG_DISKINFO 1typedef struct _bios_diskinfo {	/* BIOS section */	int bios_number;	/* BIOS number of drive (or -1) */	u_int bios_cylinders;	/* BIOS cylinders */	u_int bios_heads;	/* BIOS heads */	u_int bios_sectors;	/* BIOS sectors */	int bios_edd;		/* EDD support */	/* BSD section */	dev_t bsd_dev;		/* BSD device */	/* Checksum section */	u_int32_t checksum;	/* Checksum for drive */	/* Misc. flags */	u_int32_t flags;#define BDI_INVALID	0x00000001	/* I/O error during checksumming */#define BDI_GOODLABEL	0x00000002	/* Had SCSI or ST506/ESDI disklabel */#define BDI_BADLABEL	0x00000004	/* Had another disklabel */#define BDI_PICKED	0x80000000	/* kernel-only: cksum matched */} bios_diskinfo_t;#define	BOOTARG_APMINFO 2typedef struct _bios_apminfo {	/* APM_CONNECT returned values */	u_int	apm_detail;	u_int	apm_code32_base;	u_int	apm_code16_base;	u_int	apm_code_len;	u_int	apm_data_base;	u_int	apm_data_len;	u_int	apm_entry;	u_int	apm_code16_len;} bios_apminfo_t;#define	BOOTARG_CKSUMLEN 3		/* u_int32_t */#define	BOOTARG_PCIINFO 4typedef struct _bios_pciinfo {	/* PCI BIOS v2.0+ - Installation check values */	u_int32_t	pci_chars;	/* Characteristics (%eax) */	u_int32_t	pci_rev;	/* BCD Revision (%ebx) */	u_int32_t	pci_entry32;	/* PM entry point for PCI BIOS */	u_int32_t	pci_lastbus;	/* Number of last PCI bus */} bios_pciinfo_t;#define	BOOTARG_CONSDEV	5typedef struct _bios_consdev {	dev_t	consdev;	int	conspeed;} bios_consdev_t;#if defined(_KERNEL) || defined (_STANDALONE)#ifdef _LOCORE#define	DOINT(n)	int	$0x20+(n)#else#define	DOINT(n)	"int $0x20+(" #n ")"extern struct BIOS_regs {	u_int32_t	biosr_ax;	u_int32_t	biosr_cx;	u_int32_t	biosr_dx;	u_int32_t	biosr_bx;	u_int32_t	biosr_bp;	u_int32_t	biosr_si;	u_int32_t	biosr_di;	u_int32_t	biosr_ds;	u_int32_t	biosr_es;}	BIOS_regs;#ifdef _KERNEL#include <machine/bus.h>struct bios_attach_args {	char *bios_dev;	u_int bios_func;	bus_space_tag_t bios_iot;	bus_space_tag_t bios_memt;	union {		void *_p;		bios_apminfo_t *_bios_apmp;	} _;};#define	bios_apmp	_._bios_apmpstruct consdev;struct proc;int bios_sysctl(int *, u_int, void *, size_t *, void *, size_t, struct proc *);void bioscnprobe(struct consdev *);void bioscninit(struct consdev *);void bioscnputc(dev_t, int);int bioscngetc(dev_t);void bioscnpollc(dev_t, int);void bios_getopt(void);/* bios32.c */int  bios32_service(u_int32_t, bios32_entry_t, bios32_entry_info_t);extern u_int bootapiver;extern bios_memmap_t *bios_memmap;#endif /* _KERNEL */#endif /* _LOCORE */#endif /* _KERNEL || _STANDALONE */#pragma pack()#endif /* _I386_BIOSVAR_H_ */

⌨️ 快捷键说明

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