summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-04-02 09:50:31 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-04-02 09:50:31 +0200
commit5ab7dfde025cf8ff1d650b2341d1558ba817017c (patch)
tree937d04260b3504e7c3fa98b0031adbbf2397de48
parentb86c34ad45c2a066a9ca86a86b2c49d30697c671 (diff)
arm64: fix CI.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
-rw-r--r--.github/workflows/arm64.yml4
-rw-r--r--src/arm64/ci.make70
2 files changed, 72 insertions, 2 deletions
diff --git a/.github/workflows/arm64.yml b/.github/workflows/arm64.yml
index 526e8a0..2b513b2 100644
--- a/.github/workflows/arm64.yml
+++ b/.github/workflows/arm64.yml
@@ -14,6 +14,6 @@ jobs:
steps:
- uses: actions/checkout@v4
- name: Install Packages
- run: sudo apt update && sudo apt install gcc-arm-none-eabi
+ run: sudo apt update && sudo apt install gcc-aarch64-linux-gnu
- name: Build FW (ARM64)
- run: cd src && cd arm64 && make all \ No newline at end of file
+ run: cd src && cd arm64 && make -f ci.make all \ No newline at end of file
diff --git a/src/arm64/ci.make b/src/arm64/ci.make
new file mode 100644
index 0000000..169d7f7
--- /dev/null
+++ b/src/arm64/ci.make
@@ -0,0 +1,70 @@
+ #
+ # ========================================================
+ #
+ # CoreBoot
+ # Date Added: 08/11/2023
+ # Copyright 2024, ZKA Technologies, all rights reserved.
+ #
+ # ========================================================
+ #
+
+CC=aarch64-linux-gnu-gcc
+AS=aarch64-linux-gnu-as
+
+COREBOOT=core-boot.elf
+FIRMWARE=boot.rom
+STAGE2=bootstg2.rom
+
+FLAGS=-c -D__COMPILE_ARM64__ -I../../ -Wall -c -nostdlib -ffreestanding -fno-builtin \
+ -D__BSTRICT__ -D__BDEBUG__
+
+C_SRC=$(wildcard *.c) $(wildcard ../*.c) -c
+
+AS_FLAGS= -c -I../../
+
+LD=aarch64-linux-gnu-ld
+OBJ=*.o
+FLAGS_LD= --script=script.lds -o core-boot.elf -nostdlib
+OBJCOPY=aarch64-linux-gnu-objcopy
+
+EMU=qemu-system-aarch64
+EMU_FLAGS=-M virt -cpu cortex-a57 -bios $(FIRMWARE) -m 256M -d int -smp 2
+
+WAIT=sleep 1
+
+.PHONY: all
+all: firmware-link
+ @echo "[CoreBoot] build done."
+
+.PHONY: firmware-link
+firmware-link: firmware-compile
+ $(LD) $(OBJ) $(FLAGS_LD)
+
+.PHONY: rom
+rom:
+ qemu-img create -f qcow2 epm.img 256M
+ qemu-img create -f raw bootstg2.rom 64M
+ $(OBJCOPY) --strip-all -O binary $(COREBOOT) $(FIRMWARE)
+
+# compile firmware
+.PHONY: firmware-compile
+firmware-compile:
+ $(CC) $(FLAGS) $(C_SRC)
+ $(AS) arm64-start-context.S -o arm64-start-context.o
+ $(AS) arm64-boot.S -o arm64-boot.o
+
+
+# launch qemu rule
+.PHONY: run
+run:
+ $(EMU) $(EMU_FLAGS)
+
+# launch qemu with attached debugger
+.PHONY: run-dbg
+run-dbg:
+ $(EMU) -s -S $(EMU_FLAGS)
+
+# remove object files
+.PHONY: clean
+clean:
+ rm -f $(wildcard *.o) $(wildcard *.elf) $(wildcard *.rom) $(wildcard *.epm)