{"id":2235155,"url":"http://patchwork.ozlabs.org/api/1.2/patches/2235155/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20260508-jmac-gpctest-v1-2-e57e42c87e1e@linaro.org/","project":{"id":14,"url":"http://patchwork.ozlabs.org/api/1.2/projects/14/?format=json","name":"QEMU Development","link_name":"qemu-devel","list_id":"qemu-devel.nongnu.org","list_email":"qemu-devel@nongnu.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260508-jmac-gpctest-v1-2-e57e42c87e1e@linaro.org>","list_archive_url":null,"date":"2026-05-08T17:20:13","name":"[2/3] altvec.S: Alternative vector table for aarch64 testing","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"853b99171e5d3346a2f1102a9c73284ed8bd50e4","submitter":{"id":92076,"url":"http://patchwork.ozlabs.org/api/1.2/people/92076/?format=json","name":"Jim MacArthur","email":"jim.macarthur@linaro.org"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/qemu-devel/patch/20260508-jmac-gpctest-v1-2-e57e42c87e1e@linaro.org/mbox/","series":[{"id":503424,"url":"http://patchwork.ozlabs.org/api/1.2/series/503424/?format=json","web_url":"http://patchwork.ozlabs.org/project/qemu-devel/list/?series=503424","date":"2026-05-08T17:20:13","name":"RFC: Testing exceptions in tests/tcg/aarch64","version":1,"mbox":"http://patchwork.ozlabs.org/series/503424/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2235155/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2235155/checks/","tags":{},"related":[],"headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256\n header.s=google header.b=aM+5BZVB;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4gBwrB4yVsz1yCg\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 09 May 2026 03:20:58 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wLOsJ-0005aH-PM; Fri, 08 May 2026 13:20:31 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <jim.macarthur@linaro.org>)\n id 1wLOsD-0005ZE-5A\n for qemu-devel@nongnu.org; Fri, 08 May 2026 13:20:25 -0400","from mail-wm1-x330.google.com ([2a00:1450:4864:20::330])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <jim.macarthur@linaro.org>)\n id 1wLOs8-0002Jb-9A\n for qemu-devel@nongnu.org; Fri, 08 May 2026 13:20:23 -0400","by mail-wm1-x330.google.com with SMTP id\n 5b1f17b1804b1-4896c22fcbaso20939895e9.0\n for <qemu-devel@nongnu.org>; Fri, 08 May 2026 10:20:17 -0700 (PDT)","from [127.0.1.1] ([2a10:d582:31e:0:e47d:4cf0:1918:bbbd])\n by smtp.gmail.com with ESMTPSA id\n 5b1f17b1804b1-48e6dd2c550sm9516965e9.3.2026.05.08.10.20.16\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Fri, 08 May 2026 10:20:16 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=linaro.org; s=google; t=1778260817; x=1778865617; darn=nongnu.org;\n h=cc:to:in-reply-to:references:message-id:content-transfer-encoding\n :mime-version:subject:date:from:from:to:cc:subject:date:message-id\n :reply-to; bh=Sj83pQ1FvTLzFDLi7fANMNJBNhCHQLFTCbga/AJf4eU=;\n b=aM+5BZVBEqYyPl/ihSc5lYVWP2extbOg7PKAwNwuR+jZ4SqD1yob1qtey4CM3kypoi\n QE6WR+A9e+7yQI4q4jem03ww1eKXI0aC1rLMWO8i9G+O25z+gXZKFSsdX7ltyEd7+JjH\n bKXOEWtaBxiMRQAixEEs4w0Ri5jNcarZ4chbTesW3ayM92NoNnXryo7FUBsrAXS1u2LN\n Xx07nLCtObu8Ubt4gUEYVbqNNPrurY+ToDiWv5a3mKQ0+IKtDC2SPfihO9gL9ONXMVC2\n zPACwIGf9AMvRrQ5hIl1RBoTsWBDkIuln5q9CAeZOql4ZGwWnHdG8pGfSxVF6WABITRA\n QXUw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1778260817; x=1778865617;\n h=cc:to:in-reply-to:references:message-id:content-transfer-encoding\n :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to\n :cc:subject:date:message-id:reply-to;\n bh=Sj83pQ1FvTLzFDLi7fANMNJBNhCHQLFTCbga/AJf4eU=;\n b=LNe+gpAzYKWbQNqkXMGPqgyl7J4mvDaY0mIFGGFzGQp138UnwXMVZzW6Va5K5aPJBV\n nCH8i51EhiBmBmZoyggxkcqYWQKKvPdgDT0QfyT8Sy1/9PkfB96xQnTngNYcxULHTbEx\n 1st+pA1vCaLHX+rIOzHou90ksI2zo+GQfKRIc/uv2AxRb/JXuyZJmcZlfGdX/nVeIARP\n xUyPQbikPN38FvejO5iucd6ve4RQkieafLVmxny81Ypdhn7ijHzbI+vpjTbpPXDyH1kf\n EDNQeYgOFJ04XDT5rMGyTpRGOnP8WQUF40rpIOR5fr/gkwzQbRWDHPIhXka1V6wgS2j1\n 6MmA==","X-Gm-Message-State":"AOJu0YzYYNigkvDCNAsgeTbelyqMPpQ5NHqwQGwwqrV+/mbj5A4iVFMd\n apgKOz6wVSRUGPXh/YotEAK31+I8EgXNg4ix1HERsbBXf0iXp0zGJLrT7ImjrfaOduzQjh95yYI\n 64WdO","X-Gm-Gg":"AeBDievkSOBuyb0JuPdfxlzE9oGMWVmccEfGnubpHdlRx3wRDYquvmg+73tRV8pEDCC\n 8rI8UQkb5y+jym5EsIHaAoKkz3TaeNghHMlrlNgEnSveYN+SzApPwC5Eban6hT0KYkB8LlsPYJR\n drkjJZezq35FP6JdD8FAvl2KLSG9GXguSdI2erDq/MJ2y3zbFriEx9Ik+EbB0l3VDpOutmOMQlf\n a7LA9Um9y/lTgpOHhf98u6QlsPKjWrrBo7GK8grBK0seZeqtkq40Bl/eO+HepOIJT/4O0V3zfFa\n +MMmdhMQCORHRF3joM8gJ0rD/2rT/MUwxs76ELAa09tTlyecPIWUHQaRKcTXuMWV4g255FixJDi\n LApJX2805upvTeM7EiZ6xLwY5H/RC47Xstui6v4RkIVj658VTGApE8nthbHj4fV5l80Nntm/4IP\n xnHHQNDecoKS+CNwJLvqZVToFSwGg=","X-Received":"by 2002:a05:600c:3b17:b0:48a:568f:ae8a with SMTP id\n 5b1f17b1804b1-48e51e1a870mr206847285e9.8.1778260816472;\n Fri, 08 May 2026 10:20:16 -0700 (PDT)","From":"Jim MacArthur <jim.macarthur@linaro.org>","Date":"Fri, 08 May 2026 18:20:13 +0100","Subject":"[PATCH 2/3] altvec.S: Alternative vector table for aarch64 testing","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"utf-8\"","Content-Transfer-Encoding":"7bit","Message-Id":"<20260508-jmac-gpctest-v1-2-e57e42c87e1e@linaro.org>","References":"<20260508-jmac-gpctest-v1-0-e57e42c87e1e@linaro.org>","In-Reply-To":"<20260508-jmac-gpctest-v1-0-e57e42c87e1e@linaro.org>","To":"qemu-devel@nongnu.org","Cc":"Peter Maydell <peter.maydell@linaro.org>, qemu-arm@nongnu.org,\n Jim MacArthur <jim.macarthur@linaro.org>","X-Mailer":"b4 0.13.0","Received-SPF":"pass client-ip=2a00:1450:4864:20::330;\n envelope-from=jim.macarthur@linaro.org; helo=mail-wm1-x330.google.com","X-Spam_score_int":"-20","X-Spam_score":"-2.1","X-Spam_bar":"--","X-Spam_report":"(-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n SPF_PASS=-0.001 autolearn=ham autolearn_force=no","X-Spam_action":"no action","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"qemu development <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"},"content":"Sets up a potential replacement vector table which will record\nand ignore certain types of exception. Indicative values are\nrecorded in 'exception_log'. Most exception types are handled\nin the same way as the table in boot.S.\n\nSigned-off-by: Jim MacArthur <jim.macarthur@linaro.org>\n---\n tests/tcg/aarch64/Makefile.softmmu-target |   2 +-\n tests/tcg/aarch64/system/altvec.S         | 129 ++++++++++++++++++++++++++++++\n 2 files changed, 130 insertions(+), 1 deletion(-)","diff":"diff --git a/tests/tcg/aarch64/Makefile.softmmu-target b/tests/tcg/aarch64/Makefile.softmmu-target\nindex f7a7d2b800..60c65f4969 100644\n--- a/tests/tcg/aarch64/Makefile.softmmu-target\n+++ b/tests/tcg/aarch64/Makefile.softmmu-target\n@@ -8,7 +8,7 @@ AARCH64_SYSTEM_SRC=$(AARCH64_SRC)/system\n VPATH+=$(AARCH64_SYSTEM_SRC)\n \n # These objects provide the basic boot code and helper functions for all tests\n-CRT_OBJS=boot.o\n+CRT_OBJS=boot.o altvec.o\n \n AARCH64_TEST_C_SRCS=$(wildcard $(AARCH64_SYSTEM_SRC)/*.c)\n AARCH64_TEST_S_SRCS=$(AARCH64_SYSTEM_SRC)/mte.S\ndiff --git a/tests/tcg/aarch64/system/altvec.S b/tests/tcg/aarch64/system/altvec.S\nnew file mode 100644\nindex 0000000000..079846b639\n--- /dev/null\n+++ b/tests/tcg/aarch64/system/altvec.S\n@@ -0,0 +1,129 @@\n+/* SPDX-License-Identifier: GPL-2.0-or-later */\n+/*\n+ * Alternative AArch64 vector table. Can replace the vector table\n+ * in boot.S and record & ignore some exceptions in exception_log.\n+ * Maintains the semihosting error print and exit for most\n+ * exceptions.\n+ *\n+ * Copyright Linaro Ltd 2026\n+ *\n+ */\n+\n+#define semihosting_call hlt 0xf000\n+#define SYS_WRITE0\t0x04\t/* string to debug channel */\n+#define SYS_EXIT\t0x18\n+\t.align\t12\n+\n+\t.macro\tventry\tlabel\n+\t.align\t7\n+\tb\t\\label\n+\t.endm\n+\n+\t.global alt_vector_table\n+alt_vector_table:\n+\t/* Current EL with SP0.\t */\n+\tventry\tcurr_sp0_sync\t\t/* Synchronous\t*/\n+\tventry\tcurr_sp0_irq\t\t/* Irq/vIRQ  */\n+\tventry\tcurr_sp0_fiq\t\t/* Fiq/vFIQ  */\n+\tventry\tcurr_sp0_serror\t\t/* SError/VSError  */\n+\n+\t/* Current EL with SPx.\t */\n+\tventry\tcurr_spx_sync\t\t/* Synchronous\t*/\n+\tventry\tcurr_spx_irq\t\t/* IRQ/vIRQ  */\n+\tventry\tcurr_spx_fiq\t\t/* FIQ/vFIQ  */\n+\tventry\tcurr_spx_serror\t\t/* SError/VSError  */\n+\n+\t/* Lower EL using AArch64.  */\n+\tventry\tlower_a64_sync\t\t/* Synchronous\t*/\n+\tventry\tlower_a64_irq\t\t/* IRQ/vIRQ  */\n+\tventry\tlower_a64_fiq\t\t/* FIQ/vFIQ  */\n+\tventry\tlower_a64_serror\t/* SError/VSError  */\n+\n+\t/* Lower EL using AArch32.  */\n+\tventry\tlower_a32_sync\t\t/* Synchronous\t*/\n+\tventry\tlower_a32_irq\t\t/* IRQ/vIRQ  */\n+\tventry\tlower_a32_fiq\t\t/* FIQ/vFIQ  */\n+\tventry\tlower_a32_serror\t/* SError/VSError  */\n+\n+\t.text\n+\t.align 4\n+\n+curr_spx_sync:\n+\tsub     sp, sp, #16\n+\tstp     x0, x1, [sp, #0]\n+\tmrs     x0, ESR_EL3\n+\tlsr \tx0, x0, #26\n+\tand \tx0, x0, #0x3f\n+\tcmp \tx0, #37\n+\tbeq \tdata_fault\n+\tcmp \tx0, #30\n+\tbeq \tgpc_fault\n+\tb       generic_exception\n+\n+data_fault:\n+\tmrs     x0, FAR_EL3\n+\tadrp    x1, exception_log\n+\tstr     x0, [x1]\n+\tldr     x0, =0x1001\n+\tstr     x0, [x1, #8]\n+\tb       skip_return\n+gpc_fault:\n+\tmrs     x0, FAR_EL3\n+\tadrp    x1, exception_log\n+\tstr     x0, [x1]\n+\tldr     x0, =0x1002\n+\tstr     x0, [x1, #8]\n+\t/* Fall through */\n+skip_return:\n+\tmrs     x0, ELR_EL3\n+\tadd     x0, x0, #4 /* Skip faulting instruction */\n+\tmsr     ELR_EL3, x0\n+\tldp     x0, x1, [sp, #0]\n+\tadd     sp, sp, #16\n+\teret\n+curr_sp0_sync:\n+curr_sp0_irq:\n+curr_sp0_fiq:\n+curr_sp0_serror:\n+curr_spx_irq:\n+curr_spx_fiq:\n+curr_spx_serror:\n+lower_a64_sync:\n+lower_a64_irq:\n+lower_a64_fiq:\n+lower_a64_serror:\n+lower_a32_sync:\n+lower_a32_irq:\n+lower_a32_fiq:\n+lower_a32_serror:\n+generic_exception:\n+\tadr\tx1, .unexp_excp\n+exit_msg:\n+\tmov\tx0, SYS_WRITE0\n+\tsemihosting_call\n+\tmov\tx0, 1 /* EXIT_FAILURE */\n+\tbl \t_exit\n+\t/* never returns */\n+print_debug_msg:\n+\tmov\tx0, SYS_WRITE0\n+\tsemihosting_call\n+\tret\n+_exit:\n+\tmov    x1, x0\n+\tldr    x0, =0x20026 /* ADP_Stopped_ApplicationExit */\n+\tstp    x0, x1, [sp, #-16]!\n+\tmov    x1, sp\n+\tmov    x0, SYS_EXIT\n+\tsemihosting_call\n+\n+\n+\t.section .rodata\n+.unexp_excp:\n+\t.string \"Unexpected exception (via alternative handler).\\n\"\n+\n+\t.data\n+\t.align 8\n+\t.global exception_log\n+exception_log:\n+\t.space 128, 0\n+\n","prefixes":["2/3"]}