39 lines
991 B
C
39 lines
991 B
C
|
|
#ifndef KERNEL_BSP_H_
|
||
|
|
#define KERNEL_BSP_H_
|
||
|
|
|
||
|
|
#include <kernel/compiler.h>
|
||
|
|
#include <mango/status.h>
|
||
|
|
#include <kernel/types.h>
|
||
|
|
#include <stddef.h>
|
||
|
|
#include <stdint.h>
|
||
|
|
|
||
|
|
#define BSP_MAGIC 0xcafebabe
|
||
|
|
|
||
|
|
struct task;
|
||
|
|
|
||
|
|
struct bsp_trailer {
|
||
|
|
/* these fields are stored in big endian in the package itself */
|
||
|
|
uint32_t bsp_magic;
|
||
|
|
uint64_t bsp_fs_offset;
|
||
|
|
uint32_t bsp_fs_len;
|
||
|
|
uint64_t bsp_exec_offset;
|
||
|
|
uint32_t bsp_exec_len;
|
||
|
|
uint64_t bsp_text_faddr, bsp_text_vaddr, bsp_text_size;
|
||
|
|
uint64_t bsp_data_faddr, bsp_data_vaddr, bsp_data_size;
|
||
|
|
uint64_t bsp_exec_entry;
|
||
|
|
} __packed;
|
||
|
|
|
||
|
|
struct bsp {
|
||
|
|
/* the values in this struct are stored in host byte order */
|
||
|
|
struct bsp_trailer bsp_trailer;
|
||
|
|
struct vm_object *bsp_vmo;
|
||
|
|
};
|
||
|
|
|
||
|
|
extern void bsp_set_location(const struct boot_module *mod);
|
||
|
|
extern void bsp_get_location(struct boot_module *out);
|
||
|
|
|
||
|
|
extern kern_status_t bsp_load(struct bsp *bsp, const struct boot_module *mod);
|
||
|
|
extern kern_status_t bsp_launch_async(struct bsp *bsp, struct task *task);
|
||
|
|
|
||
|
|
#endif
|