diff --git a/Makefile b/Makefile index e02517b..4e37392 100644 --- a/Makefile +++ b/Makefile @@ -15,14 +15,16 @@ SUBDIRS := core drivers tests arch/$(ARCH) INCDIRS += $(foreach dir, $(SUBDIRS), -I$(dir)) CPPFLAGS += $(INCDIRS) -asmsrc=$(wildcard arch/$(ARCH)/boot/*.asm) +asmsrc= asmobj=$(asmsrc:%.asm=%.o) +gasmsrc=$(wildcard arch/$(ARCH)/*.S arch/$(ARCH)/boot/*.S) +gasmobj=$(gasmsrc:%.S=%.o) csrc=$(shell find $(SUBDIRS) -type f -name "*.c")# $(wildcard *.c) -cobj=$(csrc:%.c=%.o) arch/$(ARCH)/cpu_context_switch.o arch/$(ARCH)/irq_pit.o arch/$(ARCH)/irq_wrappers.o arch/$(ARCH)/exception_wrappers.o arch/$(ARCH)/syscall_wrappers.o -deps = $(csrc:%.c=%.d) +cobj=$(csrc:%.c=%.o) +deps=$(csrc:%.c=%.d) $(gasmsrc:%.S=%.d) -kernel kernel.sym &: $(asmobj) $(cobj) linker.ld - $(CC) -m32 -ffreestanding -nostdlib $(cobj) $(asmobj) -o kernel -T linker.ld -lgcc +kernel kernel.sym &: $(asmobj) $(gasmobj) $(cobj) linker.ld + $(CC) -m32 -ffreestanding -nostdlib $(cobj) $(gasmobj) $(asmobj) -o kernel -T linker.ld -lgcc objcopy --only-keep-debug kernel kernel.sym objcopy --strip-debug kernel @@ -39,7 +41,7 @@ disk.img: $(AS) $(ASFLAGS) -o $@ $< %.o: %.S - $(CC) $(INCDIRS) -c "$<" $(CFLAGS) -o "$@" + $(CC) $(CFLAGS) $(CPPFLAGS) -c "$<" -o "$@" test: CFLAGS += -DRUN_TEST @@ -61,7 +63,7 @@ debug_test: CFLAGS += $(DEBUG_FLAGS) -DRUN_TEST debug_test: debug clean: - $(RM) kernel $(asmobj) $(cobj) $(deps) fd.iso kernel.sym + $(RM) kernel $(asmobj) $(gasmobj) $(cobj) $(deps) fd.iso kernel.sym $(RM) -r isodir ifneq ($(MAKECMDGOALS),clean) diff --git a/arch/x86/boot/boot.s b/arch/x86/boot/boot.S similarity index 97% rename from arch/x86/boot/boot.s rename to arch/x86/boot/boot.S index 27f32f6..4a50200 100644 --- a/arch/x86/boot/boot.s +++ b/arch/x86/boot/boot.S @@ -31,7 +31,7 @@ stack is properly aligned and failure to align the stack will result in undefined behavior. */ .section .bss -.align 16 +.align 4096 stack_bottom: .skip 16384 # 16 KiB stack_top: @@ -117,3 +117,7 @@ Set the size of the _start symbol to the current location '.' minus its start. This is useful when debugging or when you implement call tracing. */ .size _start, . - _start +.global _stack_bottom +_stack_bottom: stack_bottom +.global _stack_stop +_stack_stop: stack_top