2013-04-06 16:48:33 +02:00

60 lines
1.4 KiB
C

/*
* 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 <sys/types.h>
#include <sys/exec_elf.h>
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 */