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