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);
