|
@@ -54,6 +54,8 @@ endif
|
|
|
|
|
|
|
|
ifeq ($(ARCH),riscv64)
|
|
ifeq ($(ARCH),riscv64)
|
|
|
|
|
|
|
|
|
|
+PLATFORM ?= virt
|
|
|
|
|
+
|
|
|
BINARY_DIR_BASE := build/riscv64gc-unknown-none-elf
|
|
BINARY_DIR_BASE := build/riscv64gc-unknown-none-elf
|
|
|
BINARY_DIR := $(BINARY_DIR_BASE)/$(MODE)
|
|
BINARY_DIR := $(BINARY_DIR_BASE)/$(MODE)
|
|
|
|
|
|
|
@@ -61,7 +63,7 @@ QEMU_ARGS += \
|
|
|
-machine virt -kernel $(BINARY_DIR)/eonix_kernel \
|
|
-machine virt -kernel $(BINARY_DIR)/eonix_kernel \
|
|
|
-device virtio-blk-device,drive=disk0,bus=virtio-mmio-bus.0 \
|
|
-device virtio-blk-device,drive=disk0,bus=virtio-mmio-bus.0 \
|
|
|
-device virtio-net-device,netdev=mynet0 \
|
|
-device virtio-net-device,netdev=mynet0 \
|
|
|
- -drive id=disk0,file=build/boot-riscv64.img,format=raw,if=none \
|
|
|
|
|
|
|
+ -drive id=disk0,file=build/boot-riscv64-virt.img,format=raw,if=none \
|
|
|
-netdev user,id=mynet0 \
|
|
-netdev user,id=mynet0 \
|
|
|
-rtc base=utc
|
|
-rtc base=utc
|
|
|
|
|
|
|
@@ -73,11 +75,10 @@ endif
|
|
|
|
|
|
|
|
CARGO_FLAGS += --target riscv64gc-unknown-none-elf
|
|
CARGO_FLAGS += --target riscv64gc-unknown-none-elf
|
|
|
|
|
|
|
|
-.PHONY: build
|
|
|
|
|
-build: $(BINARY_DIR)/eonix_kernel build/boot-riscv64.img
|
|
|
|
|
-
|
|
|
|
|
else ifeq ($(ARCH),loongarch64)
|
|
else ifeq ($(ARCH),loongarch64)
|
|
|
|
|
|
|
|
|
|
+PLATFORM ?= virt
|
|
|
|
|
+
|
|
|
BINARY_DIR_BASE := build/loongarch64-unknown-none-softfloat
|
|
BINARY_DIR_BASE := build/loongarch64-unknown-none-softfloat
|
|
|
BINARY_DIR := $(BINARY_DIR_BASE)/$(MODE)
|
|
BINARY_DIR := $(BINARY_DIR_BASE)/$(MODE)
|
|
|
|
|
|
|
@@ -85,7 +86,7 @@ QEMU_ARGS += \
|
|
|
-machine virt -kernel $(BINARY_DIR)/eonix_kernel -m 1G \
|
|
-machine virt -kernel $(BINARY_DIR)/eonix_kernel -m 1G \
|
|
|
-device virtio-blk-pci,drive=disk0 \
|
|
-device virtio-blk-pci,drive=disk0 \
|
|
|
-device virtio-net-pci,netdev=mynet0 \
|
|
-device virtio-net-pci,netdev=mynet0 \
|
|
|
- -drive id=disk0,file=build/boot-loongarch64.img,format=raw,if=none \
|
|
|
|
|
|
|
+ -drive id=disk0,file=build/boot-loongarch64-virt.img,format=raw,if=none \
|
|
|
-netdev user,id=mynet0,hostfwd=tcp::5555-:5555,hostfwd=udp::5555-:5555 \
|
|
-netdev user,id=mynet0,hostfwd=tcp::5555-:5555,hostfwd=udp::5555-:5555 \
|
|
|
-rtc base=utc
|
|
-rtc base=utc
|
|
|
|
|
|
|
@@ -97,11 +98,10 @@ endif
|
|
|
|
|
|
|
|
CARGO_FLAGS += --target loongarch64-unknown-none-softfloat
|
|
CARGO_FLAGS += --target loongarch64-unknown-none-softfloat
|
|
|
|
|
|
|
|
-.PHONY: build
|
|
|
|
|
-build: $(BINARY_DIR)/eonix_kernel build/boot-loongarch64.img
|
|
|
|
|
-
|
|
|
|
|
else ifeq ($(ARCH),x86_64)
|
|
else ifeq ($(ARCH),x86_64)
|
|
|
|
|
|
|
|
|
|
+PLATFORM ?= acpi_compat
|
|
|
|
|
+
|
|
|
BINARY_DIR_BASE := build/x86_64-unknown-none
|
|
BINARY_DIR_BASE := build/x86_64-unknown-none
|
|
|
BINARY_DIR := $(BINARY_DIR_BASE)/$(MODE)
|
|
BINARY_DIR := $(BINARY_DIR_BASE)/$(MODE)
|
|
|
|
|
|
|
@@ -110,7 +110,7 @@ QEMU_ARGS += \
|
|
|
-device ahci,id=ahci \
|
|
-device ahci,id=ahci \
|
|
|
-device ide-hd,drive=disk0,bus=ahci.0 \
|
|
-device ide-hd,drive=disk0,bus=ahci.0 \
|
|
|
-device e1000e,netdev=mynet0 \
|
|
-device e1000e,netdev=mynet0 \
|
|
|
- -drive id=disk0,file=build/boot-x86_64.img,format=raw,if=none \
|
|
|
|
|
|
|
+ -drive id=disk0,file=build/boot-x86_64-acpi_compat.img,format=raw,if=none \
|
|
|
-netdev user,id=mynet0
|
|
-netdev user,id=mynet0
|
|
|
|
|
|
|
|
ifneq ($(IMG),)
|
|
ifneq ($(IMG),)
|
|
@@ -121,11 +121,13 @@ endif
|
|
|
|
|
|
|
|
CARGO_FLAGS += --target x86_64-unknown-none.json
|
|
CARGO_FLAGS += --target x86_64-unknown-none.json
|
|
|
|
|
|
|
|
-.PHONY: build
|
|
|
|
|
-build: $(BINARY_DIR)/eonix_kernel build/boot-x86_64.img
|
|
|
|
|
-
|
|
|
|
|
endif
|
|
endif
|
|
|
|
|
|
|
|
|
|
+TARGET := $(ARCH)-$(PLATFORM)
|
|
|
|
|
+
|
|
|
|
|
+.PHONY: build
|
|
|
|
|
+build: $(BINARY_DIR)/eonix_kernel build/boot-$(TARGET).img
|
|
|
|
|
+
|
|
|
.PHONY: run
|
|
.PHONY: run
|
|
|
run: build build/kernel.sym
|
|
run: build build/kernel.sym
|
|
|
$(QEMU) $(QEMU_ARGS) -display none -serial mon:stdio
|
|
$(QEMU) $(QEMU_ARGS) -display none -serial mon:stdio
|
|
@@ -174,7 +176,7 @@ build/kernel.sym: $(BINARY_DIR)/eonix_kernel
|
|
|
CARGO_TARGET_DIR=build cargo objcopy -q $(CARGO_FLAGS) -- --only-keep-debug build/kernel.sym
|
|
CARGO_TARGET_DIR=build cargo objcopy -q $(CARGO_FLAGS) -- --only-keep-debug build/kernel.sym
|
|
|
|
|
|
|
|
build/fs-%.img: user-programs/init_script_%.sh script/build-img/build-img $(USER_PROGRAMS)
|
|
build/fs-%.img: user-programs/init_script_%.sh script/build-img/build-img $(USER_PROGRAMS)
|
|
|
- script/build-img/build-img -a $* -o $@
|
|
|
|
|
|
|
+ script/build-img/build-img -t $* -o $@
|
|
|
|
|
|
|
|
build/mbr.bin: $(BINARY_DIR)/eonix_kernel
|
|
build/mbr.bin: $(BINARY_DIR)/eonix_kernel
|
|
|
CARGO_TARGET_DIR=build cargo objcopy -q $(CARGO_FLAGS) -- -O binary -j .mbr build/mbr.bin
|
|
CARGO_TARGET_DIR=build cargo objcopy -q $(CARGO_FLAGS) -- -O binary -j .mbr build/mbr.bin
|
|
@@ -186,7 +188,7 @@ build/kernel.bin: $(BINARY_DIR)/eonix_kernel
|
|
|
CARGO_TARGET_DIR=build cargo objcopy -q $(CARGO_FLAGS) -- -O binary --strip-debug \
|
|
CARGO_TARGET_DIR=build cargo objcopy -q $(CARGO_FLAGS) -- -O binary --strip-debug \
|
|
|
-R .mbr -R .stage1 build/kernel.bin
|
|
-R .mbr -R .stage1 build/kernel.bin
|
|
|
|
|
|
|
|
-build/boot-x86_64.img: build/fs-x86_64.img build/mbr.bin build/stage1.bin build/kernel.bin
|
|
|
|
|
|
|
+build/boot-x86_64-acpi_compat.img: build/fs-x86_64-acpi_compat.img build/mbr.bin build/stage1.bin build/kernel.bin
|
|
|
dd if=build/mbr.bin of=$@ bs=512 count=1 conv=notrunc 2> /dev/null
|
|
dd if=build/mbr.bin of=$@ bs=512 count=1 conv=notrunc 2> /dev/null
|
|
|
dd if=build/stage1.bin of=$@ bs=512 seek=1 conv=notrunc 2> /dev/null
|
|
dd if=build/stage1.bin of=$@ bs=512 seek=1 conv=notrunc 2> /dev/null
|
|
|
dd if=build/kernel.bin of=$@ bs=4096 seek=1 conv=notrunc 2> /dev/null
|
|
dd if=build/kernel.bin of=$@ bs=4096 seek=1 conv=notrunc 2> /dev/null
|
|
@@ -195,13 +197,13 @@ build/boot-x86_64.img: build/fs-x86_64.img build/mbr.bin build/stage1.bin build/
|
|
|
sh -c 'echo n; echo; echo; echo 8192; echo; echo a; echo w' \
|
|
sh -c 'echo n; echo; echo; echo 8192; echo; echo a; echo w' \
|
|
|
| $(FDISK) $@ 2> /dev/null > /dev/null
|
|
| $(FDISK) $@ 2> /dev/null > /dev/null
|
|
|
|
|
|
|
|
-build/boot-riscv64.img: build/fs-riscv64.img
|
|
|
|
|
|
|
+build/boot-riscv64-virt.img: build/fs-riscv64-virt.img
|
|
|
dd if=$< of=$@ bs=$(shell expr 4 \* 1024 \* 1024) \
|
|
dd if=$< of=$@ bs=$(shell expr 4 \* 1024 \* 1024) \
|
|
|
seek=1 conv=notrunc 2> /dev/null
|
|
seek=1 conv=notrunc 2> /dev/null
|
|
|
sh -c 'echo n; echo; echo; echo 8192; echo; echo a; echo w' \
|
|
sh -c 'echo n; echo; echo; echo 8192; echo; echo a; echo w' \
|
|
|
| $(FDISK) $@ 2> /dev/null > /dev/null
|
|
| $(FDISK) $@ 2> /dev/null > /dev/null
|
|
|
|
|
|
|
|
-build/boot-loongarch64.img: build/fs-loongarch64.img
|
|
|
|
|
|
|
+build/boot-loongarch64-virt.img: build/fs-loongarch64-virt.img
|
|
|
dd if=$< of=$@ bs=$(shell expr 4 \* 1024 \* 1024) \
|
|
dd if=$< of=$@ bs=$(shell expr 4 \* 1024 \* 1024) \
|
|
|
seek=1 conv=notrunc 2> /dev/null
|
|
seek=1 conv=notrunc 2> /dev/null
|
|
|
sh -c 'echo n; echo; echo; echo 8192; echo; echo a; echo w' \
|
|
sh -c 'echo n; echo; echo; echo 8192; echo; echo a; echo w' \
|