xref: /netbsd-src/sys/arch/x68k/stand/common/execkern.h (revision ed461fc193a34ff07bc68b0c28567cb8cfe199e5)
1bfd67e9cSitohy /*
2bfd67e9cSitohy  *	definitions for exec_kernel()
3bfd67e9cSitohy  *
4*ed461fc1Sitohy  *	written by ITOH Yasufumi
5bfd67e9cSitohy  *	public domain
6bfd67e9cSitohy  *
7*ed461fc1Sitohy  *	$NetBSD: execkern.h,v 1.5 2011/02/21 02:31:58 itohy Exp $
8bfd67e9cSitohy  */
9bfd67e9cSitohy 
10bfd67e9cSitohy #ifndef X68K_BOOT_EXECKERN_H
11bfd67e9cSitohy #define X68K_BOOT_EXECKERN_H
12bfd67e9cSitohy 
131dc0c84bSisaki /*
141dc0c84bSisaki  * Max number of ``sections''.
151dc0c84bSisaki  * Currently this includes: .text, .data, size sym, Elf32_Ehdr, Elf32_Shdr x 4,
161dc0c84bSisaki  *	.shstrtab, .symtab, .strtab, .stab
171dc0c84bSisaki  */
181dc0c84bSisaki #define XK_NSEC			12
191dc0c84bSisaki 
201dc0c84bSisaki #ifndef __ASSEMBLER__
211dc0c84bSisaki 
221dc0c84bSisaki #include <sys/types.h>
231dc0c84bSisaki #include <sys/exec_elf.h>
241dc0c84bSisaki 
25bfd67e9cSitohy struct execkern_arg {
261dc0c84bSisaki 	/* Don't change this structure (see exec_sub.c). */
271dc0c84bSisaki 	u_long		load_addr;	/* text start address */
281dc0c84bSisaki 
291dc0c84bSisaki 	struct execkern_section {
301dc0c84bSisaki 		void	*sec_image;	/* section image source address */
311dc0c84bSisaki 		u_long	sec_size;	/* section size */
321dc0c84bSisaki 		u_long	sec_pad;	/* zero fill size after the image */
331dc0c84bSisaki 	} sec[XK_NSEC];
341dc0c84bSisaki 
35bfd67e9cSitohy 	unsigned	d5;		/* reserved */
36bfd67e9cSitohy 	int		rootdev;
37bfd67e9cSitohy 	u_long		boothowto;
38bfd67e9cSitohy 	u_long		entry_addr;
391dc0c84bSisaki 	/* end of "Don't change this" */
401dc0c84bSisaki 
411dc0c84bSisaki 	int		elfsymsiz;
421dc0c84bSisaki 	Elf32_Ehdr	ehdr;		/* saved ELF header */
431dc0c84bSisaki 
441dc0c84bSisaki #define SHSTRTAB_FAKE	"\0.shstrtab\0.symtab\0.strtab\0.stab"
451dc0c84bSisaki #define SIZE_SHSTRTAB_FAKE_WITH_STAB	33	/* sizeof SHSTRTAB_FAKE */
461dc0c84bSisaki #define SIZE_SHSTRTAB_FAKE		27	/*   - sizeof ".stab" */
471dc0c84bSisaki #define SHNAME_OFF_SHSTRTAB		1
481dc0c84bSisaki #define SHNAME_OFF_SYMTAB		11
491dc0c84bSisaki #define SHNAME_OFF_STRTAB		19
501dc0c84bSisaki #define SHNAME_OFF_STAB			27
511dc0c84bSisaki 	char shstrtab_fake[SIZE_SHSTRTAB_FAKE_WITH_STAB];
52bfd67e9cSitohy };
53bfd67e9cSitohy 
5402cdf4d2Sdsl int xk_load(struct execkern_arg *, void *, u_long);
5502cdf4d2Sdsl void __dead exec_kernel(struct execkern_arg *);
56bfd67e9cSitohy 
571dc0c84bSisaki #endif /* __ASSEMBLER__ */
581dc0c84bSisaki 
59bfd67e9cSitohy #endif /* X68K_BOOT_EXECKERN_H */
60