From e8c6577617bffa4402c07c7aa20e3c24f03c1c20 Mon Sep 17 00:00:00 2001 From: Benji Dial Date: Sun, 6 Sep 2020 00:48:07 -0400 Subject: program loading, others big kernel additions: paging, elf loading, separate kernel and user page allocation it now properly loads and runs sd0:bin/init.elf still need to determine which disk was booted from, and start the init on that disk --- src/kernel/plef.c | 32 -------------------------------- 1 file changed, 32 deletions(-) delete mode 100644 src/kernel/plef.c (limited to 'src/kernel/plef.c') diff --git a/src/kernel/plef.c b/src/kernel/plef.c deleted file mode 100644 index 710943f..0000000 --- a/src/kernel/plef.c +++ /dev/null @@ -1,32 +0,0 @@ -#include -#include "drive.h" -#include "plef.h" -#include "task.h" -#include "util.h" - -#define PLEF_MAGIC 0xb9ba4c50 - -task_handle plef_run(const struct drive *d, const char *path) { - drive_file_id_t h = d->get_file(d, path); - if (!h) - return 0; - - uint8_t start[512]; - d->load_sector(d, h, 0, start); - - struct plef_header head = *(struct plef_header *)start; - if ((head.magic != PLEF_MAGIC) || (head.version_high)) { - d->free_file(d, h); - return 0; - } - - uint32_t payload_addr; - segment_id cs = new_segment(true, head.payload_length + head.bss_length, &payload_addr); - segment_id ds = mirror_segment(false, cs); - - fmcpy((void *)payload_addr, d, h, head.payload_offset, head.payload_length); - - d->free_file(d, h); - - return new_task(cs, ds, head.entry_point, head.payload_length + head.bss_length); -} \ No newline at end of file -- cgit v1.2.3