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