IMAGE := kernel.elf CROSS_COMPILE = aarch64-linux-gnu- CC = $(CROSS_COMPILE)gcc LD = $(CROSS_COMPILE)ld OBJDUMP = $(CROSS_COMPILE)objdump CFLAGS = -Wall -fno-common -O0 -g \ -nostdlib -nostartfiles -ffreestanding \ -march=armv8-a OBJS = hello.o all: $(IMAGE) boot.o: boot.S $(CC) boot.S -c -o boot.o $(IMAGE): kernel.ld boot.o $(OBJS) $(LD) boot.o $(OBJS) -T kernel.ld -o $(IMAGE) $(OBJDUMP) -d kernel.elf > kernel.list $(OBJDUMP) -t kernel.elf | sed '1,/SYMBOL TABLE/d; s/ .* / /; /^$$/d' > kernel.sym qemu: $(IMAGE) @qemu-system-aarch64 -M ? | grep virt >/dev/null || exit @echo "Press Ctrl-A and then X to exit QEMU" @echo qemu-system-aarch64 -machine virt -cpu cortex-a57 \ -smp 4 -m 4096 \ -nographic -serial mon:stdio \ -kernel $(IMAGE) clean: rm -f $(IMAGE) *.o *.list *.sym .PHONY: all qemu clean