/* * definitions for exec_kernel() * * written by ITOH Yasufumi * public domain * * $NetBSD: execkern.h,v 1.5 2011/02/21 02:31:58 itohy Exp $ */ #ifndef X68K_BOOT_EXECKERN_H #define X68K_BOOT_EXECKERN_H /* * Max number of ``sections''. * Currently this includes: .text, .data, size sym, Elf32_Ehdr, Elf32_Shdr x 4, * .shstrtab, .symtab, .strtab, .stab */ #define XK_NSEC 12 #ifndef __ASSEMBLER__ #include #include struct execkern_arg { /* Don't change this structure (see exec_sub.c). */ u_long load_addr; /* text start address */ struct execkern_section { void *sec_image; /* section image source address */ u_long sec_size; /* section size */ u_long sec_pad; /* zero fill size after the image */ } sec[XK_NSEC]; unsigned d5; /* reserved */ int rootdev; u_long boothowto; u_long entry_addr; /* end of "Don't change this" */ int elfsymsiz; Elf32_Ehdr ehdr; /* saved ELF header */ #define SHSTRTAB_FAKE "\0.shstrtab\0.symtab\0.strtab\0.stab" #define SIZE_SHSTRTAB_FAKE_WITH_STAB 33 /* sizeof SHSTRTAB_FAKE */ #define SIZE_SHSTRTAB_FAKE 27 /* - sizeof ".stab" */ #define SHNAME_OFF_SHSTRTAB 1 #define SHNAME_OFF_SYMTAB 11 #define SHNAME_OFF_STRTAB 19 #define SHNAME_OFF_STAB 27 char shstrtab_fake[SIZE_SHSTRTAB_FAKE_WITH_STAB]; }; int xk_load(struct execkern_arg *, void *, u_long); void __dead exec_kernel(struct execkern_arg *); #endif /* __ASSEMBLER__ */ #endif /* X68K_BOOT_EXECKERN_H */