/*	Copyright (c) 1984, 1986, 1987, 1988 AT&T	*/
/*	  All Rights Reserved  	*/

/*	THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T	*/
/*	The copyright notice above does not evidence any   	*/
/*	actual or intended publication of such source code.	*/

/*	Copyright (c) 1987, 1988 Microsoft Corporation	*/
/*	  All Rights Reserved	*/

/*	This Module contains Proprietary Information of Microsoft  */
/*	Corporation and should be treated as Confidential.	   */

#ident	"@(#)head.sys:bootinfo.h	1.5"

/*
 *	Definition of bootinfo structure.  This is used to pass
 *	information between the bootstrap and the kernel.
 */

#define BKI_MAGIC	0xff1234ff

#define B_MAXARGS	15		/* max. number of boot args */
#define B_STRSIZ	100		/* max length of boot arg. string */

struct bootmem {
	paddr_t		base;
	long		extent;
	ushort		flags;
	};

struct bootinfo {
	ulong	bootflags;		/* miscellaneous flags */

	struct hdparams { 		/* hard disk parameters */
		ushort	hdp_ncyl;	/* # cylinders (0 = no disk) */
		unchar	hdp_nhead;	/* # heads */
		unchar	hdp_nsect;	/* # sectors per track */
		ushort	hdp_precomp;	/* write precomp cyl */
		ushort	hdp_lz;		/* landing zone */
	} hdparams[2];			/* hard disk parameters */

	int	memavailcnt;
	struct	bootmem	memavail[B_MAXARGS];

	int	memusedcnt;
	struct	bootmem	memused[B_MAXARGS];

	int	bargc;			    /* count of boot arguments */
	char	bargv[B_MAXARGS][B_STRSIZ]; /* argument strings */

	int	checksum;
};


/* flags for struct mem flags */

#define B_MEM_NODMA	0x01
#define B_MEM_KTEXT	0x02
#define	B_MEM_KDATA	0x04
#define B_MEM_BOOTSTRAP	0x8000	/* Used internally by bootstrap */

#define BF_FLOPPY	0x01		/* booted from floppy */

#define BOOTINFO_LOC	((paddr_t)0x600)
#define KPTBL_LOC	((paddr_t)0x1000)  /* Reserved for kernel page table */

extern struct bootinfo bootinfo;
