Merge branch 'master' of ssh://git.dehosting.club:3022/quintenk/kornos
This commit is contained in:
commit
5383bf80d3
2
Makefile
2
Makefile
|
|
@ -25,7 +25,7 @@ bochs: $(KERNEL_HDD) ext/bochsrc
|
|||
rm bochsout.txt
|
||||
|
||||
gdb:
|
||||
QEMUFLAGS="-s -S" $(MAKE) run & gdb -x ext/gdbinit
|
||||
QEMUFLAGS="-s -S" $(MAKE) run & (sleep 1; gdb -x ext/gdbinit)
|
||||
|
||||
ext/limine/limine-install:
|
||||
$(MAKE) -C ext/limine/ limine-install
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ LDSCRIPT = make/$(ARCH)/linker.ld
|
|||
|
||||
CFLAGS ?= -Og -g
|
||||
CFLAGS := $(CFLAGS) $(ARCH_CFLAGS) \
|
||||
-Wall -Wextra -pedantic -Wno-language-extension-token -std=gnu11 -I../ext -Isrc -fPIE
|
||||
-Wall -Wextra -pedantic -std=gnu11 -I../ext -Isrc -fPIE
|
||||
LDFLAGS := $(LDFLAGS) -T $(LDSCRIPT)
|
||||
|
||||
|
||||
|
|
@ -31,13 +31,11 @@ $(ARCHES):
|
|||
|
||||
bin/$(TARGET)-$(ARCH): $(OBJ)
|
||||
@mkdir -p $(@D)
|
||||
@echo Linking $@
|
||||
$(LD) $(LDFLAGS) $(OBJ) -o $@
|
||||
|
||||
obj/$(ARCH)/%.c.o: src/%.c $(HFILES)
|
||||
obj/$(ARCH)/%.c.o: src/%.c $(HFILES) $(ARCHHEADERS)
|
||||
@mkdir -p $(@D)
|
||||
@echo $(CC) $<
|
||||
@$(CC) $(CFLAGS) -c $< -o $@
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
clean:
|
||||
rm -rf bin obj zig-cache
|
||||
|
|
|
|||
|
|
@ -1,9 +1,12 @@
|
|||
ARCHFILES := $(shell find src/arch/x86 -type f -name '*.c' -print) \
|
||||
$(shell find src/arch/x86 -type f -name '*.nasm' -print) \
|
||||
$(shell find src/arch/$(ARCH) -type f -name '*.nasm' -print)
|
||||
$(shell find src/arch/x86 -type f -name '*.nasm' -print) \
|
||||
$(shell find src/arch/$(ARCH) -type f -name '*.nasm' -print)
|
||||
ARCHHEADERS := $(shell find src/arch/x86 -type f -name '*.h' -print) \
|
||||
$(shell find src/arch/x86 -type f -name '*.nasminc' -print) \
|
||||
$(shell find src/arch/$(ARCH) -type f -name '*.nasminc' -print)
|
||||
ARCH_CFLAGS := -masm=intel
|
||||
NASMFLAGS := -Isrc
|
||||
|
||||
obj/$(ARCH)/%.nasm.o: src/%.nasm
|
||||
obj/$(ARCH)/%.nasm.o: src/%.nasm $(ARCHHEADERS)
|
||||
@mkdir -p $(@D)
|
||||
@echo nasm $<
|
||||
@$(NASM) $(NASMFLAGS) $< -o $@
|
||||
$(NASM) $(NASMFLAGS) $< -o $@
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
void breakpoint() {
|
||||
asm volatile ("xchgw %bx, %bx");
|
||||
__asm__ volatile ("xchgw %bx, %bx");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
|
||||
#include <print/print.h>
|
||||
void halt_catch_fire() {
|
||||
asm volatile ("cli");
|
||||
__asm__ volatile ("cli");
|
||||
while(1) {
|
||||
asm volatile ("hlt");
|
||||
__asm__ volatile ("hlt");
|
||||
puts("INTERRUPTED!");
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@
|
|||
static uint8_t stack[4096] = {0};
|
||||
void stivale2_main(struct stivale2_struct *info);
|
||||
|
||||
extern void asmpanic();
|
||||
|
||||
struct stivale2_header_tag_smp smp_request = {
|
||||
.tag = {
|
||||
.identifier = STIVALE2_HEADER_TAG_SMP_ID,
|
||||
|
|
@ -41,8 +43,9 @@ void stivale2_main(struct stivale2_struct *info) {
|
|||
);
|
||||
printf("PAGE TABLE AT: %x\n", cr3);
|
||||
|
||||
loadgdt();
|
||||
print_gdt();
|
||||
|
||||
char *argv[3] = {"stivale2", info->bootloader_brand, info->bootloader_version};
|
||||
kmain(3, argv);
|
||||
asmpanic();
|
||||
kmain();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,15 @@
|
|||
section .rodata
|
||||
align 8
|
||||
gdt64:
|
||||
dq 0
|
||||
.code: equ $-gdt64
|
||||
.codesys: equ $-gdt64
|
||||
dq (1<<44) | (1<<47) | (1<<41) | (1<<43) | (1<<53)
|
||||
.data: equ $ - gdt64
|
||||
.datasys: equ $-gdt64
|
||||
dq (1<<44) | (1<<47) | (1<<41)
|
||||
.codeusr: equ $-gdt64
|
||||
dq (1<<44) | (1<<47) | (1<<41) | (1<<43) | (1<<53) | (3<<45)
|
||||
.datausr: equ $-gdt64
|
||||
dq (1<<44) | (1<<47) | (1<<41) | (3<<45)
|
||||
.pointer:
|
||||
dw .pointer - gdt64 - 1
|
||||
dq gdt64
|
||||
|
|
@ -13,4 +18,18 @@ section .text
|
|||
global loadgdt
|
||||
loadgdt:
|
||||
lgdt [gdt64.pointer]
|
||||
; now what I tried unsuccessfully:
|
||||
|
||||
mov rax, gdt64.codesys;
|
||||
push rax
|
||||
mov rax, loadgdtdone
|
||||
push rax ; function to execute next
|
||||
retfq ; far return (pops address and code segment)
|
||||
loadgdtdone:
|
||||
mov ax, gdt64.datasys
|
||||
mov ss, ax
|
||||
mov ds, ax
|
||||
mov es, ax
|
||||
mov fs, ax
|
||||
mov gs, ax
|
||||
ret
|
||||
|
|
@ -1,2 +1,8 @@
|
|||
%include "arch/x86_64/panic.nasminc"
|
||||
|
||||
global archval
|
||||
archval db "x86_64-nasm", 0
|
||||
|
||||
global asmpanic
|
||||
asmpanic:
|
||||
PANIC "asmpanic"
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
%ifndef PANIC_NASM_MAC
|
||||
%define PANIC_NASM_MAC
|
||||
|
||||
extern panic
|
||||
|
||||
%macro PANIC 1
|
||||
[SECTION .data]
|
||||
panicval db %1, 0
|
||||
filename db __FILE__, 0
|
||||
__SECT__
|
||||
mov rdi, panicval
|
||||
mov rsi, filename
|
||||
mov rdx, __LINE__
|
||||
call panic
|
||||
%endmacro
|
||||
%endif
|
||||
|
||||
Loading…
Reference in New Issue