sysroot and cross-compiler based build WIP
This commit is contained in:
@@ -33,5 +33,18 @@ SECTIONS
|
||||
__bss_end = .;
|
||||
}
|
||||
|
||||
.eh_frame : {
|
||||
__eh_frame_start = .;
|
||||
KEEP(*(.eh_frame))
|
||||
__eh_frame_end = .;
|
||||
}
|
||||
|
||||
.eh_frame_hdr : {
|
||||
KEEP(*(.eh_frame_hdr))
|
||||
}
|
||||
|
||||
__eh_frame_hdr_start = SIZEOF(.eh_frame_hdr) > 0 ? ADDR(.eh_frame_hdr) : 0;
|
||||
__eh_frame_hdr_end = SIZEOF(.eh_frame_hdr) > 0 ? . : 0;
|
||||
|
||||
kernel_end = ALIGN(4096);
|
||||
}
|
||||
|
||||
@@ -18,3 +18,9 @@ __kernel_assert(const char *file, unsigned line, const char *message)
|
||||
__asm__ ( "int $0e7h" );
|
||||
while (1) __asm__ ("hlt");
|
||||
}
|
||||
|
||||
extern "C" [[noreturn]] void
|
||||
__assert_fail(const char *message, const char *file, unsigned int line, const char *function)
|
||||
{
|
||||
__kernel_assert(file, line, message);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
#include "kutil/memory.h"
|
||||
#include "console.h"
|
||||
#include "font.h"
|
||||
#include "memory.h"
|
||||
#include "screen.h"
|
||||
#include "serial.h"
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "ahci/driver.h"
|
||||
#include "kutil/assert.h"
|
||||
#include "kutil/memory.h"
|
||||
#include "acpi_tables.h"
|
||||
@@ -10,7 +9,6 @@
|
||||
#include "device_manager.h"
|
||||
#include "interrupts.h"
|
||||
#include "log.h"
|
||||
#include "memory.h"
|
||||
#include "page_manager.h"
|
||||
|
||||
|
||||
|
||||
@@ -3,17 +3,17 @@ extern g_gdtr
|
||||
|
||||
global idt_write
|
||||
idt_write:
|
||||
lidt [rel g_idtr]
|
||||
lidt [g_idtr]
|
||||
ret
|
||||
|
||||
global idt_load
|
||||
idt_load:
|
||||
sidt [rel g_idtr]
|
||||
sidt [g_idtr]
|
||||
ret
|
||||
|
||||
global gdt_write
|
||||
gdt_write:
|
||||
lgdt [rel g_gdtr]
|
||||
lgdt [g_gdtr]
|
||||
mov ax, si ; second arg is data segment
|
||||
mov ds, ax
|
||||
mov es, ax
|
||||
@@ -30,6 +30,6 @@ gdt_write:
|
||||
|
||||
global gdt_load
|
||||
gdt_load:
|
||||
sgdt [rel g_gdtr]
|
||||
sgdt [g_gdtr]
|
||||
ret
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
#include "io.h"
|
||||
#include "kernel_data.h"
|
||||
#include "log.h"
|
||||
#include "memory.h"
|
||||
#include "page_manager.h"
|
||||
#include "scheduler.h"
|
||||
#include "screen.h"
|
||||
|
||||
12
src/libraries/elf/SConscript
Normal file
12
src/libraries/elf/SConscript
Normal file
@@ -0,0 +1,12 @@
|
||||
Import('target')
|
||||
|
||||
env = target.Clone()
|
||||
env.Append(
|
||||
CPPPATH = ['.', 'include', '#src/libraries/kutil/include'],
|
||||
)
|
||||
|
||||
lib = env.Library('elf', Glob('*.cpp'))
|
||||
|
||||
Return('lib')
|
||||
|
||||
# vim: ft=python et
|
||||
12
src/libraries/initrd/SConscript
Normal file
12
src/libraries/initrd/SConscript
Normal file
@@ -0,0 +1,12 @@
|
||||
Import('target')
|
||||
|
||||
env = target.Clone()
|
||||
env.Append(
|
||||
CPPPATH = ['.', 'include', '#src/libraries/kutil/include'],
|
||||
)
|
||||
|
||||
lib = env.Library('initrd', Glob('*.cpp'))
|
||||
|
||||
Return('lib')
|
||||
|
||||
# vim: ft=python et
|
||||
12
src/libraries/kutil/SConscript
Normal file
12
src/libraries/kutil/SConscript
Normal file
@@ -0,0 +1,12 @@
|
||||
Import('target')
|
||||
|
||||
env = target.Clone()
|
||||
env.Append(
|
||||
CPPPATH = ['.', 'include'],
|
||||
)
|
||||
|
||||
lib = env.Library('kutil', Glob('*.cpp'))
|
||||
|
||||
Return('lib')
|
||||
|
||||
# vim: ft=python et
|
||||
@@ -1,12 +1,15 @@
|
||||
#include "kutil/memory.h"
|
||||
#include "kutil/memory_manager.h"
|
||||
#include "kutil/type_macros.h"
|
||||
|
||||
__weak void * operator new (size_t, void *p) noexcept { return p; }
|
||||
__weak void * operator new (size_t n) { return kutil::malloc(n); }
|
||||
__weak void * operator new[] (size_t n) { return kutil::malloc(n); }
|
||||
__weak void operator delete (void *p) noexcept { return kutil::free(p); }
|
||||
__weak void operator delete[] (void *p) noexcept { return kutil::free(p); }
|
||||
namespace std {
|
||||
enum class __attribute__ ((__type_visibility("default"))) align_val_t : size_t { };
|
||||
}
|
||||
|
||||
void * operator new(size_t n, std::align_val_t) { return kutil::malloc(n); }
|
||||
void * operator new (size_t n) { return kutil::malloc(n); }
|
||||
void * operator new[] (size_t n) { return kutil::malloc(n); }
|
||||
void operator delete (void *p) noexcept { return kutil::free(p); }
|
||||
void operator delete[] (void *p) noexcept { return kutil::free(p); }
|
||||
|
||||
namespace kutil {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user