misc: Better integration of aarch64 port and test mechanism
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index d5867c7f..c9e520b9 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -93,7 +93,6 @@ jobs:
- name: Release
uses: softprops/action-gh-release@v1
with:
- prerelease: true
body_path: rel_notes.txt
files: |
limine-*.tar.*
diff --git a/GNUmakefile.in b/GNUmakefile.in
index 710c2ef0..c8394751 100644
--- a/GNUmakefile.in
+++ b/GNUmakefile.in
@@ -152,7 +152,7 @@ ifneq ($(BUILD_LIMINE_DEPLOY),no)
$(MAKE) limine-deploy
endif
-$(call MKESCAPE,$(BINDIR))/limine-cd-efi.bin: $(if @BUILD_UEFI_IA32@, $(call MKESCAPE,$(BUILDDIR))/common-uefi-ia32/BOOTIA32.EFI) $(if @BUILD_UEFI_X86_64@, $(call MKESCAPE,$(BUILDDIR))/common-uefi-x86-64/BOOTX64.EFI)
+$(call MKESCAPE,$(BINDIR))/limine-cd-efi.bin: $(if @BUILD_UEFI_IA32@, $(call MKESCAPE,$(BUILDDIR))/common-uefi-ia32/BOOTIA32.EFI) $(if @BUILD_UEFI_X86_64@, $(call MKESCAPE,$(BUILDDIR))/common-uefi-x86-64/BOOTX64.EFI) $(if @BUILD_UEFI_AARCH64@, $(call MKESCAPE,$(BUILDDIR))/common-uefi-aarch64/BOOTAA64.EFI)
ifneq ($(BUILD_CD_EFI),no)
$(MKDIR_P) '$(call SHESCAPE,$(BINDIR))'
rm -f '$(call SHESCAPE,$(BINDIR))/limine-cd-efi.bin'
@@ -160,6 +160,8 @@ ifneq ($(BUILD_CD_EFI),no)
( mformat -i '$(call SHESCAPE,$(BINDIR))/limine-cd-efi.bin' -f 1440 :: && \
mmd -D s -i '$(call SHESCAPE,$(BINDIR))/limine-cd-efi.bin' ::/EFI && \
mmd -D s -i '$(call SHESCAPE,$(BINDIR))/limine-cd-efi.bin' ::/EFI/BOOT && \
+ ( ( [ -f '$(call SHESCAPE,$(BUILDDIR))/common-uefi-aarch64/BOOTAA64.EFI' ] && \
+ mcopy -D o -i '$(call SHESCAPE,$(BINDIR))/limine-cd-efi.bin' '$(call SHESCAPE,$(BUILDDIR))/common-uefi-aarch64/BOOTAA64.EFI' ::/EFI/BOOT ) || true ) && \
( ( [ -f '$(call SHESCAPE,$(BUILDDIR))/common-uefi-x86-64/BOOTX64.EFI' ] && \
mcopy -D o -i '$(call SHESCAPE,$(BINDIR))/limine-cd-efi.bin' '$(call SHESCAPE,$(BUILDDIR))/common-uefi-x86-64/BOOTX64.EFI' ::/EFI/BOOT ) || true ) && \
( ( [ -f '$(call SHESCAPE,$(BUILDDIR))/common-uefi-ia32/BOOTIA32.EFI' ] && \
@@ -499,13 +501,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
@@ -529,7 +531,7 @@ uefi-aa64-test:
$(MAKE) test-clean
$(MAKE) test.hdd
$(MAKE) limine-uefi-aarch64
- $(MAKE) -C test
+ $(MAKE) -C test CROSS_FILE='$(call SHESCAPE,$(BUILDDIR))/cross-files/aarch64-toolchain.mk'
rm -rf test_image/
mkdir test_image
sudo losetup -Pf --show test.hdd > loopback_dev
@@ -553,7 +555,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 7e0dae45..406dcab6 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,51 +16,53 @@ 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. \
- -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 \
-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: limine.o e9print.o memory.o
$(LD) $^ $(LDFLAGS) $(INTERNALLDFLAGS) -o $@
diff --git a/test/e9print.c b/test/e9print.c
index 7e425a04..c77f1c03 100644
--- a/test/e9print.c
+++ b/test/e9print.c
@@ -9,7 +9,9 @@ static const char CONVERSION_TABLE[] = "0123456789abcdef";
void e9_putc(char c) {
if (limine_print != NULL)
limine_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);
