diff --git a/src/Makefile.am b/src/Makefile.am index e13f374..4bf7dd5 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,7 +1,19 @@ -SUBDIRS = interrupts mmgr noinst_PROGRAMS = quark-kernel -quark_kernel_SOURCES = quarkkernel.cpp elf.cpp tty.cpp systeminfo.cpp util.cpp entry.S pio.S multiboot2header.S -quark_kernel_LDADD = -lgcc mmgr/libmmgr.a interrupts/libinterrupts.a -quark_kernel_CPPFLAGS = -ffreestanding -O0 -Wall -fno-exceptions -fno-rtti -ggdb -quark_kernel_LDFLAGS = -T linker.ld -nostdlib -quark_kernel_DEPENDENCIES = linker.ld +quark_kernel_SOURCES = quarkkernel.cpp elf.cpp tty.cpp systeminfo.cpp util.cpp memorymap.cpp buddyallocator.cpp +quark_kernel_LDADD = -lgcc +quark_kernel_CPPFLAGS = -ffreestanding -mgeneral-regs-only -O0 -Wall -fno-exceptions -fno-rtti -ggdb +quark_kernel_LDFLAGS = -nostdlib + +if x86 +quark_kernel_SOURCES += x86/pagetableentry.cpp \ + x86/mmap.cpp \ + x86/interrupts.cpp \ + x86/inthandlers.cpp \ + x86/interruptdescriptor.cpp \ + x86/idt.S \ + x86/entry.S \ + x86/pio.S \ + x86/multiboot2header.S +quark_kernel_LDFLAGS += -T x86/linker.ld +quark_kernel_DEPENDENCIES = x86/linker.ld +endif diff --git a/src/mmgr/buddyallocator.cpp b/src/buddyallocator.cpp similarity index 99% rename from src/mmgr/buddyallocator.cpp rename to src/buddyallocator.cpp index 5102e17..93a33c9 100755 --- a/src/mmgr/buddyallocator.cpp +++ b/src/buddyallocator.cpp @@ -1,5 +1,5 @@ #include "buddyallocator.hpp" -#include "types.hpp" +#include "systypes.hpp" #include "memorymap.hpp" #define roundUp(n, m) ((n % m == 0) ? n : (n + m - (n % m))) diff --git a/src/mmgr/buddyallocator.hpp b/src/buddyallocator.hpp similarity index 100% rename from src/mmgr/buddyallocator.hpp rename to src/buddyallocator.hpp diff --git a/src/interrupts/interrupts.hpp b/src/interrupts.hpp similarity index 100% rename from src/interrupts/interrupts.hpp rename to src/interrupts.hpp diff --git a/src/interrupts/Makefile.am b/src/interrupts/Makefile.am deleted file mode 100644 index c9847b1..0000000 --- a/src/interrupts/Makefile.am +++ /dev/null @@ -1,6 +0,0 @@ -noinst_LIBRARIES = libinterrupts.a -libinterrupts_a_CPPFLAGS = -ffreestanding -mgeneral-regs-only -O0 -Wall -fno-exceptions -fno-rtti -ggdb - -if x86 -libinterrupts_a_SOURCES = x86/interrupts.cpp x86/inthandlers.cpp x86/interruptdescriptor.cpp x86/idt.S -endif \ No newline at end of file diff --git a/src/mmgr/memorymap.cpp b/src/memorymap.cpp similarity index 100% rename from src/mmgr/memorymap.cpp rename to src/memorymap.cpp diff --git a/src/mmgr/memorymap.hpp b/src/memorymap.hpp similarity index 96% rename from src/mmgr/memorymap.hpp rename to src/memorymap.hpp index dcfd50a..853927a 100644 --- a/src/mmgr/memorymap.hpp +++ b/src/memorymap.hpp @@ -4,7 +4,7 @@ #include #include -#include "types.hpp" +#include "systypes.hpp" namespace kernel { diff --git a/src/mmgr/mmap.hpp b/src/mmap.hpp similarity index 100% rename from src/mmgr/mmap.hpp rename to src/mmap.hpp diff --git a/src/mmgr/mmgr.hpp b/src/mmgr.hpp similarity index 100% rename from src/mmgr/mmgr.hpp rename to src/mmgr.hpp diff --git a/src/mmgr/Makefile.am b/src/mmgr/Makefile.am deleted file mode 100644 index b493409..0000000 --- a/src/mmgr/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -noinst_LIBRARIES = libmmgr.a -libmmgr_a_SOURCES = memorymap.cpp buddyallocator.cpp -libmmgr_a_CPPFLAGS = -ffreestanding -O0 -Wall -fno-exceptions -fno-rtti -ggdb - -if x86 -libmmgr_a_SOURCES += x86/pagetableentry.cpp x86/mmap.cpp -endif \ No newline at end of file diff --git a/src/mmgr/types.hpp b/src/mmgr/types.hpp deleted file mode 100644 index 839aa7c..0000000 --- a/src/mmgr/types.hpp +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef MEM_TYPES_H -#define MEM_TYPES_H - -#include -#include - -#if defined __i386__ || __arm__ -typedef uint32_t physaddr_t; -#elif defined __x86_64__ || __aarch64__ -typedef uint64_t physaddr_t; -#else -typedef uint64_t physaddr_t; -#endif - -#endif diff --git a/src/mmgr/pageallocator.hpp b/src/pageallocator.hpp similarity index 97% rename from src/mmgr/pageallocator.hpp rename to src/pageallocator.hpp index 90b9315..48ea87c 100755 --- a/src/mmgr/pageallocator.hpp +++ b/src/pageallocator.hpp @@ -2,7 +2,7 @@ #define __MEMORYALLOCATOR_H_ #include -#include "types.hpp" +#include "systypes.hpp" namespace kernel { diff --git a/src/quarkkernel.cpp b/src/quarkkernel.cpp index 3e14593..069742f 100755 --- a/src/quarkkernel.cpp +++ b/src/quarkkernel.cpp @@ -3,8 +3,8 @@ #include "systypes.hpp" #include "systeminfo.hpp" -#include "mmgr/mmgr.hpp" -#include "pio.hpp" +#include "mmgr.hpp" +#include "x86/pio.hpp" #include "tty.hpp" #include "util.hpp" #include "config.h" diff --git a/src/systypes.hpp b/src/systypes.hpp index be0a7ca..cffce0b 100644 --- a/src/systypes.hpp +++ b/src/systypes.hpp @@ -1,6 +1,15 @@ #ifndef SYSTYPES_H #define SYSTYPES_H -#include "mmgr/types.hpp" +#include +#include + +#if defined __i386__ || __arm__ +typedef uint32_t physaddr_t; +#elif defined __x86_64__ || __aarch64__ +typedef uint64_t physaddr_t; +#else +typedef uint64_t physaddr_t; +#endif #endif diff --git a/src/entry.S b/src/x86/entry.S similarity index 96% rename from src/entry.S rename to src/x86/entry.S index 17e8ec5..55dc9d0 100755 --- a/src/entry.S +++ b/src/x86/entry.S @@ -1,5 +1,5 @@ .section .multiboot -.include "multiboot2header.S" +.include "x86/multiboot2header.S" .section .rodata @@ -17,11 +17,6 @@ gdt: gdt_info: .short 23 .long gdt - -.align 16 -idt_info: -.short idt_end - idt - 1 -.long idt .section .bss @@ -50,11 +45,6 @@ system_info: .global memory_map memory_map: .skip 16 * 16 - -.global idt -idt: -.skip 8 * 256 -idt_end: .section .text .global _start @@ -234,7 +224,6 @@ s_end: # Initialize stack mov $stackTop, %esp lgdt gdt_info - lidt idt_info jmp $8, $.ldcs .ldcs: diff --git a/src/interrupts/x86/idt.S b/src/x86/idt.S similarity index 100% rename from src/interrupts/x86/idt.S rename to src/x86/idt.S diff --git a/src/interrupts/x86/idt.hpp b/src/x86/idt.hpp similarity index 100% rename from src/interrupts/x86/idt.hpp rename to src/x86/idt.hpp diff --git a/src/interrupts/x86/interruptdescriptor.cpp b/src/x86/interruptdescriptor.cpp similarity index 100% rename from src/interrupts/x86/interruptdescriptor.cpp rename to src/x86/interruptdescriptor.cpp diff --git a/src/interrupts/x86/interruptdescriptor.hpp b/src/x86/interruptdescriptor.hpp similarity index 100% rename from src/interrupts/x86/interruptdescriptor.hpp rename to src/x86/interruptdescriptor.hpp diff --git a/src/interrupts/x86/interrupts.cpp b/src/x86/interrupts.cpp similarity index 100% rename from src/interrupts/x86/interrupts.cpp rename to src/x86/interrupts.cpp diff --git a/src/interrupts/x86/inthandlers.cpp b/src/x86/inthandlers.cpp similarity index 100% rename from src/interrupts/x86/inthandlers.cpp rename to src/x86/inthandlers.cpp diff --git a/src/interrupts/x86/inthandlers.hpp b/src/x86/inthandlers.hpp similarity index 100% rename from src/interrupts/x86/inthandlers.hpp rename to src/x86/inthandlers.hpp diff --git a/src/linker.ld b/src/x86/linker.ld similarity index 100% rename from src/linker.ld rename to src/x86/linker.ld diff --git a/src/mmgr/x86/mmap.cpp b/src/x86/mmap.cpp similarity index 100% rename from src/mmgr/x86/mmap.cpp rename to src/x86/mmap.cpp diff --git a/src/multiboot2header.S b/src/x86/multiboot2header.S similarity index 100% rename from src/multiboot2header.S rename to src/x86/multiboot2header.S diff --git a/src/mmgr/x86/pagetableentry.cpp b/src/x86/pagetableentry.cpp similarity index 100% rename from src/mmgr/x86/pagetableentry.cpp rename to src/x86/pagetableentry.cpp diff --git a/src/mmgr/x86/pagetableentry.hpp b/src/x86/pagetableentry.hpp similarity index 97% rename from src/mmgr/x86/pagetableentry.hpp rename to src/x86/pagetableentry.hpp index 3746a0c..aa9fb8d 100755 --- a/src/mmgr/x86/pagetableentry.hpp +++ b/src/x86/pagetableentry.hpp @@ -2,7 +2,7 @@ #define SRC_PAGETABLEENTRY_H_ #include -#include "../types.hpp" +#include "../systypes.hpp" namespace kernel { diff --git a/src/pio.S b/src/x86/pio.S similarity index 100% rename from src/pio.S rename to src/x86/pio.S diff --git a/src/pio.hpp b/src/x86/pio.hpp similarity index 100% rename from src/pio.hpp rename to src/x86/pio.hpp