Path and compile musl libc into kernel

This commit is contained in:
2022-01-09 22:51:55 +01:00
parent c95f256e1b
commit 8d53f5468e
8 changed files with 158 additions and 7 deletions

View File

@@ -11,10 +11,11 @@ CFLAGS := -Wall -Wextra -pedantic -ffreestanding -mcmodel=large
CFLAGS += -ggdb -O0
ASFLAGS += -ggdb
CPPFLAGS += -I include
LDFLAGS := -n -nostdlib -lgcc -T Link.ld
LDFLAGS := -n -T Link.ld
LDLIBS := -nostdlib -lgcc -L/opt/sysroot/usr/lib -lc
kernel: $(OBJ)
$(LINK.c) $^ -o $@
$(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@
%.o: %.S.py
python3 $^ | $(COMPILE.S) $(DEPFLAGS) -x assembler-with-cpp - -o $@

View File

@@ -5,6 +5,7 @@
#include <debug.h>
#include <multiboot.h>
#include <interrupts.h>
#include <stdlib.h>
struct kernel_boot_data_st kernel_boot_data;
@@ -26,6 +27,10 @@ void kmain(uint64_t multiboot_magic, void *multiboot_data)
debug_info("Boot complete\n");
debug_info("Mallocing\n");
uint64_t a = malloc(100);
debug_info("Malloced %x\n", a);
PANIC("End of kernel function!");
debug_info("Broke out of panic");

View File

@@ -0,0 +1,50 @@
#include <debug.h>
long syscall0(long num)
{
long retval = 0;
PANIC("Unknown syscall: %d()\n", num);
return retval;
}
extern long syscall1(long num, long a1)
{
long retval = 0;
PANIC("Unknown syscall: %d(%x)\n", num, a1);
return retval;
}
extern long syscall2(long num, long a1, long a2)
{
long retval = 0;
PANIC("Unknown syscall: %d(%x, %x)\n", num, a1, a2);
return retval;
}
extern long syscall3(long num, long a1, long a2, long a3)
{
long retval = 0;
PANIC("Unknown syscall: %d(%x, %x, %x)\n", num, a1, a2, a3);
return retval;
}
extern long syscall4(long num, long a1, long a2, long a3, long a4)
{
long retval = 0;
PANIC("Unknown syscall: %d(%x, %x, %x, %x)\n", num, a1, a2, a3, a4);
return retval;
}
extern long syscall5(long num, long a1, long a2, long a3, long a4, long a5)
{
long retval = 0;
PANIC("Unknown syscall: %d(%x, %x, %x, %x, %x)\n", num, a1, a2, a3, a4, a5);
return retval;
}
extern long syscall6(long num, long a1, long a2, long a3, long a4, long a5, long a6)
{
long retval = 0;
PANIC("Unknown syscall: %d(%x, %x, %x, %x, %x, %x)\n", num, a1, a2, a3, a4, a5, a6);
return retval;
}

View File

@@ -0,0 +1,47 @@
#define __SYSCALL_LL_E(x) (x)
#define __SYSCALL_LL_O(x) (x)
extern long syscall0(long);
extern long syscall1(long, long);
extern long syscall2(long, long, long);
extern long syscall3(long, long, long, long);
extern long syscall4(long, long, long, long, long);
extern long syscall5(long, long, long, long, long, long);
extern long syscall6(long, long, long, long, long, long, long);
static __inline long __syscall0(long n)
{
return syscall0(n);
}
static __inline long __syscall1(long n, long a1)
{
return syscall1(n, a1);
}
static __inline long __syscall2(long n, long a1, long a2)
{
return syscall2(n, a1, a2);
}
static __inline long __syscall3(long n, long a1, long a2, long a3)
{
return syscall3(n, a1, a2, a3);
}
static __inline long __syscall4(long n, long a1, long a2, long a3, long a4)
{
return syscall4(n, a1, a2, a3, a4);
}
static __inline long __syscall5(long n, long a1, long a2, long a3, long a4, long a5)
{
return syscall5(n, a1, a2, a3, a4, a5);
}
static __inline long __syscall6(long n, long a1, long a2, long a3, long a4, long a5, long a6)
{
return syscall6(n, a1, a2, a3, a4, a5, a6);
}
#define VDSO_USEFUL
#define VDSO_CGT_SYM "__vdso_clock_gettime"
#define VDSO_CGT_VER "LINUX_2.6"
#define VDSO_GETCPU_SYM "__vdso_getcpu"
#define VDSO_GETCPU_VER "LINUX_2.6"
#define IPC_64 0