:: commit 5c36fac374775ccf0d6b525b205cf2c4975c71fe

mintsuki <mintsuki@protonmail.com> — 2020-03-24 22:39

parents: 225a7c238d

Add testing facilities

diff --git a/Makefile b/Makefile
index 3082b2e7..a6e5be1f 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,18 @@
-.PHONY: all clean
+.PHONY: all clean test
 
 all:
 	$(MAKE) -C src all
 
 clean:
 	$(MAKE) -C src clean
+
+test:
+	$(MAKE) -C test
+	dd if=/dev/zero bs=1M count=0 seek=64 of=test.img
+	parted -s test.img mklabel msdos
+	parted -s test.img mkpart primary 1 100%
+	echfs-utils -m -p0 test.img quick-format 32768
+	echfs-utils -m -p0 test.img import test/test.elf test.elf
+	echfs-utils -m -p0 test.img import test/qloader2.cfg qloader2.cfg
+	./qloader2-install test.img
+	qemu-system-x86_64 -hda test.img
diff --git a/test/.gitignore b/test/.gitignore
new file mode 100644
index 00000000..4ce83ce5
--- /dev/null
+++ b/test/.gitignore
@@ -0,0 +1,2 @@
+test.o
+test.elf
diff --git a/test/Makefile b/test/Makefile
new file mode 100644
index 00000000..e822929d
--- /dev/null
+++ b/test/Makefile
@@ -0,0 +1,3 @@
+test.elf:
+	nasm test.asm -felf32 -o test.o
+	../toolchain/bin/i386-elf-ld test.o -nostdlib -T ./linker.ld -o test.elf
diff --git a/test/linker.ld b/test/linker.ld
new file mode 100644
index 00000000..92cdcf66
--- /dev/null
+++ b/test/linker.ld
@@ -0,0 +1,22 @@
+ENTRY(_start)
+
+SECTIONS {
+    . = 0x100000;
+
+    .text : {
+        *(.text*)
+    }
+
+    .rodata : {
+        *(.rodata*)
+    }
+
+    .data : {
+        *(.data*)
+    }
+
+    .bss : {
+        *(.bss*)
+        *(COMMON)
+    }
+}
diff --git a/test/qloader2.cfg b/test/qloader2.cfg
new file mode 100644
index 00000000..5d729370
--- /dev/null
+++ b/test/qloader2.cfg
@@ -0,0 +1,4 @@
+KERNEL_DRIVE=128
+KERNEL_PARTITION=0
+KERNEL_PATH=test.elf
+KERNEL_CMDLINE=none
diff --git a/test/test.asm b/test/test.asm
new file mode 100644
index 00000000..037d08b2
--- /dev/null
+++ b/test/test.asm
@@ -0,0 +1,10 @@
+; This is a compliant "kernel" meant for testing purposes.
+
+; Header
+
+
+section .text
+
+; Entry point
+_start:
+
tab: 248 wrap: offon