os/kernel/elf.c

25 lines
629 B
C
Raw Permalink Normal View History

#include <stdint.h>
#include <stddef.h>
#include <debugging.h>
#include <kernel/tty.h>
#include <kernel/gdt.h>
2024-08-08 21:34:30 +02:00
#include <debugging.h>
static void* memcpy(void* restrict dstptr, const void* restrict srcptr, size_t size) {
2024-08-13 15:24:17 +02:00
unsigned char* dst = (unsigned char*) dstptr;
const unsigned char* src = (const unsigned char*) srcptr;
for (size_t i = 0; i < size; i++)
dst[i] = src[i];
return dstptr;
2024-08-08 21:34:30 +02:00
}
2024-08-09 23:16:20 +02:00
extern void jump_to_userspace();
void run_program(uint8_t* program, size_t length)
{
2024-08-09 23:16:20 +02:00
uint8_t* userland_code = (uint8_t*) 0x00800000;
2024-08-08 21:34:30 +02:00
memcpy(userland_code, program, length);
2024-08-09 23:16:20 +02:00
jump_to_userspace();
}