Files
mango/arch/x86_64/extra.mk

30 lines
1.1 KiB
Makefile

QEMU := qemu-system-x86_64
QEMU_FLAGS := -m 64M -smp 4
ARCH_TEMP_FILES := $(BUILDDIR)/$(KERNEL_EXEC).elf32
# qemu refuses to boot ELF64 binaries. this creates a patched version of the kernel
# binary to trick qemu into thinking its an ELF32.
# this has no effect on the kernel itself; the x86_64 kernel's
# entry point is 32-bit machine code.
$(BUILDDIR)/$(KERNEL_EXEC).elf32: $(BUILDDIR)/$(KERNEL_EXEC)
@cp $(BUILDDIR)/$(KERNEL_EXEC) $(BUILDDIR)/$(KERNEL_EXEC).elf32
@printf '\x03\x00' | dd of=$(BUILDDIR)/$(KERNEL_EXEC).elf32 bs=1 seek=18 count=2 conv=notrunc 2> /dev/null
run: $(BUILDDIR)/$(KERNEL_EXEC) $(BUILDDIR)/$(KERNEL_EXEC).elf32
@echo " \033[1;93mBOOT\033[0m $<"
@$(QEMU) -kernel $(BUILDDIR)/$(KERNEL_EXEC).elf32
debug: $(BUILDDIR)/$(KERNEL_EXEC) $(BUILDDIR)/$(KERNEL_EXEC).elf32
@echo " \033[1;93mDEBUG\033[0m $<"
@./tools/kernel-debug/debug_session.sh \
tools/kernel-debug/gdb_session_init \
tools/kernel-debug/lldb_session_init \
$(QEMU) \
-kernel $(BUILDDIR)/$(KERNEL_EXEC).elf32 -S -s \
-curses -serial file:socks.log $(QEMU_FLAGS)