kernel: implementing mapping and execution of bsp executable
This commit is contained in:
@@ -7,7 +7,32 @@
|
||||
#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
|
||||
|
||||
Reference in New Issue
Block a user