Massive backlog of changes
This commit is contained in:
@@ -1,12 +1,11 @@
|
||||
#include "elf.h"
|
||||
#include "pageallocator.h"
|
||||
#include "mmgr.h"
|
||||
#include "string.h"
|
||||
#include "types/status.h"
|
||||
|
||||
const uint32_t elf_magic_number = 0x464c457f;
|
||||
|
||||
int load_program(struct elf_file_header_t *elf, struct page_stack_t *page_stack)
|
||||
int load_program(struct elf_file_header_t *elf)
|
||||
{
|
||||
struct elf_program_header_t *program_header = (struct elf_program_header_t*)((void*)elf + elf->phoffset);
|
||||
unsigned int count = elf->phcount;
|
||||
@@ -17,12 +16,12 @@ int load_program(struct elf_file_header_t *elf, struct page_stack_t *page_stack)
|
||||
void *d = program_header->vaddr, *s = (void*)elf + program_header->offset;
|
||||
for(size_t n = 0; n < program_header->memsize; n += page_size)
|
||||
{
|
||||
physaddr_t page = reserve_page(page_stack);
|
||||
physaddr_t page = reserve_page();
|
||||
if(page == S_OUT_OF_MEMORY)
|
||||
{
|
||||
return S_OUT_OF_MEMORY;
|
||||
}
|
||||
int status = map_page(page_stack, d + n, page, PAGE_RW | PAGE_USERMODE | PAGE_EXECUTABLE);
|
||||
int status = map_page(d + n, page, PAGE_RW | PAGE_USERMODE | PAGE_EXECUTABLE);
|
||||
switch(status)
|
||||
{
|
||||
case S_OUT_OF_MEMORY:
|
||||
@@ -37,4 +36,5 @@ int load_program(struct elf_file_header_t *elf, struct page_stack_t *page_stack)
|
||||
count--;
|
||||
program_header = (struct elf_program_header_t*)((void*)program_header + elf->phsize);
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
Reference in New Issue
Block a user