From nobody Sun Dec 14 06:18:15 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1765457871; cv=none; d=zohomail.com; s=zohoarc; b=DeWMVT4udgbNG7lRVwX+MZFhpdD8VVo1haH0WPHHWfdtp5+wfVqPMXX9MRAzeBR5/L4oLflmVp1hXK9V97ryvvEm+d8Hnx6vnXYb+37OJO/q4Fpzok6os9W8mezGWDX3caaqnmimahZvs8+HQZSXdo3AQ+Tof1B+nKnNydhBYh0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1765457871; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=2kjup8IXurSGnJos/cvAZljvqR45Kt88E1lA50HDgVc=; b=FZfCcEoRPJD5ETdkew+TuQO3eqFbNCICRWUo8uG89Ex4wVttEkkQadOgZogoBprIVBIuW3PsR3QTOXU2hikoKaVFL1VuGQrJ3E94kE0Cb6UTtLTdk/QK7hynT8LDDGcrmE0rCskdOgB2AzwVLaNC0wZfa3dvztNd0ah1b+TcrmQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1765457871360470.21084646976476; Thu, 11 Dec 2025 04:57:51 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.1184058.1506600 (Exim 4.92) (envelope-from ) id 1vTgEZ-0005B1-Bz; Thu, 11 Dec 2025 12:57:27 +0000 Received: by outflank-mailman (output) from mailman id 1184058.1506600; Thu, 11 Dec 2025 12:57:27 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vTgEZ-0005Au-9B; Thu, 11 Dec 2025 12:57:27 +0000 Received: by outflank-mailman (input) for mailman id 1184058; Thu, 11 Dec 2025 12:57:26 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1vTgEY-0005Ao-80 for xen-devel@lists.xenproject.org; Thu, 11 Dec 2025 12:57:26 +0000 Received: from mail-qv1-xf2d.google.com (mail-qv1-xf2d.google.com [2607:f8b0:4864:20::f2d]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id f05fd0b8-d690-11f0-b15b-2bf370ae4941; Thu, 11 Dec 2025 13:57:25 +0100 (CET) Received: by mail-qv1-xf2d.google.com with SMTP id 6a1803df08f44-8823dfa84c5so279826d6.3 for ; Thu, 11 Dec 2025 04:57:25 -0800 (PST) Received: from localhost.localdomain (host-154-4.mdu.ilcmifre.champaign.il.us.clients.pavlovmedia.net. [66.253.154.4]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-8886eef8dcbsm22988176d6.37.2025.12.11.04.57.22 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Thu, 11 Dec 2025 04:57:23 -0800 (PST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: f05fd0b8-d690-11f0-b15b-2bf370ae4941 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765457844; x=1766062644; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2kjup8IXurSGnJos/cvAZljvqR45Kt88E1lA50HDgVc=; b=K4OLfr8Uwz/YMAji2tPZ71jv8OydADlSUqXnJzXSYv7qwqhrfj0sdladJrbxH/n2QC tm67EzbURPFpTiHVXj1BIVBjLYOgKMpHJak22TwUSlXGhTQpqU4u33u2ZOTMYZk7JHji YD53KXmmqW0LRiHOs9wdZsj/6thyQ0M1M02w/4NMa/4ImUxSy2lXQBu6EQ+isi+boN8L 63ZKyCkPOGPIIEFZOMmkNmLkgzjVSbS/OGQ1hMITn3eX4fLjc2ntUG3VfEV7e5vzG2Cy tdO0yEGvK9arr8Vd+2SGaZ8hUvSnjQF4X5EevnsvQXrh3PF1UY4r5P4MgBwJwmIIWVkt +Rlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765457844; x=1766062644; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=2kjup8IXurSGnJos/cvAZljvqR45Kt88E1lA50HDgVc=; b=BVg6qAbat/9KzZrz8zmQTbMRiRXBangqc2SAgX4BA4zGWGCNZHrP3YKz6y5shi9eej t7aSUAt5fxNVkLMMexjUmmBFIC/T6R657N8HDVAWBUwCv/R7vW++zPVKQc1Bxq1TJ1nd MRkFaLwXz2iUYlMnSZ+pYbloV+aGDMnBHfXlNuOECjdDowmUJyO73aVVNr+BvUg9KRoD PIMslfte/UFVNwEmTeY+at2Zt/7cUBNroMZ/c9FgqmYbl/hBtywM7b4le5L/m2s0x1c+ mL1TAcfCFmHObLZryaZtIIxIVyBYiaRk4ZX8H/I/gnGf6p97AAzMRyKWXNspwjLrN0et d9sQ== X-Gm-Message-State: AOJu0YymFJXcapMPfcWX9GXx6CmvmGWbnTfoRL9QdDo8mgy/7Nzfp9iF oPJXLWHQgTBfVPqhxy8WulhOlThiWcEtUwgJjjNsJ9DVVsZMop5WnvRezOUufH4= X-Gm-Gg: AY/fxX4q0b92hc0qvkYGmwvd8EiWAx9d3jZhcGz10A1xC1OtcC4R9HSwXWDWLBsTJkn 2Bz8l7xYtL2f9qKXWZIlf9BtzkBptpmKHqEV655/5QBhQaifLk1owXNVeSlo4fnCHqHEL35U5/7 bvMZ+7Rary600kEAmS5YAS57MXVelyn/QW46PpZMtnbKw1HvxYW6MnYedLI5Nn4xJzYg2JcuK2p P6E/kGrbmdViO4IxE52J8VCUNZ/5rFAovdQz9vGeuRr+IHsJSnWoF4fqiUTxhEJ9VINHkyxBc+M hS8zwab16wgOC0aVgTk7JS1XGTc+ikPMsxrZ7C9GNUk2KfjZ8+FB0HveE9zxWxYRLWmJWH0otNN EnFyCDungibTNSeInS895eVDY7RzlUHAb4oo0OZ/x0KpQfUg1fholcfEowf5iEGioougQfGqB+f cmn6BPG6kM52XanUION6UHh5MmUWV35au5Vz/bJjWvzGojvcA66nTMLKU9yhd/OAx6dootKk1JV 3VAX8lJTn+9+YXLSO50JcjQKIW+4wgQ1aN2e4XyIN4XuLmYUFjFnCJ3BCneE5/M6hOGBNAlO/0Q MR2fuC5B X-Google-Smtp-Source: AGHT+IFlbZxMZNSJQQ3a7Dp2bbpHm+8RnpjrSNjIidhmYd6RGT+TFyrPBZI/z1rvXEaZlhxJxorkog== X-Received: by 2002:ad4:5cee:0:b0:880:22f3:3376 with SMTP id 6a1803df08f44-88863a215c6mr90575406d6.10.1765457843482; Thu, 11 Dec 2025 04:57:23 -0800 (PST) From: Saman Dehghan To: xen-devel@lists.xenproject.org Cc: Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Stefano Stabellini , Bertrand Marquis , Volodymyr Babchuk Subject: [PATCH v3] xen/arm64: Add support Clang build on arm64 Date: Thu, 11 Dec 2025 06:57:17 -0600 Message-ID: X-Mailer: git-send-email 2.49.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1765457873631158500 Content-Type: text/plain; charset="utf-8" This patch enables building Xen for the arm64 using the Clang/LLVM compiler. Changes include: - Add explicit -march=3Darmv8 flag for arm64 builds. - Introduce `READ_FP_SYSREG` and `WRITE_FP_SYSREG` to encapsulate the requi= red `.arch_extension fp` directive for system fp register access. - Add ".arch_extension fp" to the inline assembly for `save_state` and `restore_state`. Signed-off-by: Saman Dehghan --- README | 2 ++ xen/arch/arm/arch.mk | 1 + xen/arch/arm/arm64/vfp.c | 30 ++++++++++++++++++++++-------- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/README b/README index 889a4ea906..67c1aa7fe6 100644 --- a/README +++ b/README @@ -45,6 +45,8 @@ provided by your OS distributor: - For ARM: - GCC 5.1 or later - GNU Binutils 2.25 or later + or + - Clang/LLVM 11 or later - For RISC-V 64-bit: - GCC 12.2 or later - GNU Binutils 2.39 or later diff --git a/xen/arch/arm/arch.mk b/xen/arch/arm/arch.mk index 9c4bedfb3b..bcf548069b 100644 --- a/xen/arch/arm/arch.mk +++ b/xen/arch/arm/arch.mk @@ -13,6 +13,7 @@ ifeq ($(CONFIG_MPU),y) CFLAGS-$(CONFIG_ARM_64) +=3D -march=3Darmv8-r else CFLAGS-$(CONFIG_ARM_64) +=3D -mcpu=3Dgeneric +CFLAGS-$(CONFIG_ARM_64) +=3D -march=3Darmv8 endif CFLAGS-$(CONFIG_ARM_64) +=3D -mgeneral-regs-only # No fp registers etc $(call cc-option-add,CFLAGS-$(CONFIG_ARM_64),CC,-mno-outline-atomics) diff --git a/xen/arch/arm/arm64/vfp.c b/xen/arch/arm/arm64/vfp.c index c4f89c7b0e..ea75c7a2b2 100644 --- a/xen/arch/arm/arm64/vfp.c +++ b/xen/arch/arm/arm64/vfp.c @@ -6,7 +6,8 @@ =20 static inline void save_state(uint64_t *fpregs) { - asm volatile("stp q0, q1, [%1, #16 * 0]\n\t" + asm volatile(".arch_extension fp\n\t" + "stp q0, q1, [%1, #16 * 0]\n\t" "stp q2, q3, [%1, #16 * 2]\n\t" "stp q4, q5, [%1, #16 * 4]\n\t" "stp q6, q7, [%1, #16 * 6]\n\t" @@ -27,7 +28,8 @@ static inline void save_state(uint64_t *fpregs) =20 static inline void restore_state(const uint64_t *fpregs) { - asm volatile("ldp q0, q1, [%1, #16 * 0]\n\t" + asm volatile(".arch_extension fp\n\t" + "ldp q0, q1, [%1, #16 * 0]\n\t" "ldp q2, q3, [%1, #16 * 2]\n\t" "ldp q4, q5, [%1, #16 * 4]\n\t" "ldp q6, q7, [%1, #16 * 6]\n\t" @@ -46,6 +48,18 @@ static inline void restore_state(const uint64_t *fpregs) : : "Q" (*fpregs), "r" (fpregs)); } =20 +#define WRITE_FP_SYSREG(v, name) do { \ + uint64_t _r =3D (v); \ + asm volatile(".arch_extension fp\n\t" \ + "msr "__stringify(name)", %0" : : "r" (_r)); \ +} while (0) + +#define READ_FP_SYSREG(name) ({ \ + uint64_t _r; \ + asm volatile(".arch_extension fp\n\t" \ + "mrs %0, "__stringify(name) : "=3Dr" (_r)); \ + _r; }) + void vfp_save_state(struct vcpu *v) { if ( !cpu_has_fp ) @@ -56,10 +70,10 @@ void vfp_save_state(struct vcpu *v) else save_state(v->arch.vfp.fpregs); =20 - v->arch.vfp.fpsr =3D READ_SYSREG(FPSR); - v->arch.vfp.fpcr =3D READ_SYSREG(FPCR); + v->arch.vfp.fpsr =3D READ_FP_SYSREG(FPSR); + v->arch.vfp.fpcr =3D READ_FP_SYSREG(FPCR); if ( is_32bit_domain(v->domain) ) - v->arch.vfp.fpexc32_el2 =3D READ_SYSREG(FPEXC32_EL2); + v->arch.vfp.fpexc32_el2 =3D READ_FP_SYSREG(FPEXC32_EL2); } =20 void vfp_restore_state(struct vcpu *v) @@ -72,8 +86,8 @@ void vfp_restore_state(struct vcpu *v) else restore_state(v->arch.vfp.fpregs); =20 - WRITE_SYSREG(v->arch.vfp.fpsr, FPSR); - WRITE_SYSREG(v->arch.vfp.fpcr, FPCR); + WRITE_FP_SYSREG(v->arch.vfp.fpsr, FPSR); + WRITE_FP_SYSREG(v->arch.vfp.fpcr, FPCR); if ( is_32bit_domain(v->domain) ) - WRITE_SYSREG(v->arch.vfp.fpexc32_el2, FPEXC32_EL2); + WRITE_FP_SYSREG(v->arch.vfp.fpexc32_el2, FPEXC32_EL2); } --=20 2.49.0