summaryrefslogtreecommitdiff
path: root/Meta
diff options
context:
space:
mode:
authorDaniel Bertalan <dani@danielbertalan.dev>2023-05-15 07:55:39 +0200
committerAndrew Kaster <andrewdkaster@gmail.com>2023-05-17 01:32:43 -0600
commit0cbcdb227f5c3318170235c3cd20bfdc5ada4086 (patch)
treeda39ce1e7025e8da4982980e489bd282d0b3ad11 /Meta
parentc460b84ebef867811fe565957aef6f590fc881e8 (diff)
downloadserenity-0cbcdb227f5c3318170235c3cd20bfdc5ada4086.zip
Meta: Make `SERENITY_RUN=ci` work with AArch64
This in turn enables `./Meta/serenity.sh test aarch64` and the CI scripts to work with the AArch64 port. As the RPi doesn't have a debugcon-like device, we create two serial devices. The system console, UART0 is redirected to `debug.log`, while UART1 is made available to the userspace and is used as the stdout for the test runner script. We are not yet able to run the full test suite, as the kernel panics due to some unimplemented features. Note that Qemu `master` or our patched Qemu build is required for `SystemServer` to recognize the `system_mode=self-test` parameter.
Diffstat (limited to 'Meta')
-rwxr-xr-xMeta/run.sh47
1 files changed, 32 insertions, 15 deletions
diff --git a/Meta/run.sh b/Meta/run.sh
index 0115adc726..09a8512664 100755
--- a/Meta/run.sh
+++ b/Meta/run.sh
@@ -513,21 +513,38 @@ elif [ "$SERENITY_RUN" = "limine" ]; then
elif [ "$SERENITY_RUN" = "ci" ]; then
# Meta/run.sh ci: qemu in text mode
echo "Running QEMU in CI"
- "$SERENITY_QEMU_BIN" \
- $SERENITY_EXTRA_QEMU_ARGS \
- $SERENITY_VIRT_TECH_ARG \
- -m $SERENITY_RAM_SIZE \
- -cpu $SERENITY_QEMU_CPU \
- -d guest_errors \
- -no-reboot \
- -smp ${SERENITY_CPUS} \
- -drive file=${SERENITY_DISK_IMAGE},format=raw,index=0,media=disk \
- -device ich9-ahci \
- -nographic \
- -display none \
- -debugcon file:debug.log \
- $SERENITY_KERNEL_AND_INITRD \
- -append "${SERENITY_KERNEL_CMDLINE}"
+ if [ "$SERENITY_ARCH" = "aarch64" ]; then
+ "$SERENITY_QEMU_BIN" \
+ $SERENITY_EXTRA_QEMU_ARGS \
+ $SERENITY_VIRT_TECH_ARG \
+ -M raspi3b \
+ -d guest_errors \
+ -no-reboot \
+ -drive file=${SERENITY_DISK_IMAGE},if=sd,format=raw \
+ -nographic \
+ -monitor none \
+ -display none \
+ -serial file:debug.log \
+ -serial stdio \
+ $SERENITY_KERNEL_AND_INITRD \
+ -append "${SERENITY_KERNEL_CMDLINE}"
+ else
+ "$SERENITY_QEMU_BIN" \
+ $SERENITY_EXTRA_QEMU_ARGS \
+ $SERENITY_VIRT_TECH_ARG \
+ -m $SERENITY_RAM_SIZE \
+ -cpu $SERENITY_QEMU_CPU \
+ -d guest_errors \
+ -no-reboot \
+ -smp ${SERENITY_CPUS} \
+ -drive file=${SERENITY_DISK_IMAGE},format=raw,index=0,media=disk \
+ -device ich9-ahci \
+ -nographic \
+ -display none \
+ -debugcon file:debug.log \
+ $SERENITY_KERNEL_AND_INITRD \
+ -append "${SERENITY_KERNEL_CMDLINE}"
+ fi
else
# Meta/run.sh: qemu with user networking
"$SERENITY_QEMU_BIN" \