misc: Better integration of aarch64 port and test mechanism

This commit is contained in:
mintsuki 2022-09-05 02:17:53 +02:00
parent 86ebf0b453
commit ebbf8d7bed
6 changed files with 45 additions and 38 deletions

View File

@ -93,7 +93,6 @@ jobs:
- name: Release
uses: softprops/action-gh-release@v1
with:
prerelease: true
body_path: rel_notes.txt
files: |
limine-*.tar.*

View File

@ -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

View File

@ -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 $@

View File

@ -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) {

View File

@ -1,7 +1,7 @@
ENTRY(_start)
SECTIONS {
. = 0x10000;
. = 1M;
.boot :
{
@ -18,7 +18,7 @@ SECTIONS {
. = ALIGN(4K);
.rodata :
{
*(.rodata.*)
*(.rodata .rodata.*)
}
. = ALIGN(4K);

View File

@ -18,7 +18,7 @@ SECTIONS {
. = ALIGN(4K);
.rodata :
{
*(.rodata.*)
*(.rodata .rodata.*)
}
. = ALIGN(4K);