From b5a4d1b6ce7bcc6d34ca74521ac43e4bd95334cb Mon Sep 17 00:00:00 2001 From: Nicolas Kruse Date: Sun, 15 Mar 2026 15:44:32 +0100 Subject: [PATCH] CI: Added ARMv8.1 for Cortex-M55 and M85 --- .github/workflows/build_docker_image.yml | 31 ---------------- .github/workflows/ci.yml | 47 +++++++++++++++++++++--- tools/cross_compiler_unix/build_musl.sh | 7 +++- tools/crosscompile.sh | 9 ++--- 4 files changed, 50 insertions(+), 44 deletions(-) diff --git a/.github/workflows/build_docker_image.yml b/.github/workflows/build_docker_image.yml index a236d7d..b67c98e 100644 --- a/.github/workflows/build_docker_image.yml +++ b/.github/workflows/build_docker_image.yml @@ -63,37 +63,6 @@ jobs: - name: Build & Push Docker image run: docker buildx build --platform linux/arm64 --push -t $IMAGE_NAME tools/qemu_test/ - docker-build-armv6: - runs-on: ubuntu-latest - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Log in to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - with: - platforms: arm - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Set image name - run: echo "IMAGE_NAME=ghcr.io/${GITHUB_REPOSITORY_OWNER,,}/armv6_test:1" >> $GITHUB_ENV - - - name: Build & Push Docker image - run: docker buildx build --platform linux/arm/v6 --push -t $IMAGE_NAME tools/qemu_test/ - - docker-build-armv7: runs-on: ubuntu-latest env: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5b91bb1..477b3f1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -173,13 +173,13 @@ jobs: with: name: stencil-object-files path: src/copapy/obj - - name: Set up QEMU for ARMv6 + - name: Set up QEMU for ARMv7 uses: docker/setup-qemu-action@v3 with: - platforms: linux/arm/v6 - - name: Use ARMv6 container + platforms: linux/arm/v7 + - name: Use ARMv7 container for ARMv6 run: | - docker run --rm -v $PWD:/app -w /app --platform linux/arm/v6 ghcr.io/nonannet/armv6_test:1 \ + docker run --rm -v $PWD:/app -w /app --platform linux/arm/v6 ghcr.io/nonannet/armv7_test:1 \ bash -lc "set -x && \ pip install .[mindev] && \ mkdir -p build/runner && \ @@ -297,6 +297,41 @@ jobs: name: runner-linux-armv7mthumb path: build/runner/* + build-armv8mthumb: + needs: [build_stencils] + runs-on: ubuntu-latest + continue-on-error: true + steps: + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v4 + with: + name: stencil-object-files + path: src/copapy/obj + - name: Set up QEMU for ARMv7 + uses: docker/setup-qemu-action@v3 + with: + platforms: linux/arm/v7 + - name: Use ARMv7 container + run: | + docker run --rm -v $PWD:/app -w /app --platform linux/arm/v7 ghcr.io/nonannet/armv7_test:1 \ + bash -lc "set -x && \ + pip install .[mindev] && \ + mkdir -p build/runner && \ + gcc -march=armv7-a -mfpu=neon-vfpv3 -mfloat-abi=hard -marm -static \ + -Wall -Wextra -Wconversion -Wsign-conversion \ + -Wshadow -Wstrict-overflow -O3 \ + -DENABLE_LOGGING \ + -o build/runner/coparun src/coparun/runmem.c \ + src/coparun/coparun.c src/coparun/mem_man.c && \ + export CP_TARGET_ARCH=armv8mthumb && \ + pytest && \ + bash tools/create_asm.sh" + + - uses: actions/upload-artifact@v4 + with: + name: runner-linux-armv8mthumb + path: build/runner/* + build-windows: needs: [build_stencils] runs-on: windows-latest @@ -346,7 +381,7 @@ jobs: path: build/runner/* release-stencils: - needs: [build_stencils, build-ubuntu, build-windows, build-arm64, build-armv6, build-armv7, build-armv7thumb, build-armv7mthumb] + needs: [build_stencils, build-ubuntu, build-windows, build-arm64, build-armv6, build-armv7, build-armv7thumb, build-armv7mthumb, build-armv8mthumb] runs-on: ubuntu-latest if: github.ref == 'refs/heads/main' && github.event_name == 'push' permissions: @@ -395,7 +430,7 @@ jobs: fi build-docs: - needs: [build_stencils, build-ubuntu, build-windows, build-arm64, build-armv6, build-armv7, build-armv7thumb, build-armv7mthumb] + needs: [build_stencils, build-ubuntu, build-windows, build-arm64, build-armv6, build-armv7, build-armv7thumb, build-armv7mthumb, build-armv8mthumb] runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/tools/cross_compiler_unix/build_musl.sh b/tools/cross_compiler_unix/build_musl.sh index 3f7b50e..1c0fb3c 100644 --- a/tools/cross_compiler_unix/build_musl.sh +++ b/tools/cross_compiler_unix/build_musl.sh @@ -29,8 +29,11 @@ sh ../packobjs.sh arm-none-eabi-gcc arm-none-eabi-ld /object_files/musl_objects_ # Armv7 Thumb for Cortex-A sh ../packobjs.sh arm-none-eabi-gcc arm-none-eabi-ld /object_files/musl_objects_armv7thumb.o "-march=armv7-a -mfpu=neon-vfpv3 -mfloat-abi=hard -mthumb" -# Armv7 Thumb for Cortex-M3..7 -sh ../packobjs.sh arm-none-eabi-gcc arm-none-eabi-ld /object_files/musl_objects_armv7mthumb.o "-march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb" +# Armv7 Thumb for Cortex-M3 to M7 +sh ../packobjs.sh arm-none-eabi-gcc arm-none-eabi-ld /object_files/musl_objects_armv7mthumb.o "-march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard" + +# Armv8.1 Thumb for Cortex-M55 and M85 +sh ../packobjs.sh arm-none-eabi-gcc arm-none-eabi-ld /object_files/musl_objects_armv8mthumb.o "-march=armv8.1-m.main+mve.fp -mfloat-abi=hard -mthumb" #sh ../packobjs.sh mips mips-linux-gnu-gcc-13 mips-linux-gnu-ld diff --git a/tools/crosscompile.sh b/tools/crosscompile.sh index 78a4f2d..046f99d 100644 --- a/tools/crosscompile.sh +++ b/tools/crosscompile.sh @@ -51,11 +51,10 @@ arm-none-eabi-gcc -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb $FL LIBGCC=$(arm-none-eabi-gcc -march=armv7e-m -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -print-libgcc-file-name) arm-none-eabi-ld -r $STMP /object_files/musl_objects_armv7mthumb.o $LIBGCC -o $DEST/stencils_armv7mthumb_$OPT.o -# PowerPC64LE -# powerpc64le-linux-gnu-gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_ppc64le_$OPT.o - -# S390x -# s390x-linux-gnu-gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_s390x_$OPT.o +# Armv8.1 Thumb for Cortex-M55 and M85 +arm-none-eabi-gcc -march=armv8.1-m.main+mve.fp -mfloat-abi=hard -mthumb $FLAGS -$OPT -c $SRC -o $STMP +LIBGCC=$(arm-none-eabi-gcc -march=armv8.1-m.main+mve.fp -mfloat-abi=hard -mthumb -print-libgcc-file-name) +arm-none-eabi-ld -r $STMP /object_files/musl_objects_armv8mthumb.o $LIBGCC -o $DEST/stencils_armv8mthumb_$OPT.o # Mips (Big Endian) #mips-linux-gnu-gcc-13 $FLAGS -$OPT -c $SRC -o $DEST/stencils_mips_$OPT.o