:: commit e506ac7fb6fc23bfa2e5d6f2c81f8e5b4d24e36a

mintsuki <mintsuki@protonmail.com> — 2022-09-05 00:17

parents: fa532260fe

misc: Better integration of aarch64 port and test mechanism

diff --git a/GNUmakefile.in b/GNUmakefile.in
index 5021b512..4f3aa33b 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -512,13 +512,13 @@ pxe-test:
 	sudo cp -rv test/* test_image/boot/
 	qemu-system-x86_64  -smp 4  -netdev user,id=n0,tftp=./test_image,bootfile=boot/limine-pxe.bin -device rtl8139,netdev=n0,mac=00:00:00:11:11:11 -debugcon stdio
 
-.PHONY: uefi-test
-uefi-test:
+.PHONY: uefi-x86-64-test
+uefi-x86-64-test:
 	$(MAKE) ovmf-x64
 	$(MAKE) test-clean
 	$(MAKE) test.hdd
 	$(MAKE) limine-uefi-x86-64
-	$(MAKE) -C test
+	$(MAKE) -C test CROSS_FILE='$(call SHESCAPE,$(BUILDDIR))/cross-files/x86_64-toolchain.mk'
 	rm -rf test_image/
 	mkdir test_image
 	sudo losetup -Pf --show test.hdd > loopback_dev
@@ -542,7 +542,7 @@ uefi-ia32-test:
 	$(MAKE) test-clean
 	$(MAKE) test.hdd
 	$(MAKE) limine-uefi-ia32
-	$(MAKE) -C test
+	$(MAKE) -C test CROSS_FILE='$(call SHESCAPE,$(BUILDDIR))/cross-files/x86_64-toolchain.mk'
 	rm -rf test_image/
 	mkdir test_image
 	sudo losetup -Pf --show test.hdd > loopback_dev
diff --git a/test/GNUmakefile b/test/GNUmakefile
index 03918563..a413cbaa 100644
--- a/test/GNUmakefile
+++ b/test/GNUmakefile
@@ -1,11 +1,13 @@
-CC              = cc
-CFLAGS          = -O2 -g -Wall -Wextra -Wpedantic
-LDFLAGS         =
-LD              = ld
-QEMU            = qemu-system-x86_64
-QEMUFLAGS       = -m 1G -enable-kvm -cpu host
+include $(CROSS_FILE)
 
-INTERNALLDFLAGS :=         \
+override CC := $(CROSS_CC)
+CFLAGS = -O2 -g -Wall -Wextra
+LDFLAGS =
+override LD := $(CROSS_LD)
+override QEMU := qemu-system-x86_64
+QEMUFLAGS = -m 1G -enable-kvm -cpu host
+
+override INTERNALLDFLAGS :=         \
 	-Tlinker.ld            \
 	-nostdlib              \
 	-zmax-page-size=0x1000 \
@@ -14,52 +16,54 @@ INTERNALLDFLAGS :=         \
 	--no-dynamic-linker    \
 	-ztext
 
-INTERNAL_LD_FLAGS_MULTIBOOT2 := \
+override INTERNAL_LD_FLAGS_MULTIBOOT2 := \
+	-m elf_i386                 \
 	-Tmultiboot2.ld             \
 	-nostdlib                   \
 	-zmax-page-size=0x1000      \
 	-static
 
-INTERNAL_LD_FLAGS_MULTIBOOT1 := \
+override INTERNAL_LD_FLAGS_MULTIBOOT1 := \
+	-m elf_i386                 \
 	-Tmultiboot.ld              \
 	-nostdlib                   \
 	-zmax-page-size=0x1000      \
 	-static
 
-INTERNALCFLAGS  :=       \
-	-I../stivale         \
-	-I.                  \
-	-I..                 \
+override INTERNALCFLAGS  :=       \
 	-std=c11             \
-	-g                   \
 	-ffreestanding       \
 	-fno-stack-protector \
+	-fno-stack-check     \
+	-fno-lto             \
 	-fpie                \
-	-mabi=sysv           \
-	-mno-80387           \
-	-mno-mmx             \
-	-mno-sse             \
-	-mno-sse2            \
-	-mno-red-zone
-
-INTERNALCFLAGS_MB  :=    \
+	-mgeneral-regs-only  \
+	-mno-red-zone        \
+	-Istivale            \
 	-I.                  \
-	-I..                 \
-	-I../common/protos   \
+	-I..
+
+override INTERNALCFLAGS_MB  :=    \
 	-std=c11             \
-	-m32                 \
-	-g                   \
 	-ffreestanding       \
 	-fno-stack-protector \
+	-fno-stack-check     \
+	-fno-lto             \
 	-fno-pie             \
 	-fno-pic             \
+	-m32                 \
+	-march=i686          \
 	-mabi=sysv           \
 	-mno-80387           \
-	-mno-mmx             \
-	-mno-sse             \
-	-mno-sse2
+	-I.                  \
+	-I..                 \
+	-I../common/protos
 
+ifneq ($(findstring 86,$(CROSS_CC)),)
 all: test.elf multiboot2.elf multiboot.elf
+else
+all: test.elf
+endif
 
 test.elf: stivale.o stivale2.o limine.o e9print.o memory.o
 	$(LD) $^ $(LDFLAGS) $(INTERNALLDFLAGS) -o $@
diff --git a/test/e9print.c b/test/e9print.c
index fc0ecd13..994d799a 100644
--- a/test/e9print.c
+++ b/test/e9print.c
@@ -8,7 +8,9 @@ static const char CONVERSION_TABLE[] = "0123456789abcdef";
 void e9_putc(char c) {
     if (stivale2_print != NULL)
         stivale2_print(&c, 1);
+#if defined (__x86_64__) || defined (__i386__)
     __asm__ __volatile__ ("outb %0, %1" :: "a" (c), "Nd" (0xe9) : "memory");
+#endif
 }
 
 void e9_print(const char *msg) {
diff --git a/test/multiboot.ld b/test/multiboot.ld
index 7bcdc517..c602227b 100644
--- a/test/multiboot.ld
+++ b/test/multiboot.ld
@@ -1,7 +1,7 @@
 ENTRY(_start)
 
 SECTIONS {
-    . = 0x10000;
+    . = 1M;
 
     .boot :
     {
@@ -18,7 +18,7 @@ SECTIONS {
     . = ALIGN(4K);
     .rodata :
     {
-        *(.rodata.*)
+        *(.rodata .rodata.*)
     }
 
     . = ALIGN(4K);
diff --git a/test/multiboot2.ld b/test/multiboot2.ld
index 22de8775..c602227b 100644
--- a/test/multiboot2.ld
+++ b/test/multiboot2.ld
@@ -18,7 +18,7 @@ SECTIONS {
     . = ALIGN(4K);
     .rodata :
     {
-        *(.rodata.*)
+        *(.rodata .rodata.*)
     }
 
     . = ALIGN(4K);
tab: 248 wrap: offon