xref: /plan9/sys/include/bootexec.h (revision 375daca8932d0755549a5f8e4d068a24a49927d4)
1 struct coffsect
2 {
3 	char	name[8];
4 	ulong	phys;
5 	ulong	virt;
6 	ulong	size;
7 	ulong	fptr;
8 	ulong	fptrreloc;
9 	ulong	fptrlineno;
10 	ulong	nrelocnlineno;
11 	ulong	flags;
12 };
13 
14 /*
15  * proprietary exec headers, needed to bootstrap various machines
16  */
17 struct mipsexec
18 {
19 	short	mmagic;		/* (0x160) mips magic number */
20 	short	nscns;		/* (unused) number of sections */
21 	long	timdat;		/* (unused) time & date stamp */
22 	long	symptr;		/* offset to symbol table */
23 	long	nsyms;		/* size of symbol table */
24 	short	opthdr;		/* (0x38) sizeof(optional hdr) */
25 	short	pcszs;		/* flags */
26 	short	amagic;		/* see above */
27 	short	vstamp;		/* version stamp */
28 	long	tsize;		/* text size in bytes */
29 	long	dsize;		/* initialized data */
30 	long	bsize;		/* uninitialized data */
31 	long	mentry;		/* entry pt.				*/
32 	long	text_start;	/* base of text used for this file	*/
33 	long	data_start;	/* base of data used for this file	*/
34 	long	bss_start;	/* base of bss used for this file	*/
35 	long	gprmask;	/* general purpose register mask	*/
36 union{
37 	long	cprmask[4];	/* co-processor register masks		*/
38 	long	pcsize;
39 };
40 	long	gp_value;	/* the gp value used for this object    */
41 };
42 
43 struct mips4kexec
44 {
45 	struct mipsexec	h;
46 	struct coffsect	itexts;
47 	struct coffsect idatas;
48 	struct coffsect ibsss;
49 };
50 
51 struct sparcexec
52 {
53 	short	sjunk;		/* dynamic bit and version number */
54 	short	smagic;		/* 0407 */
55 	ulong	stext;
56 	ulong	sdata;
57 	ulong	sbss;
58 	ulong	ssyms;
59 	ulong	sentry;
60 	ulong	strsize;
61 	ulong	sdrsize;
62 };
63 
64 struct nextexec
65 {
66 	struct	nexthdr{
67 		ulong	nmagic;
68 		ulong	ncputype;
69 		ulong	ncpusubtype;
70 		ulong	nfiletype;
71 		ulong	ncmds;
72 		ulong	nsizeofcmds;
73 		ulong	nflags;
74 	};
75 
76 	struct nextcmd{
77 		ulong	cmd;
78 		ulong	cmdsize;
79 		uchar	segname[16];
80 		ulong	vmaddr;
81 		ulong	vmsize;
82 		ulong	fileoff;
83 		ulong	filesize;
84 		ulong	maxprot;
85 		ulong	initprot;
86 		ulong	nsects;
87 		ulong	flags;
88 	}textc;
89 	struct nextsect{
90 		char	sectname[16];
91 		char	segname[16];
92 		ulong	addr;
93 		ulong	size;
94 		ulong	offset;
95 		ulong	align;
96 		ulong	reloff;
97 		ulong	nreloc;
98 		ulong	flags;
99 		ulong	reserved1;
100 		ulong	reserved2;
101 	}texts;
102 	struct nextcmd	datac;
103 	struct nextsect	datas;
104 	struct nextsect	bsss;
105 	struct nextsym{
106 		ulong	cmd;
107 		ulong	cmdsize;
108 		ulong	symoff;
109 		ulong	nsyms;
110 		ulong	spoff;
111 		ulong	pcoff;
112 	}symc;
113 };
114 
115 struct i386exec
116 {
117 	struct	i386coff{
118 		ulong	isectmagic;
119 		ulong	itime;
120 		ulong	isyms;
121 		ulong	insyms;
122 		ulong	iflags;
123 	};
124 	struct	i386hdr{
125 		ulong	imagic;
126 		ulong	itextsize;
127 		ulong	idatasize;
128 		ulong	ibsssize;
129 		ulong	ientry;
130 		ulong	itextstart;
131 		ulong	idatastart;
132 	};
133 	struct coffsect	itexts;
134 	struct coffsect idatas;
135 	struct coffsect ibsss;
136 	struct coffsect icomments;
137 };
138