xref: /plan9/sys/include/bootexec.h (revision 375daca8932d0755549a5f8e4d068a24a49927d4)
1*219b2ee8SDavid du Colombier struct coffsect
2*219b2ee8SDavid du Colombier {
3*219b2ee8SDavid du Colombier 	char	name[8];
4*219b2ee8SDavid du Colombier 	ulong	phys;
5*219b2ee8SDavid du Colombier 	ulong	virt;
6*219b2ee8SDavid du Colombier 	ulong	size;
7*219b2ee8SDavid du Colombier 	ulong	fptr;
8*219b2ee8SDavid du Colombier 	ulong	fptrreloc;
9*219b2ee8SDavid du Colombier 	ulong	fptrlineno;
10*219b2ee8SDavid du Colombier 	ulong	nrelocnlineno;
11*219b2ee8SDavid du Colombier 	ulong	flags;
12*219b2ee8SDavid du Colombier };
13*219b2ee8SDavid du Colombier 
143e12c5d1SDavid du Colombier /*
153e12c5d1SDavid du Colombier  * proprietary exec headers, needed to bootstrap various machines
163e12c5d1SDavid du Colombier  */
173e12c5d1SDavid du Colombier struct mipsexec
183e12c5d1SDavid du Colombier {
193e12c5d1SDavid du Colombier 	short	mmagic;		/* (0x160) mips magic number */
203e12c5d1SDavid du Colombier 	short	nscns;		/* (unused) number of sections */
213e12c5d1SDavid du Colombier 	long	timdat;		/* (unused) time & date stamp */
223e12c5d1SDavid du Colombier 	long	symptr;		/* offset to symbol table */
233e12c5d1SDavid du Colombier 	long	nsyms;		/* size of symbol table */
243e12c5d1SDavid du Colombier 	short	opthdr;		/* (0x38) sizeof(optional hdr) */
253e12c5d1SDavid du Colombier 	short	pcszs;		/* flags */
263e12c5d1SDavid du Colombier 	short	amagic;		/* see above */
273e12c5d1SDavid du Colombier 	short	vstamp;		/* version stamp */
283e12c5d1SDavid du Colombier 	long	tsize;		/* text size in bytes */
293e12c5d1SDavid du Colombier 	long	dsize;		/* initialized data */
303e12c5d1SDavid du Colombier 	long	bsize;		/* uninitialized data */
313e12c5d1SDavid du Colombier 	long	mentry;		/* entry pt.				*/
323e12c5d1SDavid du Colombier 	long	text_start;	/* base of text used for this file	*/
333e12c5d1SDavid du Colombier 	long	data_start;	/* base of data used for this file	*/
343e12c5d1SDavid du Colombier 	long	bss_start;	/* base of bss used for this file	*/
353e12c5d1SDavid du Colombier 	long	gprmask;	/* general purpose register mask	*/
363e12c5d1SDavid du Colombier union{
373e12c5d1SDavid du Colombier 	long	cprmask[4];	/* co-processor register masks		*/
383e12c5d1SDavid du Colombier 	long	pcsize;
393e12c5d1SDavid du Colombier };
403e12c5d1SDavid du Colombier 	long	gp_value;	/* the gp value used for this object    */
413e12c5d1SDavid du Colombier };
423e12c5d1SDavid du Colombier 
43*219b2ee8SDavid du Colombier struct mips4kexec
44*219b2ee8SDavid du Colombier {
45*219b2ee8SDavid du Colombier 	struct mipsexec	h;
46*219b2ee8SDavid du Colombier 	struct coffsect	itexts;
47*219b2ee8SDavid du Colombier 	struct coffsect idatas;
48*219b2ee8SDavid du Colombier 	struct coffsect ibsss;
49*219b2ee8SDavid du Colombier };
50*219b2ee8SDavid du Colombier 
513e12c5d1SDavid du Colombier struct sparcexec
523e12c5d1SDavid du Colombier {
533e12c5d1SDavid du Colombier 	short	sjunk;		/* dynamic bit and version number */
543e12c5d1SDavid du Colombier 	short	smagic;		/* 0407 */
553e12c5d1SDavid du Colombier 	ulong	stext;
563e12c5d1SDavid du Colombier 	ulong	sdata;
573e12c5d1SDavid du Colombier 	ulong	sbss;
583e12c5d1SDavid du Colombier 	ulong	ssyms;
593e12c5d1SDavid du Colombier 	ulong	sentry;
603e12c5d1SDavid du Colombier 	ulong	strsize;
613e12c5d1SDavid du Colombier 	ulong	sdrsize;
623e12c5d1SDavid du Colombier };
633e12c5d1SDavid du Colombier 
643e12c5d1SDavid du Colombier struct nextexec
653e12c5d1SDavid du Colombier {
663e12c5d1SDavid du Colombier 	struct	nexthdr{
673e12c5d1SDavid du Colombier 		ulong	nmagic;
683e12c5d1SDavid du Colombier 		ulong	ncputype;
693e12c5d1SDavid du Colombier 		ulong	ncpusubtype;
703e12c5d1SDavid du Colombier 		ulong	nfiletype;
713e12c5d1SDavid du Colombier 		ulong	ncmds;
723e12c5d1SDavid du Colombier 		ulong	nsizeofcmds;
733e12c5d1SDavid du Colombier 		ulong	nflags;
743e12c5d1SDavid du Colombier 	};
753e12c5d1SDavid du Colombier 
763e12c5d1SDavid du Colombier 	struct nextcmd{
773e12c5d1SDavid du Colombier 		ulong	cmd;
783e12c5d1SDavid du Colombier 		ulong	cmdsize;
793e12c5d1SDavid du Colombier 		uchar	segname[16];
803e12c5d1SDavid du Colombier 		ulong	vmaddr;
813e12c5d1SDavid du Colombier 		ulong	vmsize;
823e12c5d1SDavid du Colombier 		ulong	fileoff;
833e12c5d1SDavid du Colombier 		ulong	filesize;
843e12c5d1SDavid du Colombier 		ulong	maxprot;
853e12c5d1SDavid du Colombier 		ulong	initprot;
863e12c5d1SDavid du Colombier 		ulong	nsects;
873e12c5d1SDavid du Colombier 		ulong	flags;
883e12c5d1SDavid du Colombier 	}textc;
893e12c5d1SDavid du Colombier 	struct nextsect{
903e12c5d1SDavid du Colombier 		char	sectname[16];
913e12c5d1SDavid du Colombier 		char	segname[16];
923e12c5d1SDavid du Colombier 		ulong	addr;
933e12c5d1SDavid du Colombier 		ulong	size;
943e12c5d1SDavid du Colombier 		ulong	offset;
953e12c5d1SDavid du Colombier 		ulong	align;
963e12c5d1SDavid du Colombier 		ulong	reloff;
973e12c5d1SDavid du Colombier 		ulong	nreloc;
983e12c5d1SDavid du Colombier 		ulong	flags;
993e12c5d1SDavid du Colombier 		ulong	reserved1;
1003e12c5d1SDavid du Colombier 		ulong	reserved2;
1013e12c5d1SDavid du Colombier 	}texts;
1023e12c5d1SDavid du Colombier 	struct nextcmd	datac;
1033e12c5d1SDavid du Colombier 	struct nextsect	datas;
1043e12c5d1SDavid du Colombier 	struct nextsect	bsss;
1053e12c5d1SDavid du Colombier 	struct nextsym{
1063e12c5d1SDavid du Colombier 		ulong	cmd;
1073e12c5d1SDavid du Colombier 		ulong	cmdsize;
1083e12c5d1SDavid du Colombier 		ulong	symoff;
1093e12c5d1SDavid du Colombier 		ulong	nsyms;
1103e12c5d1SDavid du Colombier 		ulong	spoff;
1113e12c5d1SDavid du Colombier 		ulong	pcoff;
1123e12c5d1SDavid du Colombier 	}symc;
1133e12c5d1SDavid du Colombier };
1143e12c5d1SDavid du Colombier 
1153e12c5d1SDavid du Colombier struct i386exec
1163e12c5d1SDavid du Colombier {
1173e12c5d1SDavid du Colombier 	struct	i386coff{
1183e12c5d1SDavid du Colombier 		ulong	isectmagic;
1193e12c5d1SDavid du Colombier 		ulong	itime;
1203e12c5d1SDavid du Colombier 		ulong	isyms;
1213e12c5d1SDavid du Colombier 		ulong	insyms;
1223e12c5d1SDavid du Colombier 		ulong	iflags;
1233e12c5d1SDavid du Colombier 	};
1243e12c5d1SDavid du Colombier 	struct	i386hdr{
1253e12c5d1SDavid du Colombier 		ulong	imagic;
1263e12c5d1SDavid du Colombier 		ulong	itextsize;
1273e12c5d1SDavid du Colombier 		ulong	idatasize;
1283e12c5d1SDavid du Colombier 		ulong	ibsssize;
1293e12c5d1SDavid du Colombier 		ulong	ientry;
1303e12c5d1SDavid du Colombier 		ulong	itextstart;
1313e12c5d1SDavid du Colombier 		ulong	idatastart;
1323e12c5d1SDavid du Colombier 	};
133*219b2ee8SDavid du Colombier 	struct coffsect	itexts;
134*219b2ee8SDavid du Colombier 	struct coffsect idatas;
135*219b2ee8SDavid du Colombier 	struct coffsect ibsss;
136*219b2ee8SDavid du Colombier 	struct coffsect icomments;
1373e12c5d1SDavid du Colombier };
138