xref: /netbsd/sys/arch/x68k/stand/common/execkern.h (revision bf9ec67e)
1 /*
2  *	definitions for exec_kernel()
3  *
4  *	written by Yasha (ITOH Yasufumi)
5  *	public domain
6  *
7  *	$NetBSD: execkern.h,v 1.2 2002/05/18 13:54:38 isaki Exp $
8  */
9 
10 #ifndef X68K_BOOT_EXECKERN_H
11 #define X68K_BOOT_EXECKERN_H
12 
13 /*
14  * Max number of ``sections''.
15  * Currently this includes: .text, .data, size sym, Elf32_Ehdr, Elf32_Shdr x 4,
16  *	.shstrtab, .symtab, .strtab, .stab
17  */
18 #define XK_NSEC			12
19 
20 #ifndef __ASSEMBLER__
21 
22 #include <sys/types.h>
23 #include <sys/exec_elf.h>
24 
25 struct execkern_arg {
26 	/* Don't change this structure (see exec_sub.c). */
27 	u_long		load_addr;	/* text start address */
28 
29 	struct execkern_section {
30 		void	*sec_image;	/* section image source address */
31 		u_long	sec_size;	/* section size */
32 		u_long	sec_pad;	/* zero fill size after the image */
33 	} sec[XK_NSEC];
34 
35 	unsigned	d5;		/* reserved */
36 	int		rootdev;
37 	u_long		boothowto;
38 	u_long		entry_addr;
39 	/* end of "Don't change this" */
40 
41 	int		elfsymsiz;
42 	Elf32_Ehdr	ehdr;		/* saved ELF header */
43 
44 #define SHSTRTAB_FAKE	"\0.shstrtab\0.symtab\0.strtab\0.stab"
45 #define SIZE_SHSTRTAB_FAKE_WITH_STAB	33	/* sizeof SHSTRTAB_FAKE */
46 #define SIZE_SHSTRTAB_FAKE		27	/*   - sizeof ".stab" */
47 #define SHNAME_OFF_SHSTRTAB		1
48 #define SHNAME_OFF_SYMTAB		11
49 #define SHNAME_OFF_STRTAB		19
50 #define SHNAME_OFF_STAB			27
51 	char shstrtab_fake[SIZE_SHSTRTAB_FAKE_WITH_STAB];
52 };
53 
54 int xk_load __P((struct execkern_arg *, void *, u_long));
55 void __dead exec_kernel __P((struct execkern_arg *)) __attribute__((noreturn));
56 
57 #endif /* __ASSEMBLER__ */
58 
59 #endif /* X68K_BOOT_EXECKERN_H */
60