From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756256806; cv=none; d=zohomail.com; s=zohoarc; b=eM0t6qSGoXdOwYRGswpv89YNC767j6ytWhBuR8uU99qZ7ld+gLkGDntadLQGrMDes1jp6CRaVgL8moUHr8K5/ecNtL3vP0+96XVqw9uTCU3Os+LoM6vD0naWuJylzs+FSF2SzJwpPDuo1IIukIyhICsH2W/Lf7IEvJ0kPeYaCMM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756256806; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Ggwb1PQpRrrkLOGCaS9ng6BrXdIGDe+gz4mi5GKaHg4=; b=jikSvGbHOg4Y5tjoXtIWWCOCyWRjyUep1KblwPK3ecVfAnARcOabolMR/FzJi4I39EHyAfeXanlR5R+uRBRykBogjqefrCUECwDZnp2Bhz0ge/IHsM3v+LQrsdvxt6SY795LSSkpyjQ6UmrALpz1Mq2gKHVVBStnOzl2GSv5m48= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756256806595309.15137955343744; Tue, 26 Aug 2025 18:06:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4bD-0003YK-9R; Tue, 26 Aug 2025 21:05:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4bB-0003XI-Hh for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:05:13 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4b9-0007DQ-HL for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:05:13 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-77053017462so2567640b3a.1 for ; Tue, 26 Aug 2025 18:05:10 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.05.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:05:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256709; x=1756861509; darn=nongnu.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=Ggwb1PQpRrrkLOGCaS9ng6BrXdIGDe+gz4mi5GKaHg4=; b=RY9RBnWYuCqEOD+8ufxyOCGQfU4o+JriHwSSCyzHt4Zp7CNQKFaoRXkcXMODO9QqRx q29rY50q+UVC3kRkJF/ePwjwDYG11szpEOS3BbYE1fE5/SQ7Skg87F9gjN4uTujRDdSu fnt1oj/MPvoCAqVjX3sOOtFSxTSjjs7X9SOKP01tAWpQlH0uMFD2foxFS0odMZ7SU8WD TXOux+/X8iljDxcLXZGZyGexNGV9B9il7hiNodgJvVzkoPNgzU4J8toKEkEf0rgsAF82 hz21u8XP+rOewyAv2IxIxJUmUGpmnBdKBAhhisq2S3+JYV8YqVWLY8znJIRHjI8/OwsR jVjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256709; x=1756861509; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ggwb1PQpRrrkLOGCaS9ng6BrXdIGDe+gz4mi5GKaHg4=; b=qy90esSMljBtlA7mkGWJkhkys81yHhvPzoaHuNfte4pktdPlScqTRFB0u5eyejm/U3 wSQU6WBcqTzZFnSrLsHy61w9s4paLjT4aiBb8qoePhIcGWpbdBOYilXAMPnYF4cBJXGs aF2koy9YdnVJr3lOyCgbbNLlsxbxvawm2gzwxF+QZTv5iuZ4CfRSG3KwifHbomyh+5LK jmE/ikXFxxdj8nP4NhoVtq3rURguc4hdrpYkVbAFZ2vfWN6JX7jdu9zMJ+Arba4A0bsj IOf6CdeU4qmk+6NtrX/j4fM49R3plwCjMvE5kEtWman7vSY3c8KxRFz029piq0NIQKcI fLKQ== X-Gm-Message-State: AOJu0YzpHgxP6+cGWj1TtZbxcFbN75DQyWoKyTcQ2Yb6mBFJjvcyavV8 llJKD2suRVSpT9gB3xyuC2p7ia+HqxjI83pjuBuOcjjnYNUR7Ly+frYKhDgWWiOk2GoOqmnCF1B A+TbSOEE= X-Gm-Gg: ASbGncsw03KU28etPx+B5nEOldc2L9R+H1pzZkgvsrITAJy/yWhvGM6Q1qevQ3S7R8F Cp70nkoD2ah8x1fTo0Qo00NhZAe4kF7i3jzMzhn7j5aHLlYw5uPffCB3W3BVKH26i8exYRUP/PJ pdmvxKPErrAMCEEzzwuNMxfI3s417y8Cl4E5KfuJr/yNhbEXH3EVQsQjxtHpV5tNnsvitCZmqKX 3dUmrLoI1RauJRroUWIZAC0QkZ0mAIl8elLgAhldoc0kuIgPq1EZzjQuSwE64Tn4wJPBY3mLFdu j9gnPRGtdY+8vDqCQuQscR6posHxd58W56Sl2R5Hp26PInxHJNnSzJYVArD6VEWwhtYiFFEMGVK CAlRIYfS/rpPh8cBX1iZu2gpBTKKbeWjux/GrEmVFZNnKF2U= X-Google-Smtp-Source: AGHT+IHo+9tb4fg7yF/iu+ukHEiCLEDeDjjpFctjRINkMMnSU6BBn4Ddz0POx9nW7/d6DpumBAVVQg== X-Received: by 2002:a05:6a20:b32a:b0:243:6e7b:9666 with SMTP id adf61e73a8af0-2436e7ba22dmr10754084637.28.1756256709413; Tue, 26 Aug 2025 18:05:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 01/61] target/arm: Introduce KVMID_AA64_SYS_REG64 Date: Wed, 27 Aug 2025 11:03:48 +1000 Message-ID: <20250827010453.4059782-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756256808398124100 Content-Type: text/plain; charset="utf-8" Allow us to create kvm ids directly, rather than going through ENCODE_AA64_CP_REG + cpreg_to_kvm_id. Signed-off-by: Richard Henderson --- target/arm/kvm-consts.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/target/arm/kvm-consts.h b/target/arm/kvm-consts.h index c44d23dbe7..fdb305eea1 100644 --- a/target/arm/kvm-consts.h +++ b/target/arm/kvm-consts.h @@ -180,4 +180,15 @@ MISMATCH_CHECK(CP_REG_ARM64_SYSREG_OP2_SHIFT, KVM_REG_= ARM64_SYSREG_OP2_SHIFT); =20 #undef MISMATCH_CHECK =20 +#define KVMID_AA64_SYS_REG_(op0, op1, crn, crm, op2) \ + (CP_REG_AA64_MASK | CP_REG_ARM64_SYSREG | \ + ((op0) << CP_REG_ARM64_SYSREG_OP0_SHIFT) | \ + ((op1) << CP_REG_ARM64_SYSREG_OP1_SHIFT) | \ + ((crn) << CP_REG_ARM64_SYSREG_CRN_SHIFT) | \ + ((crm) << CP_REG_ARM64_SYSREG_CRM_SHIFT) | \ + ((op2) << CP_REG_ARM64_SYSREG_OP2_SHIFT)) + +#define KVMID_AA64_SYS_REG64(op0, op1, crn, crm, op2) \ + (KVMID_AA64_SYS_REG_(op0, op1, crn, crm, op2) | CP_REG_SIZE_U64) + #endif --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756256853; cv=none; d=zohomail.com; s=zohoarc; b=gGwHMFcXn1yzIk/+EMWvU2fzou6e91No68GYd9I0ka5FD4qpL+XNX3HEPSgi13LjxWkTH2FoOQ5U44JMQKda0yinCiAej37r92c+XurzF7KPO5mb0GSbAf55E6SR2c63UWw3SBMjDF1NQZoztJHwdiZSaN/iNr74jJB2PYtCRMs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756256853; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NJ36daKgzfDvSRHW7lcAsbWEFxZLgKLsVjEywfc7kDk=; b=Ow/TaYVF7tXRtyotK99W2NcShw/2VK3oCrr6AXotDWsXF/z0JRVT2EWlSjnjnovzwYwZ0BN/sVO/48cyalbzJ/gnrMJgp+rb09qVBWSTGijWnZETqt+82P2gM7BDNpcUc+HvKsgKymjDFowzAxh3jpBmH/xMQm7t0cBbl7JQAMA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175625685302993.45256315205518; Tue, 26 Aug 2025 18:07:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4bJ-0003b4-6k; Tue, 26 Aug 2025 21:05:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4bH-0003aY-Or for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:05:19 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4bC-0007E4-Nd for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:05:19 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-77053017462so2567665b3a.1 for ; Tue, 26 Aug 2025 18:05:14 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.05.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:05:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256713; x=1756861513; darn=nongnu.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=NJ36daKgzfDvSRHW7lcAsbWEFxZLgKLsVjEywfc7kDk=; b=Ep4/8642ePJMgJ/6cGVS+VrKeCIRKlbJiLYwoMcYg+IDitzPFySqeSImUPbudkAC2n LffPAzlx15ITPku8pOIpOIH5Y6ZJl8iIpltlfoRqB1d4RuTqxCPPc9rrOJnYcGxvjxQr BzI3+BmOuaSIZT/1ZeGRSM3dl7uj+w1/l+ax+AaI9uDlgXH6XdNmPlzNlLw31InW/h5G NhoGFuvGLUWSUutZJ7BcgiR0OO9WwrwgC583RXrN5cBZSx/JxXEy7qBs9bt+r5kmfG2Y lmocUYKW7l81/f94eAcmVzjukdg8J5/Cuqeii0A1UKyCvm76waBipMW+dOvYQlAmHWP8 TR9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256713; x=1756861513; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NJ36daKgzfDvSRHW7lcAsbWEFxZLgKLsVjEywfc7kDk=; b=OoFJ0vIoobtBWm5eAbZuU24O/ku/PIO8OfQGd6MYkJCZvDSvBT1En5ctfQ7Zi31Q+/ yqfvl0A74m+qL6G+Rbs4Eho9FXkso+3xXmSIhXJLgkUtfMjbwiAdSvcCcKeXlTdpburM LVPJrcCOGo22Fcs0bIf/5ePWf9QqFcBIvuBTTVGDPfLIdX/fiarIXN+iJSvEYLw+ZUP3 TVt52QnQccieXQRAd4uZtoGZ5MTMjWqF42NKpfMme8Yioc2rFI1buvAUSUyXbWKFi4uY +UBs1TG4TESJCzQrfqOW3y0ZAhz1qqPLm0nKT3ykioajqOizgokeXrJ4hRsYAy1UAwtG AHeA== X-Gm-Message-State: AOJu0Yyduc0F+L4+p0Xl8QtKHzRw1n2npKMkPVPqUOALOsUSN1sLOSBx B+v+GXasuZQ9gU+XNcVZHV6NQ2YTAIwQ2zUeS3gIRmgy9fO0r81Q9k+iLhziMjh/mH0fcCsTFjh FdZBS0Ho= X-Gm-Gg: ASbGncty1tiC6A3IWlDI2RZ2O0MICnWxvfzMdaqOrt979zkFLMQRmaRnADods4XuSND rh8SMES8CMzs81Xw1s0zHU6o9G/LfEeiVN/7ad/H3Y/1IDZFXscmLQgPn7XT437haiBS7t1GrG6 XWvOFXaLsW+Qoi6n8TIAgBsGdd9CenIfZ+8IlrSBQWz6OYLLnLEDjZkhqPMT9/4c2yiT2cdSkJv TuKrdLigEHTAAnCEVhPftFfFWwmzd+jFNLWTl8F9DpWdPawrCmwxonjrhyVjtx2hqmuILzjdTC7 wIivmZ1IhaSVYllHrPVOSqy7EYswExR4Oph22YxNe2xieLSn9yMgL5VVqvqV7O74HQfbu3+sk63 B5tvHwNRV2g8WxI8fTDnMzDTqiUlS/5dqeLmf X-Google-Smtp-Source: AGHT+IEm1mz+P8Len78T9DJPNSBvGS9J/uzxCTP+IxuTPXstCNoIw2UIwel5fY92BizRcLmkAIagjg== X-Received: by 2002:a05:6a00:3e15:b0:770:5822:ae30 with SMTP id d2e1a72fcca58-7705822b1f6mr11518438b3a.19.1756256712905; Tue, 26 Aug 2025 18:05:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 02/61] target/arm: Move compare_u64 to helper.c Date: Wed, 27 Aug 2025 11:03:49 +1000 Message-ID: <20250827010453.4059782-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756256854739124100 Content-Type: text/plain; charset="utf-8" We will use this function beyond kvm.c. Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/internals.h | 3 +++ target/arm/helper.c | 11 +++++++++++ target/arm/kvm.c | 11 ----------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index 1b3d0244fd..08e2acdb99 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1981,4 +1981,7 @@ void vfp_clear_float_status_exc_flags(CPUARMState *en= v); void vfp_set_fpcr_to_host(CPUARMState *env, uint32_t val, uint32_t mask); bool arm_pan_enabled(CPUARMState *env); =20 +/* Compare uint64_t for qsort and bsearch. */ +int compare_u64(const void *a, const void *b); + #endif diff --git a/target/arm/helper.c b/target/arm/helper.c index 0c1299ff84..d230f9e766 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -40,6 +40,17 @@ =20 static void switch_mode(CPUARMState *env, int mode); =20 +int compare_u64(const void *a, const void *b) +{ + if (*(uint64_t *)a > *(uint64_t *)b) { + return 1; + } + if (*(uint64_t *)a < *(uint64_t *)b) { + return -1; + } + return 0; +} + uint64_t raw_read(CPUARMState *env, const ARMCPRegInfo *ri) { assert(ri->fieldoffset); diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 6672344855..9e569eff65 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -718,17 +718,6 @@ void kvm_arm_register_device(MemoryRegion *mr, uint64_= t devid, uint64_t group, memory_region_ref(kd->mr); } =20 -static int compare_u64(const void *a, const void *b) -{ - if (*(uint64_t *)a > *(uint64_t *)b) { - return 1; - } - if (*(uint64_t *)a < *(uint64_t *)b) { - return -1; - } - return 0; -} - /* * cpreg_values are sorted in ascending order by KVM register ID * (see kvm_arm_init_cpreg_list). This allows us to cheaply find --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257033; cv=none; d=zohomail.com; s=zohoarc; b=V8GhNHgYrXOCSyj8Ir80Aqjk3V6KMyO3kvhv6hGDR3KGldpttgXwUruUNisoWQFvtAjlrEnBOWTnn0lc8ibqOvaYVn4UJqnRTMZvyYYJQyGe5fkjf3fRuU5PfoxrkbOuDT38Aux/T0LyB9C5HERGrMGf52eu1SPF3sNzBpIj7Ok= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257033; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=R2+nV0YfiHa2rAN0jtaoq5Xn/wQINVnz22GUz0HS3IA=; b=V0dYYgqNDmxZoj8LUQ5JMire8XRsaCnFfCjKRoD3xt55CDPBlUmNkdh1+l5/yu+RhOyPLPg6X/FmOaGjA9LZfwBAiqiI+XMVVkal8W98kaqGBP38VOi6kJdS3nl9qd+QwrMKpZ73hsJ0wYEDv+IHoc6yMKjiP5+22I3posapIg8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257033648384.9757894704161; Tue, 26 Aug 2025 18:10:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4bQ-0003fS-Hx; Tue, 26 Aug 2025 21:05:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4bP-0003eP-2E for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:05:27 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4bH-0007Eb-Vc for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:05:26 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-771e15ce64eso2216590b3a.0 for ; Tue, 26 Aug 2025 18:05:19 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.05.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:05:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256718; x=1756861518; darn=nongnu.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=R2+nV0YfiHa2rAN0jtaoq5Xn/wQINVnz22GUz0HS3IA=; b=cryPNzqw0CwoHRdtDHT21LLtXsedt+GOLDvfvFLFxL3asKza0Us3DMEqmjK5GIUj0Q Omwvc0rv+TubsJZhDsm5FLfSja4xPMTF4mWLhRY/R5jlVZp4gOHe3NW4huamOtyPD95J +xWOE8sKDLzDn0DIfBBQ+eyWgnv9/zl9BGGGR9N53E9XqnuGRrnyzc53rKueO2UL2ktr quXd0Cr326PVlJvGrhHU8/pZDYWLNGaNIHAD8rX0alcS+yyuw8DtUXZCeCJkubrZHaY3 8FTuqn8t/4m7+HVn2hgf3DZwSxipySgbv8lavwoH8H3l4+GEImJe9qILofBpBclpQnHf bCkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256718; x=1756861518; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=R2+nV0YfiHa2rAN0jtaoq5Xn/wQINVnz22GUz0HS3IA=; b=Gpj/LyikNdrUWGXJ30Bz64tsDy39YCYd4hQSTtOHDjhVNinrc9ZzTDf0Safy7IS/R6 +TO8rHDslYVsPv6J2q1TR28GYsLCoLT6k2gboxrNj5MyP9yGv1w7Kr/1pkE58QhFCdzd yBs9+fZcuol4hq6/v5//perFiL1+XfBpCQvyn8i/aWHiwnEDjs8yC6Sq7qfQtfF/6t8A lgBRwoClqOOUgOXm1zWH4QghPYnOV+wOUVnnBdDFF1GGcpM+tKiwO9AhLPlfGbRs6djZ hjYAj2rY9uHM3dEuW91IKL4/EZKby8kcGODoAM2YqAUrD/bs8tzNfcknwHbsV5yyAoCS +SrQ== X-Gm-Message-State: AOJu0YxyxAYNTzvwyxm1wJVDKQlchLeUrmCb8rbWt8bM4OY3kIu3l3V3 XuRYFtMlY5O7svDoQDajEDpT/LQuA6c9iOI7qGeQAKrsZWIc2iEGE69h9JA233AL7thZqCWXhVI vpSM2y90= X-Gm-Gg: ASbGncu8CxFnCVqZHXYsti+mlFBx1vr7Hly7aovXR1XIbdOGZAHamSBEK55Gs6BSSf2 551EEf3I+MDGWJHjEfn0bE8cw3UOpMOPjQ14Rl8pPOr0GTlzLCINZEC2DMYHQcZ9XNNHOGmLhyv v8GdAHFEDmaZkSHqtztEL9zFieqG7B16uknsxzevI+gkWiLhCGi+7uNAOJ7b9gC8q2DXolj4hPd pDqk+VN+cYHfug+m7JzfNMxkjW6ApEfYvo+dCeUxjCTzq2KfwuEUaXLbkg1NhUHSIu7diE2pZN8 hg2vLSfRd/2P8GnkVn5+JXkZG3qaH4M68Lj+JLBM49MUGQQJ9PXGjKRgk2xx/eswHbUgo78pU+C KYJo1efgipR0YRtcTv9dHnFPdOw== X-Google-Smtp-Source: AGHT+IEFYn2nL4msx4Gpg8XY0gzpXk+l9jXCV2rtoYVxtMfeq680vDflqEC2ipvujB56Ag0jjdx1lQ== X-Received: by 2002:a05:6a00:2989:b0:772:775:88c9 with SMTP id d2e1a72fcca58-77207758ab4mr902426b3a.19.1756256717947; Tue, 26 Aug 2025 18:05:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 03/61] target/arm/hvf: Split out sysreg.c.inc Date: Wed, 27 Aug 2025 11:03:50 +1000 Message-ID: <20250827010453.4059782-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, UPPERCASE_50_75=0.008 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257048038124100 Content-Type: text/plain; charset="utf-8" Move the list of supported sysregs to a reuseable file. Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/hvf/hvf.c | 147 ++---------------------------------- target/arm/hvf/sysreg.c.inc | 146 +++++++++++++++++++++++++++++++++++ 2 files changed, 152 insertions(+), 141 deletions(-) create mode 100644 target/arm/hvf/sysreg.c.inc diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 47b0cd3a35..f0e4b75e6a 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -403,150 +403,15 @@ struct hvf_sreg_match { uint32_t cp_idx; }; =20 +#define DEF_SYSREG(HVF_ID, crn, crm, op0, op1, op2) \ + { HVF_ID, HVF_SYSREG(crn, crm, op0, op1, op2) }, + static struct hvf_sreg_match hvf_sreg_match[] =3D { - { HV_SYS_REG_DBGBVR0_EL1, HVF_SYSREG(0, 0, 2, 0, 4) }, - { HV_SYS_REG_DBGBCR0_EL1, HVF_SYSREG(0, 0, 2, 0, 5) }, - { HV_SYS_REG_DBGWVR0_EL1, HVF_SYSREG(0, 0, 2, 0, 6) }, - { HV_SYS_REG_DBGWCR0_EL1, HVF_SYSREG(0, 0, 2, 0, 7) }, - - { HV_SYS_REG_DBGBVR1_EL1, HVF_SYSREG(0, 1, 2, 0, 4) }, - { HV_SYS_REG_DBGBCR1_EL1, HVF_SYSREG(0, 1, 2, 0, 5) }, - { HV_SYS_REG_DBGWVR1_EL1, HVF_SYSREG(0, 1, 2, 0, 6) }, - { HV_SYS_REG_DBGWCR1_EL1, HVF_SYSREG(0, 1, 2, 0, 7) }, - - { HV_SYS_REG_DBGBVR2_EL1, HVF_SYSREG(0, 2, 2, 0, 4) }, - { HV_SYS_REG_DBGBCR2_EL1, HVF_SYSREG(0, 2, 2, 0, 5) }, - { HV_SYS_REG_DBGWVR2_EL1, HVF_SYSREG(0, 2, 2, 0, 6) }, - { HV_SYS_REG_DBGWCR2_EL1, HVF_SYSREG(0, 2, 2, 0, 7) }, - - { HV_SYS_REG_DBGBVR3_EL1, HVF_SYSREG(0, 3, 2, 0, 4) }, - { HV_SYS_REG_DBGBCR3_EL1, HVF_SYSREG(0, 3, 2, 0, 5) }, - { HV_SYS_REG_DBGWVR3_EL1, HVF_SYSREG(0, 3, 2, 0, 6) }, - { HV_SYS_REG_DBGWCR3_EL1, HVF_SYSREG(0, 3, 2, 0, 7) }, - - { HV_SYS_REG_DBGBVR4_EL1, HVF_SYSREG(0, 4, 2, 0, 4) }, - { HV_SYS_REG_DBGBCR4_EL1, HVF_SYSREG(0, 4, 2, 0, 5) }, - { HV_SYS_REG_DBGWVR4_EL1, HVF_SYSREG(0, 4, 2, 0, 6) }, - { HV_SYS_REG_DBGWCR4_EL1, HVF_SYSREG(0, 4, 2, 0, 7) }, - - { HV_SYS_REG_DBGBVR5_EL1, HVF_SYSREG(0, 5, 2, 0, 4) }, - { HV_SYS_REG_DBGBCR5_EL1, HVF_SYSREG(0, 5, 2, 0, 5) }, - { HV_SYS_REG_DBGWVR5_EL1, HVF_SYSREG(0, 5, 2, 0, 6) }, - { HV_SYS_REG_DBGWCR5_EL1, HVF_SYSREG(0, 5, 2, 0, 7) }, - - { HV_SYS_REG_DBGBVR6_EL1, HVF_SYSREG(0, 6, 2, 0, 4) }, - { HV_SYS_REG_DBGBCR6_EL1, HVF_SYSREG(0, 6, 2, 0, 5) }, - { HV_SYS_REG_DBGWVR6_EL1, HVF_SYSREG(0, 6, 2, 0, 6) }, - { HV_SYS_REG_DBGWCR6_EL1, HVF_SYSREG(0, 6, 2, 0, 7) }, - - { HV_SYS_REG_DBGBVR7_EL1, HVF_SYSREG(0, 7, 2, 0, 4) }, - { HV_SYS_REG_DBGBCR7_EL1, HVF_SYSREG(0, 7, 2, 0, 5) }, - { HV_SYS_REG_DBGWVR7_EL1, HVF_SYSREG(0, 7, 2, 0, 6) }, - { HV_SYS_REG_DBGWCR7_EL1, HVF_SYSREG(0, 7, 2, 0, 7) }, - - { HV_SYS_REG_DBGBVR8_EL1, HVF_SYSREG(0, 8, 2, 0, 4) }, - { HV_SYS_REG_DBGBCR8_EL1, HVF_SYSREG(0, 8, 2, 0, 5) }, - { HV_SYS_REG_DBGWVR8_EL1, HVF_SYSREG(0, 8, 2, 0, 6) }, - { HV_SYS_REG_DBGWCR8_EL1, HVF_SYSREG(0, 8, 2, 0, 7) }, - - { HV_SYS_REG_DBGBVR9_EL1, HVF_SYSREG(0, 9, 2, 0, 4) }, - { HV_SYS_REG_DBGBCR9_EL1, HVF_SYSREG(0, 9, 2, 0, 5) }, - { HV_SYS_REG_DBGWVR9_EL1, HVF_SYSREG(0, 9, 2, 0, 6) }, - { HV_SYS_REG_DBGWCR9_EL1, HVF_SYSREG(0, 9, 2, 0, 7) }, - - { HV_SYS_REG_DBGBVR10_EL1, HVF_SYSREG(0, 10, 2, 0, 4) }, - { HV_SYS_REG_DBGBCR10_EL1, HVF_SYSREG(0, 10, 2, 0, 5) }, - { HV_SYS_REG_DBGWVR10_EL1, HVF_SYSREG(0, 10, 2, 0, 6) }, - { HV_SYS_REG_DBGWCR10_EL1, HVF_SYSREG(0, 10, 2, 0, 7) }, - - { HV_SYS_REG_DBGBVR11_EL1, HVF_SYSREG(0, 11, 2, 0, 4) }, - { HV_SYS_REG_DBGBCR11_EL1, HVF_SYSREG(0, 11, 2, 0, 5) }, - { HV_SYS_REG_DBGWVR11_EL1, HVF_SYSREG(0, 11, 2, 0, 6) }, - { HV_SYS_REG_DBGWCR11_EL1, HVF_SYSREG(0, 11, 2, 0, 7) }, - - { HV_SYS_REG_DBGBVR12_EL1, HVF_SYSREG(0, 12, 2, 0, 4) }, - { HV_SYS_REG_DBGBCR12_EL1, HVF_SYSREG(0, 12, 2, 0, 5) }, - { HV_SYS_REG_DBGWVR12_EL1, HVF_SYSREG(0, 12, 2, 0, 6) }, - { HV_SYS_REG_DBGWCR12_EL1, HVF_SYSREG(0, 12, 2, 0, 7) }, - - { HV_SYS_REG_DBGBVR13_EL1, HVF_SYSREG(0, 13, 2, 0, 4) }, - { HV_SYS_REG_DBGBCR13_EL1, HVF_SYSREG(0, 13, 2, 0, 5) }, - { HV_SYS_REG_DBGWVR13_EL1, HVF_SYSREG(0, 13, 2, 0, 6) }, - { HV_SYS_REG_DBGWCR13_EL1, HVF_SYSREG(0, 13, 2, 0, 7) }, - - { HV_SYS_REG_DBGBVR14_EL1, HVF_SYSREG(0, 14, 2, 0, 4) }, - { HV_SYS_REG_DBGBCR14_EL1, HVF_SYSREG(0, 14, 2, 0, 5) }, - { HV_SYS_REG_DBGWVR14_EL1, HVF_SYSREG(0, 14, 2, 0, 6) }, - { HV_SYS_REG_DBGWCR14_EL1, HVF_SYSREG(0, 14, 2, 0, 7) }, - - { HV_SYS_REG_DBGBVR15_EL1, HVF_SYSREG(0, 15, 2, 0, 4) }, - { HV_SYS_REG_DBGBCR15_EL1, HVF_SYSREG(0, 15, 2, 0, 5) }, - { HV_SYS_REG_DBGWVR15_EL1, HVF_SYSREG(0, 15, 2, 0, 6) }, - { HV_SYS_REG_DBGWCR15_EL1, HVF_SYSREG(0, 15, 2, 0, 7) }, - -#ifdef SYNC_NO_RAW_REGS - /* - * The registers below are manually synced on init because they are - * marked as NO_RAW. We still list them to make number space sync easi= er. - */ - { HV_SYS_REG_MDCCINT_EL1, HVF_SYSREG(0, 2, 2, 0, 0) }, - { HV_SYS_REG_MIDR_EL1, HVF_SYSREG(0, 0, 3, 0, 0) }, - { HV_SYS_REG_MPIDR_EL1, HVF_SYSREG(0, 0, 3, 0, 5) }, - { HV_SYS_REG_ID_AA64PFR0_EL1, HVF_SYSREG(0, 4, 3, 0, 0) }, -#endif - { HV_SYS_REG_ID_AA64PFR1_EL1, HVF_SYSREG(0, 4, 3, 0, 1) }, - { HV_SYS_REG_ID_AA64DFR0_EL1, HVF_SYSREG(0, 5, 3, 0, 0) }, - { HV_SYS_REG_ID_AA64DFR1_EL1, HVF_SYSREG(0, 5, 3, 0, 1) }, - { HV_SYS_REG_ID_AA64ISAR0_EL1, HVF_SYSREG(0, 6, 3, 0, 0) }, - { HV_SYS_REG_ID_AA64ISAR1_EL1, HVF_SYSREG(0, 6, 3, 0, 1) }, -#ifdef SYNC_NO_MMFR0 - /* We keep the hardware MMFR0 around. HW limits are there anyway */ - { HV_SYS_REG_ID_AA64MMFR0_EL1, HVF_SYSREG(0, 7, 3, 0, 0) }, -#endif - { HV_SYS_REG_ID_AA64MMFR1_EL1, HVF_SYSREG(0, 7, 3, 0, 1) }, - { HV_SYS_REG_ID_AA64MMFR2_EL1, HVF_SYSREG(0, 7, 3, 0, 2) }, - /* Add ID_AA64MMFR3_EL1 here when HVF supports it */ - - { HV_SYS_REG_MDSCR_EL1, HVF_SYSREG(0, 2, 2, 0, 2) }, - { HV_SYS_REG_SCTLR_EL1, HVF_SYSREG(1, 0, 3, 0, 0) }, - { HV_SYS_REG_CPACR_EL1, HVF_SYSREG(1, 0, 3, 0, 2) }, - { HV_SYS_REG_TTBR0_EL1, HVF_SYSREG(2, 0, 3, 0, 0) }, - { HV_SYS_REG_TTBR1_EL1, HVF_SYSREG(2, 0, 3, 0, 1) }, - { HV_SYS_REG_TCR_EL1, HVF_SYSREG(2, 0, 3, 0, 2) }, - - { HV_SYS_REG_APIAKEYLO_EL1, HVF_SYSREG(2, 1, 3, 0, 0) }, - { HV_SYS_REG_APIAKEYHI_EL1, HVF_SYSREG(2, 1, 3, 0, 1) }, - { HV_SYS_REG_APIBKEYLO_EL1, HVF_SYSREG(2, 1, 3, 0, 2) }, - { HV_SYS_REG_APIBKEYHI_EL1, HVF_SYSREG(2, 1, 3, 0, 3) }, - { HV_SYS_REG_APDAKEYLO_EL1, HVF_SYSREG(2, 2, 3, 0, 0) }, - { HV_SYS_REG_APDAKEYHI_EL1, HVF_SYSREG(2, 2, 3, 0, 1) }, - { HV_SYS_REG_APDBKEYLO_EL1, HVF_SYSREG(2, 2, 3, 0, 2) }, - { HV_SYS_REG_APDBKEYHI_EL1, HVF_SYSREG(2, 2, 3, 0, 3) }, - { HV_SYS_REG_APGAKEYLO_EL1, HVF_SYSREG(2, 3, 3, 0, 0) }, - { HV_SYS_REG_APGAKEYHI_EL1, HVF_SYSREG(2, 3, 3, 0, 1) }, - - { HV_SYS_REG_SPSR_EL1, HVF_SYSREG(4, 0, 3, 0, 0) }, - { HV_SYS_REG_ELR_EL1, HVF_SYSREG(4, 0, 3, 0, 1) }, - { HV_SYS_REG_SP_EL0, HVF_SYSREG(4, 1, 3, 0, 0) }, - { HV_SYS_REG_AFSR0_EL1, HVF_SYSREG(5, 1, 3, 0, 0) }, - { HV_SYS_REG_AFSR1_EL1, HVF_SYSREG(5, 1, 3, 0, 1) }, - { HV_SYS_REG_ESR_EL1, HVF_SYSREG(5, 2, 3, 0, 0) }, - { HV_SYS_REG_FAR_EL1, HVF_SYSREG(6, 0, 3, 0, 0) }, - { HV_SYS_REG_PAR_EL1, HVF_SYSREG(7, 4, 3, 0, 0) }, - { HV_SYS_REG_MAIR_EL1, HVF_SYSREG(10, 2, 3, 0, 0) }, - { HV_SYS_REG_AMAIR_EL1, HVF_SYSREG(10, 3, 3, 0, 0) }, - { HV_SYS_REG_VBAR_EL1, HVF_SYSREG(12, 0, 3, 0, 0) }, - { HV_SYS_REG_CONTEXTIDR_EL1, HVF_SYSREG(13, 0, 3, 0, 1) }, - { HV_SYS_REG_TPIDR_EL1, HVF_SYSREG(13, 0, 3, 0, 4) }, - { HV_SYS_REG_CNTKCTL_EL1, HVF_SYSREG(14, 1, 3, 0, 0) }, - { HV_SYS_REG_CSSELR_EL1, HVF_SYSREG(0, 0, 3, 2, 0) }, - { HV_SYS_REG_TPIDR_EL0, HVF_SYSREG(13, 0, 3, 3, 2) }, - { HV_SYS_REG_TPIDRRO_EL0, HVF_SYSREG(13, 0, 3, 3, 3) }, - { HV_SYS_REG_CNTV_CTL_EL0, HVF_SYSREG(14, 3, 3, 3, 1) }, - { HV_SYS_REG_CNTV_CVAL_EL0, HVF_SYSREG(14, 3, 3, 3, 2) }, - { HV_SYS_REG_SP_EL1, HVF_SYSREG(4, 1, 3, 4, 0) }, +#include "sysreg.c.inc" }; =20 +#undef DEF_SYSREG + int hvf_get_registers(CPUState *cpu) { ARMCPU *arm_cpu =3D ARM_CPU(cpu); diff --git a/target/arm/hvf/sysreg.c.inc b/target/arm/hvf/sysreg.c.inc new file mode 100644 index 0000000000..222698f1d1 --- /dev/null +++ b/target/arm/hvf/sysreg.c.inc @@ -0,0 +1,146 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +DEF_SYSREG(HV_SYS_REG_DBGBVR0_EL1, 0, 0, 2, 0, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR0_EL1, 0, 0, 2, 0, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR0_EL1, 0, 0, 2, 0, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR0_EL1, 0, 0, 2, 0, 7) + +DEF_SYSREG(HV_SYS_REG_DBGBVR1_EL1, 0, 1, 2, 0, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR1_EL1, 0, 1, 2, 0, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR1_EL1, 0, 1, 2, 0, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR1_EL1, 0, 1, 2, 0, 7) + +DEF_SYSREG(HV_SYS_REG_DBGBVR2_EL1, 0, 2, 2, 0, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR2_EL1, 0, 2, 2, 0, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR2_EL1, 0, 2, 2, 0, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR2_EL1, 0, 2, 2, 0, 7) + +DEF_SYSREG(HV_SYS_REG_DBGBVR3_EL1, 0, 3, 2, 0, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR3_EL1, 0, 3, 2, 0, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR3_EL1, 0, 3, 2, 0, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR3_EL1, 0, 3, 2, 0, 7) + +DEF_SYSREG(HV_SYS_REG_DBGBVR4_EL1, 0, 4, 2, 0, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR4_EL1, 0, 4, 2, 0, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR4_EL1, 0, 4, 2, 0, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR4_EL1, 0, 4, 2, 0, 7) + +DEF_SYSREG(HV_SYS_REG_DBGBVR5_EL1, 0, 5, 2, 0, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR5_EL1, 0, 5, 2, 0, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR5_EL1, 0, 5, 2, 0, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR5_EL1, 0, 5, 2, 0, 7) + +DEF_SYSREG(HV_SYS_REG_DBGBVR6_EL1, 0, 6, 2, 0, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR6_EL1, 0, 6, 2, 0, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR6_EL1, 0, 6, 2, 0, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR6_EL1, 0, 6, 2, 0, 7) + +DEF_SYSREG(HV_SYS_REG_DBGBVR7_EL1, 0, 7, 2, 0, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR7_EL1, 0, 7, 2, 0, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR7_EL1, 0, 7, 2, 0, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR7_EL1, 0, 7, 2, 0, 7) + +DEF_SYSREG(HV_SYS_REG_DBGBVR8_EL1, 0, 8, 2, 0, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR8_EL1, 0, 8, 2, 0, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR8_EL1, 0, 8, 2, 0, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR8_EL1, 0, 8, 2, 0, 7) + +DEF_SYSREG(HV_SYS_REG_DBGBVR9_EL1, 0, 9, 2, 0, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR9_EL1, 0, 9, 2, 0, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR9_EL1, 0, 9, 2, 0, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR9_EL1, 0, 9, 2, 0, 7) + +DEF_SYSREG(HV_SYS_REG_DBGBVR10_EL1, 0, 10, 2, 0, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR10_EL1, 0, 10, 2, 0, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR10_EL1, 0, 10, 2, 0, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR10_EL1, 0, 10, 2, 0, 7) + +DEF_SYSREG(HV_SYS_REG_DBGBVR11_EL1, 0, 11, 2, 0, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR11_EL1, 0, 11, 2, 0, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR11_EL1, 0, 11, 2, 0, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR11_EL1, 0, 11, 2, 0, 7) + +DEF_SYSREG(HV_SYS_REG_DBGBVR12_EL1, 0, 12, 2, 0, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR12_EL1, 0, 12, 2, 0, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR12_EL1, 0, 12, 2, 0, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR12_EL1, 0, 12, 2, 0, 7) + +DEF_SYSREG(HV_SYS_REG_DBGBVR13_EL1, 0, 13, 2, 0, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR13_EL1, 0, 13, 2, 0, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR13_EL1, 0, 13, 2, 0, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR13_EL1, 0, 13, 2, 0, 7) + +DEF_SYSREG(HV_SYS_REG_DBGBVR14_EL1, 0, 14, 2, 0, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR14_EL1, 0, 14, 2, 0, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR14_EL1, 0, 14, 2, 0, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR14_EL1, 0, 14, 2, 0, 7) + +DEF_SYSREG(HV_SYS_REG_DBGBVR15_EL1, 0, 15, 2, 0, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR15_EL1, 0, 15, 2, 0, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR15_EL1, 0, 15, 2, 0, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR15_EL1, 0, 15, 2, 0, 7) + +#ifdef SYNC_NO_RAW_REGS +/* + * The registers below are manually synced on init because they are + * marked as NO_RAW. We still list them to make number space sync easier. + */ +DEF_SYSREG(HV_SYS_REG_MDCCINT_EL1, 0, 2, 2, 0, 0) +DEF_SYSREG(HV_SYS_REG_MIDR_EL1, 0, 0, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_MPIDR_EL1, 0, 0, 3, 0, 5) +DEF_SYSREG(HV_SYS_REG_ID_AA64PFR0_EL1, 0, 4, 3, 0, 0) +#endif + +DEF_SYSREG(HV_SYS_REG_ID_AA64PFR1_EL1, 0, 4, 3, 0, 1) +DEF_SYSREG(HV_SYS_REG_ID_AA64DFR0_EL1, 0, 5, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_ID_AA64DFR1_EL1, 0, 5, 3, 0, 1) +DEF_SYSREG(HV_SYS_REG_ID_AA64ISAR0_EL1, 0, 6, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_ID_AA64ISAR1_EL1, 0, 6, 3, 0, 1) + +#ifdef SYNC_NO_MMFR0 +/* We keep the hardware MMFR0 around. HW limits are there anyway */ +DEF_SYSREG(HV_SYS_REG_ID_AA64MMFR0_EL1, 0, 7, 3, 0, 0) +#endif + +DEF_SYSREG(HV_SYS_REG_ID_AA64MMFR1_EL1, 0, 7, 3, 0, 1) +DEF_SYSREG(HV_SYS_REG_ID_AA64MMFR2_EL1, 0, 7, 3, 0, 2) +/* Add ID_AA64MMFR3_EL1 here when HVF supports it */ + +DEF_SYSREG(HV_SYS_REG_MDSCR_EL1, 0, 2, 2, 0, 2) +DEF_SYSREG(HV_SYS_REG_SCTLR_EL1, 1, 0, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_CPACR_EL1, 1, 0, 3, 0, 2) +DEF_SYSREG(HV_SYS_REG_TTBR0_EL1, 2, 0, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_TTBR1_EL1, 2, 0, 3, 0, 1) +DEF_SYSREG(HV_SYS_REG_TCR_EL1, 2, 0, 3, 0, 2) + +DEF_SYSREG(HV_SYS_REG_APIAKEYLO_EL1, 2, 1, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_APIAKEYHI_EL1, 2, 1, 3, 0, 1) +DEF_SYSREG(HV_SYS_REG_APIBKEYLO_EL1, 2, 1, 3, 0, 2) +DEF_SYSREG(HV_SYS_REG_APIBKEYHI_EL1, 2, 1, 3, 0, 3) +DEF_SYSREG(HV_SYS_REG_APDAKEYLO_EL1, 2, 2, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_APDAKEYHI_EL1, 2, 2, 3, 0, 1) +DEF_SYSREG(HV_SYS_REG_APDBKEYLO_EL1, 2, 2, 3, 0, 2) +DEF_SYSREG(HV_SYS_REG_APDBKEYHI_EL1, 2, 2, 3, 0, 3) +DEF_SYSREG(HV_SYS_REG_APGAKEYLO_EL1, 2, 3, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_APGAKEYHI_EL1, 2, 3, 3, 0, 1) + +DEF_SYSREG(HV_SYS_REG_SPSR_EL1, 4, 0, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_ELR_EL1, 4, 0, 3, 0, 1) +DEF_SYSREG(HV_SYS_REG_SP_EL0, 4, 1, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_AFSR0_EL1, 5, 1, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_AFSR1_EL1, 5, 1, 3, 0, 1) +DEF_SYSREG(HV_SYS_REG_ESR_EL1, 5, 2, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_FAR_EL1, 6, 0, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_PAR_EL1, 7, 4, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_MAIR_EL1, 10, 2, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_AMAIR_EL1, 10, 3, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_VBAR_EL1, 12, 0, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_CONTEXTIDR_EL1, 13, 0, 3, 0, 1) +DEF_SYSREG(HV_SYS_REG_TPIDR_EL1, 13, 0, 3, 0, 4) +DEF_SYSREG(HV_SYS_REG_CNTKCTL_EL1, 14, 1, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_CSSELR_EL1, 0, 0, 3, 2, 0) +DEF_SYSREG(HV_SYS_REG_TPIDR_EL0, 13, 0, 3, 3, 2) +DEF_SYSREG(HV_SYS_REG_TPIDRRO_EL0, 13, 0, 3, 3, 3) +DEF_SYSREG(HV_SYS_REG_CNTV_CTL_EL0, 14, 3, 3, 3, 1) +DEF_SYSREG(HV_SYS_REG_CNTV_CVAL_EL0, 14, 3, 3, 3, 2) +DEF_SYSREG(HV_SYS_REG_SP_EL1, 4, 1, 3, 4, 0) --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756256857; cv=none; d=zohomail.com; s=zohoarc; b=ZqGp7BfapFwryJOmpX/zmAOA8x5nzgvTCDhi7Ero3KIvsQiwxVrEFJBavjgYFvmShSSATvZxTEuP7qiz0xhAcfX6cW5oozw9EY7cL/iTENBQoiyRJvenFxuqMb064q50UzxLO+kAPvydbf4yNrH5dvaka/ddrEZ+6RVxFU6rA+Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756256857; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=W0ZHX+tn8nkbaFtS2dHaq5l6wD0P0NOK8ivJm8HB/sE=; b=DpuJD+G4n4KMJY1TcwdNzqkJlfrtGk2lPycm/5UVjfoV0W1VA2vyY8+S+awnN7Ut0CJxnvoqWjZZ9RgZu3/uAz7p6hQbo5j1010P/NUiZoVKf+2BLDhciTuQNYnHwzhvXArs2uNoIVdYpV+pk4zY+yK72u4sOpZiKR9NZuE2YgE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756256857131542.1605109553152; Tue, 26 Aug 2025 18:07:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4bT-0003gv-DQ; Tue, 26 Aug 2025 21:05:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4bR-0003fz-L8 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:05:29 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4bM-0007FF-4S for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:05:29 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-771f69fd6feso2003516b3a.1 for ; Tue, 26 Aug 2025 18:05:23 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.05.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:05:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256722; x=1756861522; darn=nongnu.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=W0ZHX+tn8nkbaFtS2dHaq5l6wD0P0NOK8ivJm8HB/sE=; b=wQb44mi3s0kJRrTbc5GsVL4jHgROnzTqE8FCWb/KvDPSsfJX3MVOB+zX+vLA3zxSL2 SoeEhzJJwl6+2GO2se8v0eu9IxjYkY3xR+XpMYD61hl1wL9bt0AdZqsuvMb7xlV51h3J zk8uG2UAVfynpv28DABV89DtJd0vMKmG1ZolMFfNYcmnjoVAf+9mK0V8R/SOka5YBAF0 Ul7ztkjblco/eTiTyKmxM5BAEAQMdDzIEXXFyd/TEITzZYmhTAebd38iXLEoHmrYCiF8 TOvMAl4LihImK/ZcDScD5+iK36CkaYUaaK3/1Fu9UQNxpqVi74YE+ckhQmFqwG+13Xo+ w1Uw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256722; x=1756861522; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=W0ZHX+tn8nkbaFtS2dHaq5l6wD0P0NOK8ivJm8HB/sE=; b=g+C6baZGQ4wK0r7FXypPY6ggkCmf6uRYLZiORGKn3WPN/ra8d2DzuDFYczMvsW/MlB Y7M7AH+ua+OcAAR8HJkeTLxOjcvh2nOvDB00Fh+KfaTEbHoPJL/9DK9ACln89ix5NO2G Cnj8idB4ozKrCKHqIaymG2HcOXGs1no6Fk+yWE6NPOytWvxrB7cGD4P4h7UDKDuxHR0r /cBa8WkJXEHcCFhwRoStbPrMUry/7wJtv4Dn7jstBsq4J4zmA2SHrPbAPH5yt+4Y8sI/ XEf1xufutYcXejLzqp8JL2yFGmid7eRnlAyj5qa+0LzQL55ubd9LNhkPx4QHwO+WeI0T kI+A== X-Gm-Message-State: AOJu0YyY6vp/Pi+7GbynlAElh+chdFGqj7oK9ZvgejlppdOiYLLKIrbr 2alMmLancO+KRedpnrwn04Mn1HyQ/UzuvKV7D4rqyTXQhygE9oPh+b7ngaPB6hhJNwpUh8e9XQj xFuG4qy4= X-Gm-Gg: ASbGncvWF90okW5hn5r/wMwiOviXP+AM1McYxAPN67AHzned6bTf+46uSwvuv3RazTj Xs8WQ5fXmiafHG+R6DWNbSqx6JETCDKpxBunPt8DLQGnzNF0iBWThKHIZZTLsIcq8/pQkGDlj7x Jkct1qxO3P/9gFNVURgrOt0p0M3SiwPNT/RORC4k/Bvh2WqJqVwtrETbv004PcJxlqI9crld1tj ycjtpIN51F3nsDHWCEx3z8SRWHcyBTgMIAvnAYHzhJKWlUXAZNo+hrRMMsS+FOmyTHPGfNjOwJQ 7sgQ4dcEgWsVAjFl19jxHZAqg68YpPE9qCzfB+P/r7kMXJdD+ZK494oeWgZvsjbcK9FlbJIvu92 khNyY/f6CU6NaP5Mbt3dQWDP7jw== X-Google-Smtp-Source: AGHT+IHp9JMUDaUPvFVZUSXN8/WZtHQuHKk+gEeUXJsCBdAhtiyDOjKl+fT8uT6sUPNVkuRxov8PDQ== X-Received: by 2002:a05:6a00:248f:b0:770:34f9:49d2 with SMTP id d2e1a72fcca58-77034f94ca1mr17500150b3a.1.1756256722350; Tue, 26 Aug 2025 18:05:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 4/7] target/arm/hvf: Add KVMID_TO_HVF, HVF_TO_KVMID Date: Wed, 27 Aug 2025 11:03:51 +1000 Message-ID: <20250827010453.4059782-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756256858787124100 Content-Type: text/plain; charset="utf-8" Conversion between KVM system registers ids and the HVF system register ids is trivial. Signed-off-by: Richard Henderson --- target/arm/hvf/hvf.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index f0e4b75e6a..2577dc1c0c 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -403,6 +403,26 @@ struct hvf_sreg_match { uint32_t cp_idx; }; =20 +/* + * QEMU uses KVM system register ids in the migration format. + * Conveniently, HVF uses the same encoding of the op* and cr* parameters + * within the low 16 bits of the ids. Thus conversion between the + * formats is trivial. + */ + +#define KVMID_TO_HVF(KVM) ((KVM) & 0xffff) +#define HVF_TO_KVMID(HVF) \ + (CP_REG_ARM64 | CP_REG_SIZE_U64 | CP_REG_ARM64_SYSREG | (HVF)) + +/* Verify this at compile-time. */ + +#define DEF_SYSREG(HVF_ID, ...) \ + QEMU_BUILD_BUG_ON(HVF_ID !=3D KVMID_TO_HVF(KVMID_AA64_SYS_REG64(__VA_ARG= S__))); + +#include "sysreg.c.inc" + +#undef DEF_SYSREG + #define DEF_SYSREG(HVF_ID, crn, crm, op0, op1, op2) \ { HVF_ID, HVF_SYSREG(crn, crm, op0, op1, op2) }, =20 --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756256798; cv=none; d=zohomail.com; s=zohoarc; b=Ra5ZoyIzBMcLH+Yk2f6rKOUXCZb16UultZbX4qj9oXw+QSB0eqntKYPtwbyUT+2tK2lnvsZqnbD5bwNHSrOWRDiHk1dHQnvgN0d92TAWte0qeC6jSU61CFHiF6QM3hOPRQW3QC8nUKz2ft4+VyHqNQCrvL7kOBoKj7oXpnxsp/4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756256798; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Y2cCTehMKrZLqJKgyXQCepmoXZe3IhDulQtSCqILAaA=; b=FrutWU5nq3RrWcL9uo0mnvXxPnR1YGpng9/4u1ybTU9NvzYWvIPORL6/7SMkGoaioA3l0Pl205QL6kX++ZbbRGGNEjKXt614g429wUle3lq9mEr+p2YYsIbDQk3d7CHKyF+VJp6SA2fMfopTRtVHeksFroX0oZe0J99anUys40M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756256798151116.06293866416559; Tue, 26 Aug 2025 18:06:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4bX-0003j8-9S; Tue, 26 Aug 2025 21:05:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4bT-0003hP-Mj for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:05:31 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4bQ-0007G9-O6 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:05:31 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-76e1fc69f86so403353b3a.0 for ; Tue, 26 Aug 2025 18:05:28 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.05.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:05:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256727; x=1756861527; darn=nongnu.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=Y2cCTehMKrZLqJKgyXQCepmoXZe3IhDulQtSCqILAaA=; b=sdgBPSuiVtfVi21tEeVAJ/lr5wtpK67bZPaDQG+XHe8JGaW5L6vxML8Sc19Ji5g29z 3aXcAUrx1fg9QCQpOjxb+sRxHhG02A5v4nxQOt27E9q33Jd4WQQCpkv33do7SW+yzgDf VR35sagIrXP7hohI5p/DnW8hc5QQ0i/Z5RjPrLOe9D5rAhq9Ouy2jm19JMtnR/tdbC/D kqMysess4iYAp97ESNkwPvy2EWmS9KD4c03FlUEj3t2q+XCbvM3aIzVtNnWIohdaw91C sp/xiYrojWmdkfsCb/ckqxKqotm/f9U8MV76mD3xQPDT+5bYuK6b72Utq06lYzA1tZ6k eWgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256727; x=1756861527; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Y2cCTehMKrZLqJKgyXQCepmoXZe3IhDulQtSCqILAaA=; b=qJMUOvaRkq4ZQ3W2qNJhaWffX43frN2eqkiTp6Y+d7Om346LKdP0PA4mgsmSbT8oEn kJ4PD7K8120UQePWWeS+WZlfHeP3l0ybfWOCkvPrdI1z8usLSNlKdHYV+DUTvLwpxGwX unWSdVYj3Dfbgby12tEtUL9H6rZzj9YyRS1JIdIbGJ/H7W5+LzLH5gQpLE65y5pS7cKb AA+cQBqPhogJigj4QGkqT2qzUO/gdqyk7JPMzO+P0MMLCpGF6pTjm+MqJjEbU0PlkNOn fg2cVFP2IEMS7sZ/7V0d1CN3dzFwvuaXTMUJt3A5eEA2TJr8KA60Z0zVmiSNDIkB08t2 yE2A== X-Gm-Message-State: AOJu0YwyqKk4pDfVmX/CITSUYzBEQmrrr+eDVyay29ezbTFHConbgSyV UI3GeoU0U+pHPEi3HsASSTFc0YdVqZjdbYpVE3b5U+i+Nj907dIuDCwyrSN2NrtXuvbhNBbh0Ne RqB5+uiM= X-Gm-Gg: ASbGncvUa8XEsohbRgpB9yURuvXNNYrnDI3D52202cl3G1bDi2fav7e4wtDnbVKwMJi 9rb0/MuzTkj9YJO6wPvPSa7Ppocn06czHcqH7YWmIccqhy52Q041DWxrLLP/RKpGaAdC3aQu1k4 8CXIgZhOOK8YHJw/1a62xw9U7hmh7ji31e9kXLIHuYYy6gBWhc37WBBfBraYhis74fHv3S4erk1 Id0/9qOD+7c9kPYimxJ+txBwTv3TRyg+ShlrmhrDcDDbrcHyNFqZIuaplVUvGo8hYsglD0lqd3O WN46i19hogKsYnHKyuZRfNF8tow88yAvX82dCwxpqPlOAGemnOTt0w1TB7FOrCyYNaShccGKDVG cUhXCqq854UvFGDS/vEz40wEfvQ== X-Google-Smtp-Source: AGHT+IFHpEu3ap8CMqQs2nMeWpcNhP9o+6ZThLxE6aks7aYTuYIO7+OZxlGe9VdrXcKQdfdrXACm4Q== X-Received: by 2002:a05:6a21:328c:b0:243:25b0:232b with SMTP id adf61e73a8af0-2438fad2b55mr4910974637.9.1756256726700; Tue, 26 Aug 2025 18:05:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 04/61] target/arm/hvf: Reorder DEF_SYSREG arguments Date: Wed, 27 Aug 2025 11:03:52 +1000 Message-ID: <20250827010453.4059782-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42e.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, UPPERCASE_50_75=0.008 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756256800457124100 Content-Type: text/plain; charset="utf-8" The order of the parameters in the Arm ARM is op0, op1, crn, crm, op2 Reorder the arguments of DEF_SYSREG to match. Mechanical change to sysreg.c.inc using sed 's/\([^,]*\),\([^,]*\),\([^,]*\),\([^,]*\),\([^,]*\)/\1,\4,\5,\2,\3/' Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/hvf/hvf.c | 2 +- target/arm/hvf/sysreg.c.inc | 224 ++++++++++++++++++------------------ 2 files changed, 113 insertions(+), 113 deletions(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index f0e4b75e6a..7b0413093d 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -403,7 +403,7 @@ struct hvf_sreg_match { uint32_t cp_idx; }; =20 -#define DEF_SYSREG(HVF_ID, crn, crm, op0, op1, op2) \ +#define DEF_SYSREG(HVF_ID, op0, op1, crn, crm, op2) \ { HVF_ID, HVF_SYSREG(crn, crm, op0, op1, op2) }, =20 static struct hvf_sreg_match hvf_sreg_match[] =3D { diff --git a/target/arm/hvf/sysreg.c.inc b/target/arm/hvf/sysreg.c.inc index 222698f1d1..f2276d534e 100644 --- a/target/arm/hvf/sysreg.c.inc +++ b/target/arm/hvf/sysreg.c.inc @@ -1,146 +1,146 @@ /* SPDX-License-Identifier: GPL-2.0-or-later */ =20 -DEF_SYSREG(HV_SYS_REG_DBGBVR0_EL1, 0, 0, 2, 0, 4) -DEF_SYSREG(HV_SYS_REG_DBGBCR0_EL1, 0, 0, 2, 0, 5) -DEF_SYSREG(HV_SYS_REG_DBGWVR0_EL1, 0, 0, 2, 0, 6) -DEF_SYSREG(HV_SYS_REG_DBGWCR0_EL1, 0, 0, 2, 0, 7) +DEF_SYSREG(HV_SYS_REG_DBGBVR0_EL1, 2, 0, 0, 0, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR0_EL1, 2, 0, 0, 0, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR0_EL1, 2, 0, 0, 0, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR0_EL1, 2, 0, 0, 0, 7) =20 -DEF_SYSREG(HV_SYS_REG_DBGBVR1_EL1, 0, 1, 2, 0, 4) -DEF_SYSREG(HV_SYS_REG_DBGBCR1_EL1, 0, 1, 2, 0, 5) -DEF_SYSREG(HV_SYS_REG_DBGWVR1_EL1, 0, 1, 2, 0, 6) -DEF_SYSREG(HV_SYS_REG_DBGWCR1_EL1, 0, 1, 2, 0, 7) +DEF_SYSREG(HV_SYS_REG_DBGBVR1_EL1, 2, 0, 0, 1, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR1_EL1, 2, 0, 0, 1, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR1_EL1, 2, 0, 0, 1, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR1_EL1, 2, 0, 0, 1, 7) =20 -DEF_SYSREG(HV_SYS_REG_DBGBVR2_EL1, 0, 2, 2, 0, 4) -DEF_SYSREG(HV_SYS_REG_DBGBCR2_EL1, 0, 2, 2, 0, 5) -DEF_SYSREG(HV_SYS_REG_DBGWVR2_EL1, 0, 2, 2, 0, 6) -DEF_SYSREG(HV_SYS_REG_DBGWCR2_EL1, 0, 2, 2, 0, 7) +DEF_SYSREG(HV_SYS_REG_DBGBVR2_EL1, 2, 0, 0, 2, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR2_EL1, 2, 0, 0, 2, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR2_EL1, 2, 0, 0, 2, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR2_EL1, 2, 0, 0, 2, 7) =20 -DEF_SYSREG(HV_SYS_REG_DBGBVR3_EL1, 0, 3, 2, 0, 4) -DEF_SYSREG(HV_SYS_REG_DBGBCR3_EL1, 0, 3, 2, 0, 5) -DEF_SYSREG(HV_SYS_REG_DBGWVR3_EL1, 0, 3, 2, 0, 6) -DEF_SYSREG(HV_SYS_REG_DBGWCR3_EL1, 0, 3, 2, 0, 7) +DEF_SYSREG(HV_SYS_REG_DBGBVR3_EL1, 2, 0, 0, 3, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR3_EL1, 2, 0, 0, 3, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR3_EL1, 2, 0, 0, 3, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR3_EL1, 2, 0, 0, 3, 7) =20 -DEF_SYSREG(HV_SYS_REG_DBGBVR4_EL1, 0, 4, 2, 0, 4) -DEF_SYSREG(HV_SYS_REG_DBGBCR4_EL1, 0, 4, 2, 0, 5) -DEF_SYSREG(HV_SYS_REG_DBGWVR4_EL1, 0, 4, 2, 0, 6) -DEF_SYSREG(HV_SYS_REG_DBGWCR4_EL1, 0, 4, 2, 0, 7) +DEF_SYSREG(HV_SYS_REG_DBGBVR4_EL1, 2, 0, 0, 4, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR4_EL1, 2, 0, 0, 4, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR4_EL1, 2, 0, 0, 4, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR4_EL1, 2, 0, 0, 4, 7) =20 -DEF_SYSREG(HV_SYS_REG_DBGBVR5_EL1, 0, 5, 2, 0, 4) -DEF_SYSREG(HV_SYS_REG_DBGBCR5_EL1, 0, 5, 2, 0, 5) -DEF_SYSREG(HV_SYS_REG_DBGWVR5_EL1, 0, 5, 2, 0, 6) -DEF_SYSREG(HV_SYS_REG_DBGWCR5_EL1, 0, 5, 2, 0, 7) +DEF_SYSREG(HV_SYS_REG_DBGBVR5_EL1, 2, 0, 0, 5, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR5_EL1, 2, 0, 0, 5, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR5_EL1, 2, 0, 0, 5, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR5_EL1, 2, 0, 0, 5, 7) =20 -DEF_SYSREG(HV_SYS_REG_DBGBVR6_EL1, 0, 6, 2, 0, 4) -DEF_SYSREG(HV_SYS_REG_DBGBCR6_EL1, 0, 6, 2, 0, 5) -DEF_SYSREG(HV_SYS_REG_DBGWVR6_EL1, 0, 6, 2, 0, 6) -DEF_SYSREG(HV_SYS_REG_DBGWCR6_EL1, 0, 6, 2, 0, 7) +DEF_SYSREG(HV_SYS_REG_DBGBVR6_EL1, 2, 0, 0, 6, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR6_EL1, 2, 0, 0, 6, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR6_EL1, 2, 0, 0, 6, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR6_EL1, 2, 0, 0, 6, 7) =20 -DEF_SYSREG(HV_SYS_REG_DBGBVR7_EL1, 0, 7, 2, 0, 4) -DEF_SYSREG(HV_SYS_REG_DBGBCR7_EL1, 0, 7, 2, 0, 5) -DEF_SYSREG(HV_SYS_REG_DBGWVR7_EL1, 0, 7, 2, 0, 6) -DEF_SYSREG(HV_SYS_REG_DBGWCR7_EL1, 0, 7, 2, 0, 7) +DEF_SYSREG(HV_SYS_REG_DBGBVR7_EL1, 2, 0, 0, 7, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR7_EL1, 2, 0, 0, 7, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR7_EL1, 2, 0, 0, 7, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR7_EL1, 2, 0, 0, 7, 7) =20 -DEF_SYSREG(HV_SYS_REG_DBGBVR8_EL1, 0, 8, 2, 0, 4) -DEF_SYSREG(HV_SYS_REG_DBGBCR8_EL1, 0, 8, 2, 0, 5) -DEF_SYSREG(HV_SYS_REG_DBGWVR8_EL1, 0, 8, 2, 0, 6) -DEF_SYSREG(HV_SYS_REG_DBGWCR8_EL1, 0, 8, 2, 0, 7) +DEF_SYSREG(HV_SYS_REG_DBGBVR8_EL1, 2, 0, 0, 8, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR8_EL1, 2, 0, 0, 8, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR8_EL1, 2, 0, 0, 8, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR8_EL1, 2, 0, 0, 8, 7) =20 -DEF_SYSREG(HV_SYS_REG_DBGBVR9_EL1, 0, 9, 2, 0, 4) -DEF_SYSREG(HV_SYS_REG_DBGBCR9_EL1, 0, 9, 2, 0, 5) -DEF_SYSREG(HV_SYS_REG_DBGWVR9_EL1, 0, 9, 2, 0, 6) -DEF_SYSREG(HV_SYS_REG_DBGWCR9_EL1, 0, 9, 2, 0, 7) +DEF_SYSREG(HV_SYS_REG_DBGBVR9_EL1, 2, 0, 0, 9, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR9_EL1, 2, 0, 0, 9, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR9_EL1, 2, 0, 0, 9, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR9_EL1, 2, 0, 0, 9, 7) =20 -DEF_SYSREG(HV_SYS_REG_DBGBVR10_EL1, 0, 10, 2, 0, 4) -DEF_SYSREG(HV_SYS_REG_DBGBCR10_EL1, 0, 10, 2, 0, 5) -DEF_SYSREG(HV_SYS_REG_DBGWVR10_EL1, 0, 10, 2, 0, 6) -DEF_SYSREG(HV_SYS_REG_DBGWCR10_EL1, 0, 10, 2, 0, 7) +DEF_SYSREG(HV_SYS_REG_DBGBVR10_EL1, 2, 0, 0, 10, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR10_EL1, 2, 0, 0, 10, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR10_EL1, 2, 0, 0, 10, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR10_EL1, 2, 0, 0, 10, 7) =20 -DEF_SYSREG(HV_SYS_REG_DBGBVR11_EL1, 0, 11, 2, 0, 4) -DEF_SYSREG(HV_SYS_REG_DBGBCR11_EL1, 0, 11, 2, 0, 5) -DEF_SYSREG(HV_SYS_REG_DBGWVR11_EL1, 0, 11, 2, 0, 6) -DEF_SYSREG(HV_SYS_REG_DBGWCR11_EL1, 0, 11, 2, 0, 7) +DEF_SYSREG(HV_SYS_REG_DBGBVR11_EL1, 2, 0, 0, 11, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR11_EL1, 2, 0, 0, 11, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR11_EL1, 2, 0, 0, 11, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR11_EL1, 2, 0, 0, 11, 7) =20 -DEF_SYSREG(HV_SYS_REG_DBGBVR12_EL1, 0, 12, 2, 0, 4) -DEF_SYSREG(HV_SYS_REG_DBGBCR12_EL1, 0, 12, 2, 0, 5) -DEF_SYSREG(HV_SYS_REG_DBGWVR12_EL1, 0, 12, 2, 0, 6) -DEF_SYSREG(HV_SYS_REG_DBGWCR12_EL1, 0, 12, 2, 0, 7) +DEF_SYSREG(HV_SYS_REG_DBGBVR12_EL1, 2, 0, 0, 12, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR12_EL1, 2, 0, 0, 12, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR12_EL1, 2, 0, 0, 12, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR12_EL1, 2, 0, 0, 12, 7) =20 -DEF_SYSREG(HV_SYS_REG_DBGBVR13_EL1, 0, 13, 2, 0, 4) -DEF_SYSREG(HV_SYS_REG_DBGBCR13_EL1, 0, 13, 2, 0, 5) -DEF_SYSREG(HV_SYS_REG_DBGWVR13_EL1, 0, 13, 2, 0, 6) -DEF_SYSREG(HV_SYS_REG_DBGWCR13_EL1, 0, 13, 2, 0, 7) +DEF_SYSREG(HV_SYS_REG_DBGBVR13_EL1, 2, 0, 0, 13, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR13_EL1, 2, 0, 0, 13, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR13_EL1, 2, 0, 0, 13, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR13_EL1, 2, 0, 0, 13, 7) =20 -DEF_SYSREG(HV_SYS_REG_DBGBVR14_EL1, 0, 14, 2, 0, 4) -DEF_SYSREG(HV_SYS_REG_DBGBCR14_EL1, 0, 14, 2, 0, 5) -DEF_SYSREG(HV_SYS_REG_DBGWVR14_EL1, 0, 14, 2, 0, 6) -DEF_SYSREG(HV_SYS_REG_DBGWCR14_EL1, 0, 14, 2, 0, 7) +DEF_SYSREG(HV_SYS_REG_DBGBVR14_EL1, 2, 0, 0, 14, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR14_EL1, 2, 0, 0, 14, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR14_EL1, 2, 0, 0, 14, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR14_EL1, 2, 0, 0, 14, 7) =20 -DEF_SYSREG(HV_SYS_REG_DBGBVR15_EL1, 0, 15, 2, 0, 4) -DEF_SYSREG(HV_SYS_REG_DBGBCR15_EL1, 0, 15, 2, 0, 5) -DEF_SYSREG(HV_SYS_REG_DBGWVR15_EL1, 0, 15, 2, 0, 6) -DEF_SYSREG(HV_SYS_REG_DBGWCR15_EL1, 0, 15, 2, 0, 7) +DEF_SYSREG(HV_SYS_REG_DBGBVR15_EL1, 2, 0, 0, 15, 4) +DEF_SYSREG(HV_SYS_REG_DBGBCR15_EL1, 2, 0, 0, 15, 5) +DEF_SYSREG(HV_SYS_REG_DBGWVR15_EL1, 2, 0, 0, 15, 6) +DEF_SYSREG(HV_SYS_REG_DBGWCR15_EL1, 2, 0, 0, 15, 7) =20 #ifdef SYNC_NO_RAW_REGS /* * The registers below are manually synced on init because they are * marked as NO_RAW. We still list them to make number space sync easier. */ -DEF_SYSREG(HV_SYS_REG_MDCCINT_EL1, 0, 2, 2, 0, 0) -DEF_SYSREG(HV_SYS_REG_MIDR_EL1, 0, 0, 3, 0, 0) -DEF_SYSREG(HV_SYS_REG_MPIDR_EL1, 0, 0, 3, 0, 5) -DEF_SYSREG(HV_SYS_REG_ID_AA64PFR0_EL1, 0, 4, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_MDCCINT_EL1, 2, 0, 0, 2, 0) +DEF_SYSREG(HV_SYS_REG_MIDR_EL1, 3, 0, 0, 0, 0) +DEF_SYSREG(HV_SYS_REG_MPIDR_EL1, 3, 0, 0, 0, 5) +DEF_SYSREG(HV_SYS_REG_ID_AA64PFR0_EL1, 3, 0, 0, 4, 0) #endif =20 -DEF_SYSREG(HV_SYS_REG_ID_AA64PFR1_EL1, 0, 4, 3, 0, 1) -DEF_SYSREG(HV_SYS_REG_ID_AA64DFR0_EL1, 0, 5, 3, 0, 0) -DEF_SYSREG(HV_SYS_REG_ID_AA64DFR1_EL1, 0, 5, 3, 0, 1) -DEF_SYSREG(HV_SYS_REG_ID_AA64ISAR0_EL1, 0, 6, 3, 0, 0) -DEF_SYSREG(HV_SYS_REG_ID_AA64ISAR1_EL1, 0, 6, 3, 0, 1) +DEF_SYSREG(HV_SYS_REG_ID_AA64PFR1_EL1, 3, 0, 0, 4, 1) +DEF_SYSREG(HV_SYS_REG_ID_AA64DFR0_EL1, 3, 0, 0, 5, 0) +DEF_SYSREG(HV_SYS_REG_ID_AA64DFR1_EL1, 3, 0, 0, 5, 1) +DEF_SYSREG(HV_SYS_REG_ID_AA64ISAR0_EL1, 3, 0, 0, 6, 0) +DEF_SYSREG(HV_SYS_REG_ID_AA64ISAR1_EL1, 3, 0, 0, 6, 1) =20 #ifdef SYNC_NO_MMFR0 /* We keep the hardware MMFR0 around. HW limits are there anyway */ -DEF_SYSREG(HV_SYS_REG_ID_AA64MMFR0_EL1, 0, 7, 3, 0, 0) +DEF_SYSREG(HV_SYS_REG_ID_AA64MMFR0_EL1, 3, 0, 0, 7, 0) #endif =20 -DEF_SYSREG(HV_SYS_REG_ID_AA64MMFR1_EL1, 0, 7, 3, 0, 1) -DEF_SYSREG(HV_SYS_REG_ID_AA64MMFR2_EL1, 0, 7, 3, 0, 2) +DEF_SYSREG(HV_SYS_REG_ID_AA64MMFR1_EL1, 3, 0, 0, 7, 1) +DEF_SYSREG(HV_SYS_REG_ID_AA64MMFR2_EL1, 3, 0, 0, 7, 2) /* Add ID_AA64MMFR3_EL1 here when HVF supports it */ =20 -DEF_SYSREG(HV_SYS_REG_MDSCR_EL1, 0, 2, 2, 0, 2) -DEF_SYSREG(HV_SYS_REG_SCTLR_EL1, 1, 0, 3, 0, 0) -DEF_SYSREG(HV_SYS_REG_CPACR_EL1, 1, 0, 3, 0, 2) -DEF_SYSREG(HV_SYS_REG_TTBR0_EL1, 2, 0, 3, 0, 0) -DEF_SYSREG(HV_SYS_REG_TTBR1_EL1, 2, 0, 3, 0, 1) -DEF_SYSREG(HV_SYS_REG_TCR_EL1, 2, 0, 3, 0, 2) +DEF_SYSREG(HV_SYS_REG_MDSCR_EL1, 2, 0, 0, 2, 2) +DEF_SYSREG(HV_SYS_REG_SCTLR_EL1, 3, 0, 1, 0, 0) +DEF_SYSREG(HV_SYS_REG_CPACR_EL1, 3, 0, 1, 0, 2) +DEF_SYSREG(HV_SYS_REG_TTBR0_EL1, 3, 0, 2, 0, 0) +DEF_SYSREG(HV_SYS_REG_TTBR1_EL1, 3, 0, 2, 0, 1) +DEF_SYSREG(HV_SYS_REG_TCR_EL1, 3, 0, 2, 0, 2) =20 -DEF_SYSREG(HV_SYS_REG_APIAKEYLO_EL1, 2, 1, 3, 0, 0) -DEF_SYSREG(HV_SYS_REG_APIAKEYHI_EL1, 2, 1, 3, 0, 1) -DEF_SYSREG(HV_SYS_REG_APIBKEYLO_EL1, 2, 1, 3, 0, 2) -DEF_SYSREG(HV_SYS_REG_APIBKEYHI_EL1, 2, 1, 3, 0, 3) -DEF_SYSREG(HV_SYS_REG_APDAKEYLO_EL1, 2, 2, 3, 0, 0) -DEF_SYSREG(HV_SYS_REG_APDAKEYHI_EL1, 2, 2, 3, 0, 1) -DEF_SYSREG(HV_SYS_REG_APDBKEYLO_EL1, 2, 2, 3, 0, 2) -DEF_SYSREG(HV_SYS_REG_APDBKEYHI_EL1, 2, 2, 3, 0, 3) -DEF_SYSREG(HV_SYS_REG_APGAKEYLO_EL1, 2, 3, 3, 0, 0) -DEF_SYSREG(HV_SYS_REG_APGAKEYHI_EL1, 2, 3, 3, 0, 1) +DEF_SYSREG(HV_SYS_REG_APIAKEYLO_EL1, 3, 0, 2, 1, 0) +DEF_SYSREG(HV_SYS_REG_APIAKEYHI_EL1, 3, 0, 2, 1, 1) +DEF_SYSREG(HV_SYS_REG_APIBKEYLO_EL1, 3, 0, 2, 1, 2) +DEF_SYSREG(HV_SYS_REG_APIBKEYHI_EL1, 3, 0, 2, 1, 3) +DEF_SYSREG(HV_SYS_REG_APDAKEYLO_EL1, 3, 0, 2, 2, 0) +DEF_SYSREG(HV_SYS_REG_APDAKEYHI_EL1, 3, 0, 2, 2, 1) +DEF_SYSREG(HV_SYS_REG_APDBKEYLO_EL1, 3, 0, 2, 2, 2) +DEF_SYSREG(HV_SYS_REG_APDBKEYHI_EL1, 3, 0, 2, 2, 3) +DEF_SYSREG(HV_SYS_REG_APGAKEYLO_EL1, 3, 0, 2, 3, 0) +DEF_SYSREG(HV_SYS_REG_APGAKEYHI_EL1, 3, 0, 2, 3, 1) =20 -DEF_SYSREG(HV_SYS_REG_SPSR_EL1, 4, 0, 3, 0, 0) -DEF_SYSREG(HV_SYS_REG_ELR_EL1, 4, 0, 3, 0, 1) -DEF_SYSREG(HV_SYS_REG_SP_EL0, 4, 1, 3, 0, 0) -DEF_SYSREG(HV_SYS_REG_AFSR0_EL1, 5, 1, 3, 0, 0) -DEF_SYSREG(HV_SYS_REG_AFSR1_EL1, 5, 1, 3, 0, 1) -DEF_SYSREG(HV_SYS_REG_ESR_EL1, 5, 2, 3, 0, 0) -DEF_SYSREG(HV_SYS_REG_FAR_EL1, 6, 0, 3, 0, 0) -DEF_SYSREG(HV_SYS_REG_PAR_EL1, 7, 4, 3, 0, 0) -DEF_SYSREG(HV_SYS_REG_MAIR_EL1, 10, 2, 3, 0, 0) -DEF_SYSREG(HV_SYS_REG_AMAIR_EL1, 10, 3, 3, 0, 0) -DEF_SYSREG(HV_SYS_REG_VBAR_EL1, 12, 0, 3, 0, 0) -DEF_SYSREG(HV_SYS_REG_CONTEXTIDR_EL1, 13, 0, 3, 0, 1) -DEF_SYSREG(HV_SYS_REG_TPIDR_EL1, 13, 0, 3, 0, 4) -DEF_SYSREG(HV_SYS_REG_CNTKCTL_EL1, 14, 1, 3, 0, 0) -DEF_SYSREG(HV_SYS_REG_CSSELR_EL1, 0, 0, 3, 2, 0) -DEF_SYSREG(HV_SYS_REG_TPIDR_EL0, 13, 0, 3, 3, 2) -DEF_SYSREG(HV_SYS_REG_TPIDRRO_EL0, 13, 0, 3, 3, 3) -DEF_SYSREG(HV_SYS_REG_CNTV_CTL_EL0, 14, 3, 3, 3, 1) -DEF_SYSREG(HV_SYS_REG_CNTV_CVAL_EL0, 14, 3, 3, 3, 2) -DEF_SYSREG(HV_SYS_REG_SP_EL1, 4, 1, 3, 4, 0) +DEF_SYSREG(HV_SYS_REG_SPSR_EL1, 3, 0, 4, 0, 0) +DEF_SYSREG(HV_SYS_REG_ELR_EL1, 3, 0, 4, 0, 1) +DEF_SYSREG(HV_SYS_REG_SP_EL0, 3, 0, 4, 1, 0) +DEF_SYSREG(HV_SYS_REG_AFSR0_EL1, 3, 0, 5, 1, 0) +DEF_SYSREG(HV_SYS_REG_AFSR1_EL1, 3, 0, 5, 1, 1) +DEF_SYSREG(HV_SYS_REG_ESR_EL1, 3, 0, 5, 2, 0) +DEF_SYSREG(HV_SYS_REG_FAR_EL1, 3, 0, 6, 0, 0) +DEF_SYSREG(HV_SYS_REG_PAR_EL1, 3, 0, 7, 4, 0) +DEF_SYSREG(HV_SYS_REG_MAIR_EL1, 3, 0, 10, 2, 0) +DEF_SYSREG(HV_SYS_REG_AMAIR_EL1, 3, 0, 10, 3, 0) +DEF_SYSREG(HV_SYS_REG_VBAR_EL1, 3, 0, 12, 0, 0) +DEF_SYSREG(HV_SYS_REG_CONTEXTIDR_EL1, 3, 0, 13, 0, 1) +DEF_SYSREG(HV_SYS_REG_TPIDR_EL1, 3, 0, 13, 0, 4) +DEF_SYSREG(HV_SYS_REG_CNTKCTL_EL1, 3, 0, 14, 1, 0) +DEF_SYSREG(HV_SYS_REG_CSSELR_EL1, 3, 2, 0, 0, 0) +DEF_SYSREG(HV_SYS_REG_TPIDR_EL0, 3, 3, 13, 0, 2) +DEF_SYSREG(HV_SYS_REG_TPIDRRO_EL0, 3, 3, 13, 0, 3) +DEF_SYSREG(HV_SYS_REG_CNTV_CTL_EL0, 3, 3, 14, 3, 1) +DEF_SYSREG(HV_SYS_REG_CNTV_CVAL_EL0, 3, 3, 14, 3, 2) +DEF_SYSREG(HV_SYS_REG_SP_EL1, 3, 4, 4, 1, 0) --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756256857; cv=none; d=zohomail.com; s=zohoarc; b=hfcGqbO+KHpi/gcOiix8Kdzt5otb/W33yJQXF2YAPDR/YsZOWz4E5r7NbuVrhp9ekOTXSHQ4OI4IfGuS0nuAqtrtMkMep0+6A5STvng6CwPmThgvBEBqWi2eEWka4rR7xKMhs3rrolptZJv/Z0q/vs39oG4JlFkaEZg9kGfgGfc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756256857; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=j4IRJlXM6WlOC6HdRLDZoPfNGaWNXGIS7v/EQ+dzuD0=; b=Bb6Dv2it6VM/oSKEkMYJFPrAV+NHe3lTNl5HXY1tc8+cDo70e8vjieXiSH8eeipNqf/FW8ht7f7444aqK4Td1uBfW+aIkGHbVbDx7/9hjCbN/wPSnGte181t1so/LJlqEiVE2nptNf0ZSAkec/pbNwTDL9PfF+a+tCjFj1tApms= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756256857050848.6353835884622; Tue, 26 Aug 2025 18:07:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4be-0003lA-BV; Tue, 26 Aug 2025 21:05:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4bW-0003jB-Oj for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:05:35 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4bU-0007Gu-MO for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:05:34 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-7704f3c4708so4272492b3a.1 for ; Tue, 26 Aug 2025 18:05:32 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.05.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:05:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256730; x=1756861530; darn=nongnu.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=j4IRJlXM6WlOC6HdRLDZoPfNGaWNXGIS7v/EQ+dzuD0=; b=ND8ogBivGoQ3ytY6EiM7geYKKsHDQwjcw97jezQZIuTwms8cndtttZ08jo/OGOxQIT Tp4dn7MRrtFkiPDD+zg2ifYXIJBPkIhNEN5H9y2QH8ReeFqh0vyU2gM60VU9oX8higso tL/FyhcLiyKraZYja03c/YHsm79WAGFVTts+/qymlaDSVfiiyvEo5O3nNlT+udxGAXlJ Ze6rjvTXWeVU9Eq8n9OdSCYBet9AmzskVrmfqlC31xCW4WWlTUk4gAWZPgxpknKmP9vM EIOgdLuuQJyM9zqwPfXnT3M50OXvjdyvZErd4ZKO9qLg2gbQCIJmDN5JM2pwaYsfXDvm LFRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256730; x=1756861530; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=j4IRJlXM6WlOC6HdRLDZoPfNGaWNXGIS7v/EQ+dzuD0=; b=YhoNGJ7YYEFzk8g6mT03zIhc1ClgJ0w4qfdlvdB/fJ4d4ppjcwdKxmTQt6NSJq+nXX AjXGDSgnNrpLl2kBNJ9bqKd6D249bjNKAZ2cfEaFkQbVAhWnUKTDReXp4zXU+FE5lfwl 8cgXesxWsEchqrlD4iaY3fuz4EDuuPR9cCnsVhORmfbs9bDXRX1gRkeLvqpNszzw/wVP LTvVNeQTtmY24hoSYbfDhl4wOSCjTnnBMaNdeEgQUxA3YCXXvW5lEiCP4vOKE/Bmz9hL Me/5f4k8m2CoJpa+YakHsD5Xe+lLj0sp+NAde+NLzq8HZJu85Oh2kuDjCkNGzNEEzXim yULA== X-Gm-Message-State: AOJu0YxJ7eRtV8RaYoMLLKYvv9vcQt+Id5qiroeSf7pe+BBHuWukFskK RaQ/oc60icjwRkwRX51wqwymekR07W7TdZyrba9YdmLRmFL0oild2FshT0RHd9lTyLv2kk8m8A3 Zrms0WyU= X-Gm-Gg: ASbGncvLF783wywC6NCPvZqX1GxqfcxU3jfCTF1stCGh2GS95CdAuXwj42wH2BZbMa+ 3Vt0oCC+aAdRslVsEMHSdnW72ezD0jIz+g2rWBOPdzQTo9dCiv+Cs7KFs5Lfz00LQv/yOmtTzWS 0DUyp/fiN4c95SSHbk9laEvTRrN1f4I6W7nJijIEAyUjPMfVxFLalnlGvgyAvBQB9x2pzX1JDZa IvqCrxoJoQGiTA0aib0bw5JfFOZkuRasEAcrvBJK3jPNAx9KqtnQKzRxyukWXC72w42uTC1odcn DONWqRyuP2N8n+b6Smf6XMQyo/c3Sn1AHCjdumGK+vxdP/4OgKcgqz8v8onrpFhAqp4WJ+jJ2f+ gvZK0aewa2BZ7ySsmB5hfDs2qcQ== X-Google-Smtp-Source: AGHT+IEfg0RV8HZ0MKe7sVyvR2MY0xdMsjAgdQp2skpx8s+Sto/jl962olvmqYF0Xp7BQRGztMgUlQ== X-Received: by 2002:a05:6a00:7619:b0:771:b230:f0a3 with SMTP id d2e1a72fcca58-771b230f3a2mr10217489b3a.19.1756256730528; Tue, 26 Aug 2025 18:05:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 05/61] target/arm/hvf: Add KVMID_TO_HVF, HVF_TO_KVMID Date: Wed, 27 Aug 2025 11:03:53 +1000 Message-ID: <20250827010453.4059782-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756256858812124100 Content-Type: text/plain; charset="utf-8" Conversion between KVM system registers ids and the HVF system register ids is trivial. Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/hvf/hvf.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 7b0413093d..47165bd29c 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -403,6 +403,26 @@ struct hvf_sreg_match { uint32_t cp_idx; }; =20 +/* + * QEMU uses KVM system register ids in the migration format. + * Conveniently, HVF uses the same encoding of the op* and cr* parameters + * within the low 16 bits of the ids. Thus conversion between the + * formats is trivial. + */ + +#define KVMID_TO_HVF(KVM) ((KVM) & 0xffff) +#define HVF_TO_KVMID(HVF) \ + (CP_REG_ARM64 | CP_REG_SIZE_U64 | CP_REG_ARM64_SYSREG | (HVF)) + +/* Verify this at compile-time. */ + +#define DEF_SYSREG(HVF_ID, ...) \ + QEMU_BUILD_BUG_ON(HVF_ID !=3D KVMID_TO_HVF(KVMID_AA64_SYS_REG64(__VA_ARG= S__))); + +#include "sysreg.c.inc" + +#undef DEF_SYSREG + #define DEF_SYSREG(HVF_ID, op0, op1, crn, crm, op2) \ { HVF_ID, HVF_SYSREG(crn, crm, op0, op1, op2) }, =20 --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756256901; cv=none; d=zohomail.com; s=zohoarc; b=hf6+kYjo+XTDpKP9b3X/4lQbRw36ttP+RuG2v9I0+Xeo340nvIUXnR4doBKHHxhB3iokxcnPPXn9WUALs58qG78teWSYgvmSjazSgqaeX1it3RodnJWp7zF4iRjrgYTdxe6YmhRL4Iz4Kft60nFB7MdNpZER7dDi5sdl19WC1+g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756256901; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9aps/5dRSIQxJoI5rTRRJw0UjbyCrM2YzxlFedWAMQo=; b=X/AEpY/n7sAdLOdJBPmpUk2AWRLZ2/K39xndtAjdzxHakBQMITD/H0OerFa9jttzBmdul7CEc0kB/0oPI22pvnfstdWsNb2MiZO+sUgd6YTvfJafNM7vOvYZtHSoFL2+3wXxrN4aisvAEksNjVk/lpB8aQ4K9BOb4nHvE8b6bvo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756256901020363.3994612679387; Tue, 26 Aug 2025 18:08:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4cJ-0003qX-W8; Tue, 26 Aug 2025 21:06:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4bZ-0003l1-Qm for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:05:41 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4bX-0007Hi-MA for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:05:37 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-32567465cddso2854346a91.0 for ; Tue, 26 Aug 2025 18:05:35 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.05.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:05:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256734; x=1756861534; darn=nongnu.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=9aps/5dRSIQxJoI5rTRRJw0UjbyCrM2YzxlFedWAMQo=; b=bE2b6rp97dc77zCnHTFKNDWNdDNlb2ZA3AbfAaPSOsatJKqE9V5SD+Qoxkc/Gkb2TS /OiNk/w983CM7vGun16PAF8MCoJ/7isTVh9vGr8sA4Ch6lvIB4gmFD4DPHmXMlZzLXpW Divj+sM3JdVsaGvzbhf4IbJfFGgQlTYZuMSFPuYQihM2ehnGHc1WaMqIKv0Dy5HXcyUY CKxkiIjA6le2srIpiXvuAwqYxKvqWP1463r9SiO0TXb0As9vAKWFP5+FpIV/L46cqQqt qijwhuXHKli62k0GTBMbAZl3R0HgQR+5svhEllflDkY6U3mRiqG8WPpRIbuegNHAVYkR STfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256734; x=1756861534; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9aps/5dRSIQxJoI5rTRRJw0UjbyCrM2YzxlFedWAMQo=; b=V8vHnKv/fZaYpdX+vtEPzwJ9CNVNmhSSbH9laJLwP84+6FjXfA6KbTgrmBf2C9mACD vk0Mc9UxOR9bw90QqSkgKcK77NU/wrqUAvSuteEH0il1QAEsYymuOKe2VRxuAjRPMYMK Qy+Ny7qmZqYK/RBlRf6HZ6CMpZeamobnftEcc+vRkW+cBRlt6J0C9C48tivbm67vGuhd wR+Dv9QG+vG6sdsubiDoO8zXoYINBSWNlL7nAySFZkneJ7oudwCAZcgzgCIPXL3g3fR+ ChN9CiDmNRN7RzX5JqWNuXhyBiaGuCLd4eyYuqxY2b3+k5EW57yRrWUtbfsQaB5FebVC qRzg== X-Gm-Message-State: AOJu0YyT3PeoQBq7z12KGZ5iMkU8IR0WAFx7GTWqE/XxTNLyO8Xup4T3 WxRJtxwLZDwT1PQmLl18N1xGceTIkE9zqwtzY6u2cC6S4dtMAnwFHXjdrrEdGcuo0HBmXeOv5Yo yOkM1qwI= X-Gm-Gg: ASbGncsCl06S1H78oAc2lOhrH9sCxWkK4vH01+Ir5D8lx0kgudARxnjLtpVub+JEUdI qZ7DztYZIzlY7UZZ1+XMSZQJdPae0ljU3c7RrJEbub8ZSh3VEmALaeaMElsiASXkU0IE2rb3a/T ywOI7mQVwlUtbQRmN+NGXp2XkqZ+CjBl6sGtVPZIg8MhgS4XtycPNuKrWjIh9xiFPxxoVtPVl2X pTHd9U9QlBl9ZYp2aJU0zrccddSw1No/iTn9EAbu46kxdFmB4yJ33Im0g1NssWM3Okcok1byr2e M2tzGE+bR5f1hdOtVsjT6i0k00G+ajIvarWHXrYGGUYDhSRwtkQaP/EMRHtAI1vLwiHKf/FEHRP QjbpoVMm9vGqAyqGtbkzBPjqEhC4uBC4n4ReW X-Google-Smtp-Source: AGHT+IH90EsGhqOkJUhrZ8ZiuhrpO0NZDQQtod664p79QlxpnXbqAScPmseFRvmeKtfzDtn9Hv8wZA== X-Received: by 2002:a17:90b:57c4:b0:321:c37e:e325 with SMTP id 98e67ed59e1d1-32515ec8ce9mr24809462a91.12.1756256733852; Tue, 26 Aug 2025 18:05:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 5/7] target/arm/hvf: Remove hvf_sreg_match.key Date: Wed, 27 Aug 2025 11:03:54 +1000 Message-ID: <20250827010453.4059782-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102a.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756256902444124100 Content-Type: text/plain; charset="utf-8" Use conversion functions instead of table lookup. Signed-off-by: Richard Henderson --- target/arm/hvf/hvf.c | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 2577dc1c0c..46e52e8d34 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -152,9 +152,6 @@ void hvf_arm_init_debug(void) g_array_sized_new(true, true, sizeof(HWWatchpoint), max_hw_wps); } =20 -#define HVF_SYSREG(crn, crm, op0, op1, op2) \ - ENCODE_AA64_CP_REG(CP_REG_ARM64_SYSREG_CP, crn, crm, op0, op1, op2) - #define SYSREG_OP0_SHIFT 20 #define SYSREG_OP0_MASK 0x3 #define SYSREG_OP0(sysreg) ((sysreg >> SYSREG_OP0_SHIFT) & SYSREG_OP0_M= ASK) @@ -399,7 +396,6 @@ static const struct hvf_reg_match hvf_fpreg_match[] =3D= { =20 struct hvf_sreg_match { int reg; - uint32_t key; uint32_t cp_idx; }; =20 @@ -423,8 +419,7 @@ struct hvf_sreg_match { =20 #undef DEF_SYSREG =20 -#define DEF_SYSREG(HVF_ID, crn, crm, op0, op1, op2) \ - { HVF_ID, HVF_SYSREG(crn, crm, op0, op1, op2) }, +#define DEF_SYSREG(HVF_ID, crn, crm, op0, op1, op2) { HVF_ID }, =20 static struct hvf_sreg_match hvf_sreg_match[] =3D { #include "sysreg.c.inc" @@ -469,13 +464,16 @@ int hvf_get_registers(CPUState *cpu) pstate_write(env, val); =20 for (i =3D 0; i < ARRAY_SIZE(hvf_sreg_match); i++) { + int hvf_id =3D hvf_sreg_match[i].reg; + uint64_t kvm_id =3D HVF_TO_KVMID(hvf_id); + if (hvf_sreg_match[i].cp_idx =3D=3D -1) { continue; } =20 if (cpu->accel->guest_debug_enabled) { /* Handle debug registers */ - switch (hvf_sreg_match[i].reg) { + switch (hvf_id) { case HV_SYS_REG_DBGBVR0_EL1: case HV_SYS_REG_DBGBCR0_EL1: case HV_SYS_REG_DBGWVR0_EL1: @@ -549,8 +547,10 @@ int hvf_get_registers(CPUState *cpu) * vCPU but simply keep the values from the previous * environment. */ - const ARMCPRegInfo *ri; - ri =3D get_arm_cp_reginfo(arm_cpu->cp_regs, hvf_sreg_match= [i].key); + uint32_t key =3D kvm_to_cpreg_id(kvm_id); + const ARMCPRegInfo *ri =3D + get_arm_cp_reginfo(arm_cpu->cp_regs, key); + val =3D read_raw_cp_reg(env, ri); =20 arm_cpu->cpreg_values[hvf_sreg_match[i].cp_idx] =3D val; @@ -559,7 +559,7 @@ int hvf_get_registers(CPUState *cpu) } } =20 - ret =3D hv_vcpu_get_sys_reg(cpu->accel->fd, hvf_sreg_match[i].reg,= &val); + ret =3D hv_vcpu_get_sys_reg(cpu->accel->fd, hvf_id, &val); assert_hvf_ok(ret); =20 arm_cpu->cpreg_values[hvf_sreg_match[i].cp_idx] =3D val; @@ -606,13 +606,15 @@ int hvf_put_registers(CPUState *cpu) =20 assert(write_cpustate_to_list(arm_cpu, false)); for (i =3D 0; i < ARRAY_SIZE(hvf_sreg_match); i++) { + int hvf_id =3D hvf_sreg_match[i].reg; + if (hvf_sreg_match[i].cp_idx =3D=3D -1) { continue; } =20 if (cpu->accel->guest_debug_enabled) { /* Handle debug registers */ - switch (hvf_sreg_match[i].reg) { + switch (hvf_id) { case HV_SYS_REG_DBGBVR0_EL1: case HV_SYS_REG_DBGBCR0_EL1: case HV_SYS_REG_DBGWVR0_EL1: @@ -687,7 +689,7 @@ int hvf_put_registers(CPUState *cpu) } =20 val =3D arm_cpu->cpreg_values[hvf_sreg_match[i].cp_idx]; - ret =3D hv_vcpu_set_sys_reg(cpu->accel->fd, hvf_sreg_match[i].reg,= val); + ret =3D hv_vcpu_set_sys_reg(cpu->accel->fd, hvf_id, val); assert_hvf_ok(ret); } =20 @@ -922,14 +924,15 @@ int hvf_arch_init_vcpu(CPUState *cpu) =20 /* Populate cp list for all known sysregs */ for (i =3D 0; i < sregs_match_len; i++) { - const ARMCPRegInfo *ri; - uint32_t key =3D hvf_sreg_match[i].key; + int hvf_id =3D hvf_sreg_match[i].reg; + uint64_t kvm_id =3D HVF_TO_KVMID(hvf_id); + uint32_t key =3D kvm_to_cpreg_id(kvm_id); + const ARMCPRegInfo *ri =3D get_arm_cp_reginfo(arm_cpu->cp_regs, ke= y); =20 - ri =3D get_arm_cp_reginfo(arm_cpu->cp_regs, key); if (ri) { assert(!(ri->type & ARM_CP_NO_RAW)); hvf_sreg_match[i].cp_idx =3D sregs_cnt; - arm_cpu->cpreg_indexes[sregs_cnt++] =3D cpreg_to_kvm_id(key); + arm_cpu->cpreg_indexes[sregs_cnt++] =3D kvm_id; } else { hvf_sreg_match[i].cp_idx =3D -1; } --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257082; cv=none; d=zohomail.com; s=zohoarc; b=nmC9A70Z+zhBcQwQNGRT0i7iadDKZjXLbJgTVe5kwLZmIaUnm7TBO4WYk0Aq12wbGJsfu7M1C9vWffjiLspzCkG67eqCjaXcncjI2BQVG2wgNIz9vQwvns+ME7IQ1d8xacUbc/aZb+s43rSJpRyv83nq3Vlh2ZrBYLtTItgdZGo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257082; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+QA3Whr1FxPU8qziB1C+3X34XKIyXWzVmY6UOFSwa+s=; b=A+5qDWv7wbUGM+tFL74zPIbRAZhduf7yQ9qXrO63yET8nfcjXSd7an3UjdixQJJzyg3sI1oAL8xmnrgNaBONwpB4Aw3zeZUd50YH6yljUoWqhUohUGIxw7PHcaOHl525DLfhudlEtebEWc22sqMXSPvFCPy6nl0Aj/4TsYBD488= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257082007648.6511887654336; Tue, 26 Aug 2025 18:11:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4cO-0004E9-Vs; Tue, 26 Aug 2025 21:06:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4be-0003na-PJ for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:05:43 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4bc-0007IO-GS for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:05:42 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-771f90a45easo1360708b3a.1 for ; Tue, 26 Aug 2025 18:05:38 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.05.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:05:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256738; x=1756861538; darn=nongnu.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=+QA3Whr1FxPU8qziB1C+3X34XKIyXWzVmY6UOFSwa+s=; b=ad4oZ2cwdy93of8EwuSoS+X+6vYnG4ODXUv9ovc698QxvQAwMHhJRP3yr6TVGI1Wdw kCQw4wyS88ZERtLT+xAvKK+UcoE6Gj0c9QR2CbqLoRxqtN+N/1qZXHHasBjMeRQbUY31 QzTIe/nm3oY+B9e9gtZewnPmL58z7dcIVzMdsIxeHjC0pYJboWEGjYCLnWq29r55/rNH s38rlhfC1ebhkKqzqXuAJaViDiC0xTozMEKAgz+CsJpLeQ3k3VNfoNzZsb3kzzwaMiec eqnEZr9G/1VMlOx6dxTf4lgUK0PIcTOHuGTSaC3NzVBmrHK6jAVgzJYUNMyqezeyjLaI 813w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256738; x=1756861538; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+QA3Whr1FxPU8qziB1C+3X34XKIyXWzVmY6UOFSwa+s=; b=pWyRO5S63rPQfEQ8cUMmXyaRNJRdicqvdcgV1x032LfTb48iXtQq9+yYLpWN6mLGnI okh2787dh2f7PF95703lAav7qmX4mqDMQmuYXQ0krr6K2Ut2dPfG1k1Sra1TXwR0U+rY QP/3bjz40s1t6HJpcKepKPGzBWlXmx/Vb/6KufkcIT1poGaQSIp4LuDSsZiD9PjICZLj rC5IGX8vz8tO9Lg/21sSkWwtmUGOf7ZzHQPYOr+SmGI4b1yQHUyS5cLQUZ2thciClpy0 KcWHXNUXL2MLNs1no6X6UKNkABYSpRJa68yj/bl2vsPW76eeyte8ddxnog4vomhBZ/dO Deew== X-Gm-Message-State: AOJu0YwIno5ylvS7T78G4bN5J3v+pVB/YkQU+Crzv1zRcF+s9ZNSRdoU zm80PrKyuO4AG4RtfsfoaxMt3tw5Kqvowjn6rn8TCZ+d93YIfWc4HK+Ww+N4K6/JtTZxdI9pTiy IO6jrQnM= X-Gm-Gg: ASbGncuWMQpbhfhOlT/FPe1uFFb2HDhJtlVcfji8UWqbc73ugFRTv3mx4evzU50s+X3 pnHU9dAcWgwb+ESFmCRjElaHo04URwdi3DuqP1vFxToRPQqFShcaf0dzX9kTEpofhB9FqGp6P7m pFn9BX9K9s1uStAr8UXPTN+cuNdfLSPfOGWlHqLkV1ip6JUPYgQ0OwrbXpnug5ZdRzEkQZVy1nx AHNpWfqfw4oTs8KF2KxceRy+XFw+OoEgQ5sPlrtOXTb8SqyAXRoxsG5DlUD0Nvg9FmFXei+m1Jr 1pHrCjDXRoV+z4Oawq6hKHdbpZnxJOuVOJU3M6a2tjf4Z42hhmdfeX0+8Ar+bWv/ZDiilTrQAoz QmcuLwG4LLo6nIcv0KrePK1muHTLg6j6AiXK+ X-Google-Smtp-Source: AGHT+IGHfukbr5fF3KOAKsBa88LDQBor3PbaKBaFAZY8Rr0a8ORIoMcx9KXyVoRkfs9uZs8yon/wgw== X-Received: by 2002:a05:6a00:1892:b0:770:fd32:f365 with SMTP id d2e1a72fcca58-770fd32f6a9mr11082881b3a.25.1756256737837; Tue, 26 Aug 2025 18:05:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 06/61] target/arm/hvf: Remove hvf_sreg_match.key Date: Wed, 27 Aug 2025 11:03:55 +1000 Message-ID: <20250827010453.4059782-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257084053116600 Content-Type: text/plain; charset="utf-8" Use conversion functions instead of table lookup. Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/hvf/hvf.c | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 47165bd29c..5fcfa9a999 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -152,9 +152,6 @@ void hvf_arm_init_debug(void) g_array_sized_new(true, true, sizeof(HWWatchpoint), max_hw_wps); } =20 -#define HVF_SYSREG(crn, crm, op0, op1, op2) \ - ENCODE_AA64_CP_REG(CP_REG_ARM64_SYSREG_CP, crn, crm, op0, op1, op2) - #define SYSREG_OP0_SHIFT 20 #define SYSREG_OP0_MASK 0x3 #define SYSREG_OP0(sysreg) ((sysreg >> SYSREG_OP0_SHIFT) & SYSREG_OP0_M= ASK) @@ -399,7 +396,6 @@ static const struct hvf_reg_match hvf_fpreg_match[] =3D= { =20 struct hvf_sreg_match { int reg; - uint32_t key; uint32_t cp_idx; }; =20 @@ -423,8 +419,7 @@ struct hvf_sreg_match { =20 #undef DEF_SYSREG =20 -#define DEF_SYSREG(HVF_ID, op0, op1, crn, crm, op2) \ - { HVF_ID, HVF_SYSREG(crn, crm, op0, op1, op2) }, +#define DEF_SYSREG(HVF_ID, op0, op1, crn, crm, op2) { HVF_ID }, =20 static struct hvf_sreg_match hvf_sreg_match[] =3D { #include "sysreg.c.inc" @@ -469,13 +464,16 @@ int hvf_get_registers(CPUState *cpu) pstate_write(env, val); =20 for (i =3D 0; i < ARRAY_SIZE(hvf_sreg_match); i++) { + int hvf_id =3D hvf_sreg_match[i].reg; + uint64_t kvm_id =3D HVF_TO_KVMID(hvf_id); + if (hvf_sreg_match[i].cp_idx =3D=3D -1) { continue; } =20 if (cpu->accel->guest_debug_enabled) { /* Handle debug registers */ - switch (hvf_sreg_match[i].reg) { + switch (hvf_id) { case HV_SYS_REG_DBGBVR0_EL1: case HV_SYS_REG_DBGBCR0_EL1: case HV_SYS_REG_DBGWVR0_EL1: @@ -549,8 +547,10 @@ int hvf_get_registers(CPUState *cpu) * vCPU but simply keep the values from the previous * environment. */ - const ARMCPRegInfo *ri; - ri =3D get_arm_cp_reginfo(arm_cpu->cp_regs, hvf_sreg_match= [i].key); + uint32_t key =3D kvm_to_cpreg_id(kvm_id); + const ARMCPRegInfo *ri =3D + get_arm_cp_reginfo(arm_cpu->cp_regs, key); + val =3D read_raw_cp_reg(env, ri); =20 arm_cpu->cpreg_values[hvf_sreg_match[i].cp_idx] =3D val; @@ -559,7 +559,7 @@ int hvf_get_registers(CPUState *cpu) } } =20 - ret =3D hv_vcpu_get_sys_reg(cpu->accel->fd, hvf_sreg_match[i].reg,= &val); + ret =3D hv_vcpu_get_sys_reg(cpu->accel->fd, hvf_id, &val); assert_hvf_ok(ret); =20 arm_cpu->cpreg_values[hvf_sreg_match[i].cp_idx] =3D val; @@ -606,13 +606,15 @@ int hvf_put_registers(CPUState *cpu) =20 assert(write_cpustate_to_list(arm_cpu, false)); for (i =3D 0; i < ARRAY_SIZE(hvf_sreg_match); i++) { + int hvf_id =3D hvf_sreg_match[i].reg; + if (hvf_sreg_match[i].cp_idx =3D=3D -1) { continue; } =20 if (cpu->accel->guest_debug_enabled) { /* Handle debug registers */ - switch (hvf_sreg_match[i].reg) { + switch (hvf_id) { case HV_SYS_REG_DBGBVR0_EL1: case HV_SYS_REG_DBGBCR0_EL1: case HV_SYS_REG_DBGWVR0_EL1: @@ -687,7 +689,7 @@ int hvf_put_registers(CPUState *cpu) } =20 val =3D arm_cpu->cpreg_values[hvf_sreg_match[i].cp_idx]; - ret =3D hv_vcpu_set_sys_reg(cpu->accel->fd, hvf_sreg_match[i].reg,= val); + ret =3D hv_vcpu_set_sys_reg(cpu->accel->fd, hvf_id, val); assert_hvf_ok(ret); } =20 @@ -922,14 +924,15 @@ int hvf_arch_init_vcpu(CPUState *cpu) =20 /* Populate cp list for all known sysregs */ for (i =3D 0; i < sregs_match_len; i++) { - const ARMCPRegInfo *ri; - uint32_t key =3D hvf_sreg_match[i].key; + int hvf_id =3D hvf_sreg_match[i].reg; + uint64_t kvm_id =3D HVF_TO_KVMID(hvf_id); + uint32_t key =3D kvm_to_cpreg_id(kvm_id); + const ARMCPRegInfo *ri =3D get_arm_cp_reginfo(arm_cpu->cp_regs, ke= y); =20 - ri =3D get_arm_cp_reginfo(arm_cpu->cp_regs, key); if (ri) { assert(!(ri->type & ARM_CP_NO_RAW)); hvf_sreg_match[i].cp_idx =3D sregs_cnt; - arm_cpu->cpreg_indexes[sregs_cnt++] =3D cpreg_to_kvm_id(key); + arm_cpu->cpreg_indexes[sregs_cnt++] =3D kvm_id; } else { hvf_sreg_match[i].cp_idx =3D -1; } --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257240; cv=none; d=zohomail.com; s=zohoarc; b=koAUDJ2NYN6TZFI3ppkU9lV8+GRmfYnjo2cBJsgxXqCEnExbI5mi5W7/EPG0bxb+QSyy1AlVnmzG5P0hLoFKzFOcNph6xBqZuy85TbfbZndqqjs73/hWmQH5PPxh+ExLMwzhJIQboPRagD/6QK9AZfK/KKpVytjBNcFzLxGVjsk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257240; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RWOUahuffRODKn11bwqIgWpsGqBtiathLmHpxPmSXXk=; b=bLjh34LhmZn2Ve5iZUDs349zWkrn8BLFvIgvoOFHXnfRKbvWuVhhktDobe+il2jhaXm6je9BO6aYj3Q2SQejg/u/hUSTf2hIkFBErs7VeGwvDFWwa+uyXc7Y4oAzCeysbS8ZyLTTPAfWmYriOfnvyxpGFLu7JGZ+Kcao2wmXpO0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257240027884.0217377349329; Tue, 26 Aug 2025 18:14:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4co-00054P-VU; Tue, 26 Aug 2025 21:06:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4cR-0004Ne-8s for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:32 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4bh-0007Iy-Ks for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:05:49 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-76e434a0118so7242778b3a.0 for ; Tue, 26 Aug 2025 18:05:43 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.05.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:05:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256742; x=1756861542; darn=nongnu.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=RWOUahuffRODKn11bwqIgWpsGqBtiathLmHpxPmSXXk=; b=lFiBRuajLbgyyASD2ewo+hcp7c8cxtW0XuYM+mxJpiGEoITkh9xDOy5upNB90QTWjX meJq/0wt5fKDMp4yFO8e4apunWRWoJmjynQIp8KInRJnQ7DLm8QVW4K5wbgwu9bcTHim 7KGZF67qdjNBLN1KTs7w5vYY9FL3c77812j+bBcy+yDudKGn5gldSaWetcsEEJJNMDJc IP44nweyCcn3VyUPedgoQIUjiaEgd+N0yrHODiBWw5Buu/IVKtxFPDYtmDPb+NsQkpKN 09lrOsq3wm4OLuOW47VGFxy2Wl37q8eiQWh3C52hnrhedbAYhnnraqm+XcfKVcW0+niO DDTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256742; x=1756861542; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RWOUahuffRODKn11bwqIgWpsGqBtiathLmHpxPmSXXk=; b=ni5vAoSiYjI87L+risiWewosafxZ96RCGoI7qa1IVNZQtz0/P7BetPW6moTE3yXX37 uaDhCv3xwytYoykwwtwYpolwC4VujM0bGF5tNL5ktzo1d/xpxV19L1+cI4IMT2RtdxeI sCILngx3aWuhi6VbRV3vCW2LxcmC5isT9rdDEQnViloPVmAjOswMdJk8uAYp5wsTG2lI nupIgrZQxQACm1iF+owSDGlJZkZc0jiv13hIIFqWKcOQvkPZB7/S6kfKJo6vbtbd2UE5 CALXTpE89VNd61Prd9s10miV9D2Bhx8DpbWNOHTu3zw/+Cml3MEd/CKHubwrm6771fBi ubGQ== X-Gm-Message-State: AOJu0Yxt8Gl0qWW8w2+lzUnDeZfWAQXpnrB+7+EZbdDlE8bh1Wn4XBy0 tPz2kP6q9/ezK5r/bV9e7ehoUPAozJlpll67owWGuJ1FtoE+bU4jgk1MsQ5pRZafVVQzBTuIKZc UeZpPiIc= X-Gm-Gg: ASbGncthqCjsyNAmOK60ys3q+hkvlIgDg7fVi/W4WFOe8Gw2SC4oRToDgEe1S45DkBt YPzUG0AktGHPA7ikiwN4NSSxhPCyw51jjBWcJz7T/ZvQLBrbx+mdj66bIHQALStUt69ViPE5he5 OSK6cFupexVDH18S30OVHbiRfTxbZsR9edSk1PPfTGW1TpDeE+mH/XqHhhRa5mvg0kYHnqsHF2s f5MUwXcPb47ZIzcEPDpH2DpoO8VZjsmYsyo0IwOIfLbsRagWmcFs1c6HBx1buFkc3wkl+SHHg3Z EfUowfh7y9WhqR5xGJNrwgOANpGVyHXDxSt6pk5bTUNKyH7SfLbA4Jd00ZQt657HpCPHu7uyXjN Dp/73Auwn4sPX84ezM6yy3VDmXA== X-Google-Smtp-Source: AGHT+IG2Md/ERToJJ89SckfrF77Y+ttmZlxzYDlrmMK8aEKe3Drst8M8vh36j5mWke8knPeLxNIO5w== X-Received: by 2002:a05:6a00:2ea3:b0:771:e3d7:4320 with SMTP id d2e1a72fcca58-771e3d752b9mr10636260b3a.19.1756256741782; Tue, 26 Aug 2025 18:05:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 6/7] target/arm/hvf: Replace hvf_sreg_match with hvf_sreg_list Date: Wed, 27 Aug 2025 11:03:56 +1000 Message-ID: <20250827010453.4059782-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257242274124100 Content-Type: text/plain; charset="utf-8" Change hvf_get_registers and hvf_put_registers to iterate over cpregs_indexes instead of hvf_sreg_match. This lets us drop the cp_idx member of hvf_sreg_match, which leaves only one member in the struct. Replace the struct with a const array. Instead of int, use the proper enum type: hv_sys_reg_t. Rename from hvf_sreg_match to hvf_sreg_list because there is no longer any matching going on. Signed-off-by: Richard Henderson --- target/arm/hvf/hvf.c | 45 +++++++++++++++----------------------------- 1 file changed, 15 insertions(+), 30 deletions(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 46e52e8d34..647eb675ef 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -394,11 +394,6 @@ static const struct hvf_reg_match hvf_fpreg_match[] = =3D { { HV_SIMD_FP_REG_Q31, offsetof(CPUARMState, vfp.zregs[31]) }, }; =20 -struct hvf_sreg_match { - int reg; - uint32_t cp_idx; -}; - /* * QEMU uses KVM system register ids in the migration format. * Conveniently, HVF uses the same encoding of the op* and cr* parameters @@ -419,9 +414,9 @@ struct hvf_sreg_match { =20 #undef DEF_SYSREG =20 -#define DEF_SYSREG(HVF_ID, crn, crm, op0, op1, op2) { HVF_ID }, +#define DEF_SYSREG(HVF_ID, crn, crm, op0, op1, op2) HVF_ID, =20 -static struct hvf_sreg_match hvf_sreg_match[] =3D { +static const hv_sys_reg_t hvf_sreg_list[] =3D { #include "sysreg.c.inc" }; =20 @@ -434,7 +429,7 @@ int hvf_get_registers(CPUState *cpu) hv_return_t ret; uint64_t val; hv_simd_fp_uchar16_t fpval; - int i; + int i, n; =20 for (i =3D 0; i < ARRAY_SIZE(hvf_reg_match); i++) { ret =3D hv_vcpu_get_reg(cpu->accel->fd, hvf_reg_match[i].reg, &val= ); @@ -463,13 +458,9 @@ int hvf_get_registers(CPUState *cpu) assert_hvf_ok(ret); pstate_write(env, val); =20 - for (i =3D 0; i < ARRAY_SIZE(hvf_sreg_match); i++) { - int hvf_id =3D hvf_sreg_match[i].reg; - uint64_t kvm_id =3D HVF_TO_KVMID(hvf_id); - - if (hvf_sreg_match[i].cp_idx =3D=3D -1) { - continue; - } + for (i =3D 0, n =3D arm_cpu->cpreg_array_len; i < n; i++) { + uint64_t kvm_id =3D arm_cpu->cpreg_indexes[i]; + int hvf_id =3D KVMID_TO_HVF(kvm_id); =20 if (cpu->accel->guest_debug_enabled) { /* Handle debug registers */ @@ -553,7 +544,7 @@ int hvf_get_registers(CPUState *cpu) =20 val =3D read_raw_cp_reg(env, ri); =20 - arm_cpu->cpreg_values[hvf_sreg_match[i].cp_idx] =3D val; + arm_cpu->cpreg_values[i] =3D val; continue; } } @@ -562,7 +553,7 @@ int hvf_get_registers(CPUState *cpu) ret =3D hv_vcpu_get_sys_reg(cpu->accel->fd, hvf_id, &val); assert_hvf_ok(ret); =20 - arm_cpu->cpreg_values[hvf_sreg_match[i].cp_idx] =3D val; + arm_cpu->cpreg_values[i] =3D val; } assert(write_list_to_cpustate(arm_cpu)); =20 @@ -578,7 +569,7 @@ int hvf_put_registers(CPUState *cpu) hv_return_t ret; uint64_t val; hv_simd_fp_uchar16_t fpval; - int i; + int i, n; =20 for (i =3D 0; i < ARRAY_SIZE(hvf_reg_match); i++) { val =3D *(uint64_t *)((void *)env + hvf_reg_match[i].offset); @@ -605,12 +596,9 @@ int hvf_put_registers(CPUState *cpu) aarch64_save_sp(env, arm_current_el(env)); =20 assert(write_cpustate_to_list(arm_cpu, false)); - for (i =3D 0; i < ARRAY_SIZE(hvf_sreg_match); i++) { - int hvf_id =3D hvf_sreg_match[i].reg; - - if (hvf_sreg_match[i].cp_idx =3D=3D -1) { - continue; - } + for (i =3D 0, n =3D arm_cpu->cpreg_array_len; i < n; i++) { + uint64_t kvm_id =3D arm_cpu->cpreg_indexes[i]; + int hvf_id =3D KVMID_TO_HVF(kvm_id); =20 if (cpu->accel->guest_debug_enabled) { /* Handle debug registers */ @@ -688,7 +676,7 @@ int hvf_put_registers(CPUState *cpu) } } =20 - val =3D arm_cpu->cpreg_values[hvf_sreg_match[i].cp_idx]; + val =3D arm_cpu->cpreg_values[i]; ret =3D hv_vcpu_set_sys_reg(cpu->accel->fd, hvf_id, val); assert_hvf_ok(ret); } @@ -899,7 +887,7 @@ int hvf_arch_init_vcpu(CPUState *cpu) { ARMCPU *arm_cpu =3D ARM_CPU(cpu); CPUARMState *env =3D &arm_cpu->env; - uint32_t sregs_match_len =3D ARRAY_SIZE(hvf_sreg_match); + uint32_t sregs_match_len =3D ARRAY_SIZE(hvf_sreg_list); uint32_t sregs_cnt =3D 0; uint64_t pfr; hv_return_t ret; @@ -924,17 +912,14 @@ int hvf_arch_init_vcpu(CPUState *cpu) =20 /* Populate cp list for all known sysregs */ for (i =3D 0; i < sregs_match_len; i++) { - int hvf_id =3D hvf_sreg_match[i].reg; + hv_sys_reg_t hvf_id =3D hvf_sreg_list[i]; uint64_t kvm_id =3D HVF_TO_KVMID(hvf_id); uint32_t key =3D kvm_to_cpreg_id(kvm_id); const ARMCPRegInfo *ri =3D get_arm_cp_reginfo(arm_cpu->cp_regs, ke= y); =20 if (ri) { assert(!(ri->type & ARM_CP_NO_RAW)); - hvf_sreg_match[i].cp_idx =3D sregs_cnt; arm_cpu->cpreg_indexes[sregs_cnt++] =3D kvm_id; - } else { - hvf_sreg_match[i].cp_idx =3D -1; } } arm_cpu->cpreg_array_len =3D sregs_cnt; --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257615; cv=none; d=zohomail.com; s=zohoarc; b=Ep0PkFhcTWaXdks/wJfDAvrje8/DIlrvngGtonY+V6VPTAp4MxhutmwBUHyQLRbxjCTQsjngdQ+TV+TVZUbP70mWaOX4Wz3Q9X6ZO9txuDjQ656huCS8IUeGFgTZtLb3zGvKfAaow+HtqeXADs4oaNKpdstNexLmMiVc9me8Yhw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257615; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JIkeU3rXeazXD0joqAFpWiHN3iI9fKZ4K7whY5dqlfg=; b=VZc4f0jU/fglB8TvkCfnrFsXA+IywVEVKYZIZShRstWd06EAXaTJGkX9FDRp8I5ZZbap0MW6cY6Crif17eYCykcUQ2ySLEFeNTCO5KE3eTa3u6O3dbsvPfQs201HWSlAGUHlBYBtNcMpm22XuhuORc8GIxOBXYjm3+5CgyyihFo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257615142390.76680715998475; Tue, 26 Aug 2025 18:20:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4dl-0008LF-El; Tue, 26 Aug 2025 21:07:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4cj-0004wg-Lx for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:50 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4cT-0007KV-EZ for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:48 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-771e987b4e6so2234698b3a.2 for ; Tue, 26 Aug 2025 18:05:53 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.05.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:05:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256752; x=1756861552; darn=nongnu.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=JIkeU3rXeazXD0joqAFpWiHN3iI9fKZ4K7whY5dqlfg=; b=kctRrk+ngPr3gFJnMlBQrsMgrQXT+LG+JcHqqAdZD1uo7gd1EWs7fuyZyDEmh4pOho NBlIc2nYarTpN5TUL41WKcwya9zfkpH8Qv/8POKLljaWf+S88piWx8RRsZmCTpxhN8Nx QE4GWc+h4c2X81xiBRnHTkelVQ1gntn4oa131JpwbU3cze0MAiLWu93i/zTIte02KvcV AlsvMvk84zMT35ODHxIWjQmoPivyENW+G6lACZaDuJj9RG093B/PDO69yISadajoTkUS aUNpMNCGz+tNnVRHIH4R06Wj1lff8bwxggVYdRfSPincvq1NqRcBubKipzyGCxl/wgBK ljhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256752; x=1756861552; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JIkeU3rXeazXD0joqAFpWiHN3iI9fKZ4K7whY5dqlfg=; b=taHwcbjTae59B6doYuGeiEOHAZam0Akipt3VVhxc/aVUuDIcXsR10zKtqoUNIij9H6 jS8tGvTKQ4HKZ5bwEIK+L4oBEtan8oM/Kzli/DSJ6X0aOqyv6b/+ePM7vY9d9pq6cc35 /WO9gUHK9BC9AKtjwTlGuvcTVLg0J/GBCGcG53AqKNC16cXJQ8EAL2VONFlHFW1TfT7b 6T6LPyGe2AYz+oSG+8XnzX9LicOV3zSTfhWDt8K/fGc6Uahn7KOD4oPEk7FL6AON4yue /SVr8mzVbnM81oo3EFfhSIHQb/GEEbs3JoUfLjuYIl9i7nAGaWuoQa1F0MaRVSm6PoNs 1qwQ== X-Gm-Message-State: AOJu0YySqTfh+W2fE7OamYhb1CtCDKsz4IXHU3SqL65qRnRs4GFoMQGs aR3U/8RK3whAhxPPS/B5mgbTax/Rehtn+RYkK0Sh7Y+ZJrZUcjlB7HRoFz/UVKJNJAQXFbObS0l 9/CjeX4A= X-Gm-Gg: ASbGncvRotk0OzH3Jp4vwJ5Tg9wfY3Vwoh4ejm6HyaTq30XhZTYVVa9HoM7tLJ5qNQ9 Cg9WpO6WnGHWsN6K/HPdfw74y1DECLV6E6F8JzR4+aGXe7zl0Bf0ugIrhCKyKq1UUI0RngGdP8z 63JzD9l5Tz6UzF1c1JDv3vHHQ8sbS1UAoVQPs3UTgGQzCeL72Y9Ti8g2UqjhRwR8o1/X6FQgeZ5 Tk4sjy02HIXif+kUkNBEubX+P5LvhJQLcnaCqDcGEgvAsdegNHbO4nK38HS8+fsjiE8L3jwcI7G uknzXpW8/NEcBctLGUAdLkjGgJEu2BJUpZnWzaD9aIqyIjj9+emenrJGdrQNdu0qAaenpL7MEJO 8+5WqU0fRLeN3F8jOuvWrKtzKyQ== X-Google-Smtp-Source: AGHT+IGq53fAtfQ9WKrngq87nWSvsvyjcpUdxHmpVrB7JN0jGslnRkl/4oLHs803/u1K4niu+LQT6w== X-Received: by 2002:a05:6a00:a8e:b0:76c:1eae:fd30 with SMTP id d2e1a72fcca58-7702fa02d0fmr23844538b3a.12.1756256751598; Tue, 26 Aug 2025 18:05:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 7/7] target/arm/hvf: Sort the cpreg_indexes array Date: Wed, 27 Aug 2025 11:03:58 +1000 Message-ID: <20250827010453.4059782-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.google.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257616398116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/hvf/hvf.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 647eb675ef..88ed96be11 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -925,6 +925,9 @@ int hvf_arch_init_vcpu(CPUState *cpu) arm_cpu->cpreg_array_len =3D sregs_cnt; arm_cpu->cpreg_vmstate_array_len =3D sregs_cnt; =20 + /* cpreg tuples must be in strictly ascending order */ + qsort(arm_cpu->cpreg_indexes, sregs_cnt, sizeof(uint64_t), compare_u64= ); + assert(write_cpustate_to_list(arm_cpu, false)); =20 /* Set CP_NO_RAW system registers on init */ --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756256970; cv=none; d=zohomail.com; s=zohoarc; b=hLCJcTZ7zLRgf8ljTcIRSM6rVChH5JFOY5asf+Y0YDwSEZYYHkGV0eAjX1/ht1dEC8fnARyolEYPXxvhgR3vD70frF7dMJj0HfHEA73oqQFkuCZlHGHKwioNgir5moSuMsKDxRlIX09gEMOENWsHgWOhrzsgouTmuV4O0SPd5fU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756256970; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=kSe8riRjhb8O3kX08ti8qa14kSiIJuoOb2wA1l/P/pk=; b=U2N/uDtYmkivyBnzGsdlWL1QVksG9Q64TAdck4DcZ28hb8roffXVebfBCNit7LLgGXWe0ePFvbp6ymB+4hY32LlehElvvAInOeJk0TyqBW+FcDcW+PRXYdAG1jTp+34eJhFOAXthtu3lFqakKheyhzCjagqm8zRdVo3aTKbupyU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756256970638393.87872832377195; Tue, 26 Aug 2025 18:09:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4cl-0004zz-Cx; Tue, 26 Aug 2025 21:06:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4cU-0004Qg-Lt for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:34 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4cH-0007Jx-5Q for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:33 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-323267872f3so4976055a91.1 for ; Tue, 26 Aug 2025 18:05:49 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.05.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:05:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256748; x=1756861548; darn=nongnu.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=kSe8riRjhb8O3kX08ti8qa14kSiIJuoOb2wA1l/P/pk=; b=znDACpFXCAMxv5DzqX86DZhnao1GjF6A7WeRKoV90I2Vskk3A1DELyufIb8sSYa4ta xw06VdUr/sDqFbySdAruz++qqtj/QYqQMo1arNdcIXNqTXAlre4gGl1c9+0n8apf70Q1 J8+P30sXGRRFXGyad3+a2eGlREsFec0+0TDuQAm05I9d+6hy8UYpdv6JiQTH+inrjEwF UQ2O2COiEVCP4QALvFwj4Xx1BJbLDE5AZmqSBZmng/rPqY367m4E6nFybmwPo2g9+KxQ NqnLo/cPqDYo3lw2CtuUGf9meW/WKvITpFmaEwpgmd/Uj3YDemOTlcJJHe4j4FQhcQXZ eeZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256748; x=1756861548; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kSe8riRjhb8O3kX08ti8qa14kSiIJuoOb2wA1l/P/pk=; b=kjmaABR7RRRHQ60fF/0M8Ze+z2sY1vqxCTnGNjEqE4iIkuPTMCcTzLWmTHH5oVaU+V l93+WqEkoXNolZjA23dL+eDXh1Rr7m9X1cvlwcxJ3rwCH5trfRCxmI/wSeyJfWOjRA2F YGOiEH32adCxr5ZI6mHmXsmnfNjWq5kURqH4hJF9f42LXvoLSCassHWFj0Y2rkisLgtT CTVClspa+KXDdnyWl4mmwSTrZQzMJLIeWTe0sImo72o6xduSzTJVn/QKX7E62zDxiXgG peIKBe7ENYAmjjBOibgcZGs8rZBQRfgjLyC4gq2BlKyVs2hHSHCtwSCYoXTf6cPegb2B 0xEg== X-Gm-Message-State: AOJu0YxAv6eHotNyG6i5S1yG52tvikDpIcQEHXXfrbkOJ/3cZdQJajHv BCrtJ6Lyuv6dWme+6j2/pJv+mC0HenLrt2Sigl+H2RmscPyzyWYFgFDtUimsDCWUjIPtK+jb6u8 WC+xEPdE= X-Gm-Gg: ASbGncuvfvswmHcz+wzGEN9j4B64bROuTH5hZYv/bQUdoit0VVYKPYw+jXwES33EmCo t3sODpiCWLj4enBDC9+VjRi3tjumj3Cg1ISP3bvnYHaHZwNQtSVjLyOfw/e/VzSHlG6YId+ARr7 txhkAh0A8xG0g0nI0wNYWpLeBgq/pWb9jSjdVZao42mVJyvuSjG4PH92cpVD7Rkb8nLWkStkSqd sUzNI+X1LE7SYgpG4oMUYD6TSyk449RWMdKSrpnDkMT6PtBciK/4tpotHtRDvciTtS5AEJB0g8B GEOBFfBS20C2Em/pG7QtGJNr1dqueQ/Dy0lNnEjJ3e2UDOeDEcI+QTON9REeXv9BHgpgqQig95F QjwzW9dSs0szC3QFhHyxTh7a9FTiUG/aEE7sS X-Google-Smtp-Source: AGHT+IFA5oZPxNUGizV7wFeIpe/aYobhUrWo8IuE1XqMukiwfiDEPQpgcf/0sgIX4oYI4d63JmXxOQ== X-Received: by 2002:a17:90a:e707:b0:31f:150:e045 with SMTP id 98e67ed59e1d1-32515ed147emr22149559a91.32.1756256747890; Tue, 26 Aug 2025 18:05:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 07/61] target/arm/hvf: Replace hvf_sreg_match with hvf_sreg_list Date: Wed, 27 Aug 2025 11:03:57 +1000 Message-ID: <20250827010453.4059782-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756256972658116600 Content-Type: text/plain; charset="utf-8" Change hvf_get_registers and hvf_put_registers to iterate over cpregs_indexes instead of hvf_sreg_match. This lets us drop the cp_idx member of hvf_sreg_match, which leaves only one member in the struct. Replace the struct with a const array. Instead of int, use the proper enum type: hv_sys_reg_t. Rename from hvf_sreg_match to hvf_sreg_list because there is no longer any matching going on. Signed-off-by: Richard Henderson --- target/arm/hvf/hvf.c | 45 +++++++++++++++----------------------------- 1 file changed, 15 insertions(+), 30 deletions(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 5fcfa9a999..37d8f795eb 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -394,11 +394,6 @@ static const struct hvf_reg_match hvf_fpreg_match[] = =3D { { HV_SIMD_FP_REG_Q31, offsetof(CPUARMState, vfp.zregs[31]) }, }; =20 -struct hvf_sreg_match { - int reg; - uint32_t cp_idx; -}; - /* * QEMU uses KVM system register ids in the migration format. * Conveniently, HVF uses the same encoding of the op* and cr* parameters @@ -419,9 +414,9 @@ struct hvf_sreg_match { =20 #undef DEF_SYSREG =20 -#define DEF_SYSREG(HVF_ID, op0, op1, crn, crm, op2) { HVF_ID }, +#define DEF_SYSREG(HVF_ID, op0, op1, crn, crm, op2) HVF_ID, =20 -static struct hvf_sreg_match hvf_sreg_match[] =3D { +static const hv_sys_reg_t hvf_sreg_list[] =3D { #include "sysreg.c.inc" }; =20 @@ -434,7 +429,7 @@ int hvf_get_registers(CPUState *cpu) hv_return_t ret; uint64_t val; hv_simd_fp_uchar16_t fpval; - int i; + int i, n; =20 for (i =3D 0; i < ARRAY_SIZE(hvf_reg_match); i++) { ret =3D hv_vcpu_get_reg(cpu->accel->fd, hvf_reg_match[i].reg, &val= ); @@ -463,13 +458,9 @@ int hvf_get_registers(CPUState *cpu) assert_hvf_ok(ret); pstate_write(env, val); =20 - for (i =3D 0; i < ARRAY_SIZE(hvf_sreg_match); i++) { - int hvf_id =3D hvf_sreg_match[i].reg; - uint64_t kvm_id =3D HVF_TO_KVMID(hvf_id); - - if (hvf_sreg_match[i].cp_idx =3D=3D -1) { - continue; - } + for (i =3D 0, n =3D arm_cpu->cpreg_array_len; i < n; i++) { + uint64_t kvm_id =3D arm_cpu->cpreg_indexes[i]; + int hvf_id =3D KVMID_TO_HVF(kvm_id); =20 if (cpu->accel->guest_debug_enabled) { /* Handle debug registers */ @@ -553,7 +544,7 @@ int hvf_get_registers(CPUState *cpu) =20 val =3D read_raw_cp_reg(env, ri); =20 - arm_cpu->cpreg_values[hvf_sreg_match[i].cp_idx] =3D val; + arm_cpu->cpreg_values[i] =3D val; continue; } } @@ -562,7 +553,7 @@ int hvf_get_registers(CPUState *cpu) ret =3D hv_vcpu_get_sys_reg(cpu->accel->fd, hvf_id, &val); assert_hvf_ok(ret); =20 - arm_cpu->cpreg_values[hvf_sreg_match[i].cp_idx] =3D val; + arm_cpu->cpreg_values[i] =3D val; } assert(write_list_to_cpustate(arm_cpu)); =20 @@ -578,7 +569,7 @@ int hvf_put_registers(CPUState *cpu) hv_return_t ret; uint64_t val; hv_simd_fp_uchar16_t fpval; - int i; + int i, n; =20 for (i =3D 0; i < ARRAY_SIZE(hvf_reg_match); i++) { val =3D *(uint64_t *)((void *)env + hvf_reg_match[i].offset); @@ -605,12 +596,9 @@ int hvf_put_registers(CPUState *cpu) aarch64_save_sp(env, arm_current_el(env)); =20 assert(write_cpustate_to_list(arm_cpu, false)); - for (i =3D 0; i < ARRAY_SIZE(hvf_sreg_match); i++) { - int hvf_id =3D hvf_sreg_match[i].reg; - - if (hvf_sreg_match[i].cp_idx =3D=3D -1) { - continue; - } + for (i =3D 0, n =3D arm_cpu->cpreg_array_len; i < n; i++) { + uint64_t kvm_id =3D arm_cpu->cpreg_indexes[i]; + int hvf_id =3D KVMID_TO_HVF(kvm_id); =20 if (cpu->accel->guest_debug_enabled) { /* Handle debug registers */ @@ -688,7 +676,7 @@ int hvf_put_registers(CPUState *cpu) } } =20 - val =3D arm_cpu->cpreg_values[hvf_sreg_match[i].cp_idx]; + val =3D arm_cpu->cpreg_values[i]; ret =3D hv_vcpu_set_sys_reg(cpu->accel->fd, hvf_id, val); assert_hvf_ok(ret); } @@ -899,7 +887,7 @@ int hvf_arch_init_vcpu(CPUState *cpu) { ARMCPU *arm_cpu =3D ARM_CPU(cpu); CPUARMState *env =3D &arm_cpu->env; - uint32_t sregs_match_len =3D ARRAY_SIZE(hvf_sreg_match); + uint32_t sregs_match_len =3D ARRAY_SIZE(hvf_sreg_list); uint32_t sregs_cnt =3D 0; uint64_t pfr; hv_return_t ret; @@ -924,17 +912,14 @@ int hvf_arch_init_vcpu(CPUState *cpu) =20 /* Populate cp list for all known sysregs */ for (i =3D 0; i < sregs_match_len; i++) { - int hvf_id =3D hvf_sreg_match[i].reg; + hv_sys_reg_t hvf_id =3D hvf_sreg_list[i]; uint64_t kvm_id =3D HVF_TO_KVMID(hvf_id); uint32_t key =3D kvm_to_cpreg_id(kvm_id); const ARMCPRegInfo *ri =3D get_arm_cp_reginfo(arm_cpu->cp_regs, ke= y); =20 if (ri) { assert(!(ri->type & ARM_CP_NO_RAW)); - hvf_sreg_match[i].cp_idx =3D sregs_cnt; arm_cpu->cpreg_indexes[sregs_cnt++] =3D kvm_id; - } else { - hvf_sreg_match[i].cp_idx =3D -1; } } arm_cpu->cpreg_array_len =3D sregs_cnt; --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257241; cv=none; d=zohomail.com; s=zohoarc; b=FqHWVqWrDUkHWK1/tRWH+oHhLd5qWa46TgvSu4d/BAEZKdHh5OD900M2vto2kKuQEQKI8A16Vu/WZYkt7AnbKMg3Uu3wFufT1m5V7iQIBq+IvdtPIXE6lyTSn6sApFrrHBC324Bbc/eW/Cu5qTA3YdggYDycog22rbAJdNKEya8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257241; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=q73+ly4FjnvQ2ESSfwdG4UgRILSHXmkXXwonIPerI+k=; b=g6EzQjPfg2rjUcHAS2PmzFtH6kG+7kYv3LCxfbEwC9QGtuLeW9z8swlNATICcOZuBIeTeERnwDbaWyZyIGPIIB/qh6NwdQNNxEwcMuQXwjPZ4ws0cG07anKZTmZ/R7yMm77KA98ZqHHMEyf3kUlxOaqAVpo1pp1Zvi8/z+DxsEk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257241460429.1927574413113; Tue, 26 Aug 2025 18:14:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4dH-0006nE-MI; Tue, 26 Aug 2025 21:07:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4ce-0004qI-Ig for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:45 -0400 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4cS-0007L2-Ph for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:42 -0400 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-76e4f2e4c40so5591021b3a.2 for ; Tue, 26 Aug 2025 18:05:57 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.05.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:05:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256756; x=1756861556; darn=nongnu.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=q73+ly4FjnvQ2ESSfwdG4UgRILSHXmkXXwonIPerI+k=; b=UwQY6+t2v7KzwNhBiTkYXx8VgKCTmT6DRaiEnJ8IDdVN0qYOPDRhqy6bPwWX1rW6qu i1ol+7DpdYLzGAu38Sll9wOwebuJgSM0algUaednd79LXz5h20L9HR6Sr4GU/j8ehV/9 ZmH5vSfkuh4TROYlFk34qnCefwt78JcNJJeUDZxOs6ZtGtMdbINBCIkhZKxvkGhcq6m/ PWL2+Q4tglxcQ/XyJt0gfHFdZoEN/SZ3Am+IpuoOWAN6OMNeoRwNiwrEXJ7XUuRE1f0L 0OVivbgAvqx8toxpJ3Hr1QVMd7O3wOo9xQEa2VIXNI32sYLfQL9JCS4SNNZJipOcoYAq gvRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256756; x=1756861556; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=q73+ly4FjnvQ2ESSfwdG4UgRILSHXmkXXwonIPerI+k=; b=DOcyBPDNPb5Xt094YrrzQxZqTYAH/Ms3LXk6aUBmBHHw12cDSTYqQpd6uahr5kobfW s4BwY5l1tMbvQUZTfB2kAxma4q0xQeiEK+mQOwtx4w2s79N1y9JIcm7H5Z/IH3gbOrrg 9LY/D4TyfBXXKHhA1djudwwgdN53pFFZrPt8UJIa7/9vcjJB6EQRlVMNpJwJNiB9gIxu NGJrAqJLm7PjmMpq6c3CV1Ob7PeSV0LVAnslGjVShtYBx1OcCdeHzFHOB8/0fHDbxwnw 8k5ElVWXWQH0KlA8CAsB11tFtcawERGCVHyVhyTqxA8c9WneouKI7lsJIfWRlTJ1e6m9 BAZw== X-Gm-Message-State: AOJu0YzeYc8BDzVbjPK2KH9/pMCY4YuRG2yaW0Va+xFYoaXiRZcjXyPt OXJ5RCMqMNzugKiNMyQ7TWA0LecbHk5HvKuFUnGp5Wah/705NCJVIpRx8jCEpXH6ljix+mZRmY/ aND0LWvg= X-Gm-Gg: ASbGncujNL0wEqmbSIQDq2V3Zj2MH1RKNOBJ/KkxyavAo7Yre1lTtMOoWmgb6nWjniL 5VUd3I+mqZX9UJpcWyVvC27d709gA/YNmY31K7Q4hiaKbf7BusapHoIsS5/icvDrTtJC0PEG3Oq CicEJM02twg0HDsJZmg1QwMPbRWxtDX6Kc5F1UY28QtA+WOljTGDNk0sFnYc04+zWviaGC1ufkR /N3u1hgiHfGBILg+110ooADRKsh+vyOAc7kZF3Qcrkr/bjJ9+v7wiboM6S468fTk5cEujPkLpm/ yKnlQqjOhmZQtaHUhV6f2HjiB0Ke8yai+ttt2RK7SEmkfLFAPA5LAKlDIdIZEcUZ3HgpYTT+hKo xR29jCVPJYlLcoQtkuBuAPlQM2A== X-Google-Smtp-Source: AGHT+IFLzPHGqNmsFcWOoVNdSenEulSR80ObvM5WYd1ZiVGYbsHoq4pOOE9wsy/jYbT8cPk52uHEgQ== X-Received: by 2002:a05:6a00:4f83:b0:748:ffaf:9b53 with SMTP id d2e1a72fcca58-7702fadb5c7mr20099354b3a.16.1756256756027; Tue, 26 Aug 2025 18:05:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 08/61] target/arm/hvf: Sort the cpreg_indexes array Date: Wed, 27 Aug 2025 11:03:59 +1000 Message-ID: <20250827010453.4059782-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257241961116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/hvf/hvf.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 37d8f795eb..5f19347bc5 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -925,6 +925,9 @@ int hvf_arch_init_vcpu(CPUState *cpu) arm_cpu->cpreg_array_len =3D sregs_cnt; arm_cpu->cpreg_vmstate_array_len =3D sregs_cnt; =20 + /* cpreg tuples must be in strictly ascending order */ + qsort(arm_cpu->cpreg_indexes, sregs_cnt, sizeof(uint64_t), compare_u64= ); + assert(write_cpustate_to_list(arm_cpu, false)); =20 /* Set CP_NO_RAW system registers on init */ --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257292; cv=none; d=zohomail.com; s=zohoarc; b=CfhNnhcL8ok+hygt1/O7LJf9rqGwtImr2o0HiLp4kbJsnp4xqvGZ5fbG009tAAdzBVxFyQ7K1rOdCE6mdOqJvCeAJd2Duy2a1QHyXod2OEwcwaZgRKielQ1Eh2n92e6HpEb5QOsoYvsVv5fK4wQGz5V6gS5HI04qxHVY/r929/o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257292; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=S7rfDexr8IojFFB3Ylls8o6GXbvzvHLWWwsryQyDt3k=; b=KzGDHFKekZQdia8dV5MPKWDCAFPwdT4mURvihNL1Uxt8h0pnzXIkLGQCjc6PzCPDuH6qrF2lhqHMi8S5o0FysR4HVY+/gFFfQdv+m4EdEv0lHuZvNM2ThKezlRZB2liiF4dvNUopNOE0iIBf57ifUiQ4lHRY9DCvZQgj8H9RhrM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257292421976.1800440539142; Tue, 26 Aug 2025 18:14:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4dg-0007vx-00; Tue, 26 Aug 2025 21:07:48 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4cj-0004wc-Li for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:50 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4cU-0007LO-AG for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:48 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-76e4fc419a9so5859870b3a.0 for ; Tue, 26 Aug 2025 18:06:03 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.05.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:06:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256761; x=1756861561; darn=nongnu.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=S7rfDexr8IojFFB3Ylls8o6GXbvzvHLWWwsryQyDt3k=; b=UjdtHh+fsaNAlS1CI3hc5SpGgylUcLb0LJhxkMBs1XQFY4AndllIWVQWsP2ZRPG2KI l81ihExcyLdGHD02q44Coi0AknEQ8l2OSSXG5dW/Olg4mMkEiJMOX1q1cRpGv02C5IyE XuZiLID6y3+6rPqeCoM0ql87Zw7hCafsTN58DMixNqWYpH/5w6q9GTgf7U9m08fABNcg HNISQ5jKhQD/E534lR74Mpxq0HKgxWHuvtotnUN44rAxAt8a6PsDt9fLKg0/Xft72xgf 90FwjHLA6/Nqug8Jf2r0qZI54JmyxB5LNwTcAxxqaMj3naHFkaZ9TcgsS3dsJ6vrHNf8 Wbew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256761; x=1756861561; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=S7rfDexr8IojFFB3Ylls8o6GXbvzvHLWWwsryQyDt3k=; b=jG2ok7l2sSmp1Ph1HY501fQLVzigIUVBQJLxJ71ZmFdkIARoeNTUKtMtp8z1erCp0G KD1FqCtk3FN3qTRp+sKHL+zM79wvAfshRt+vYTqEXEZEMAn7H3tuhohMHUXA2z+znRaR VGY6/5TYm2WnSfdhar5MpxrlfrkzVn6EsshDzNqb+KyyPHntBcbRUEuwH4s4gxYpJBxU bu9pvKTrhmbSWIZWglMJBMwpzNnsyb1i3rea59KLdIkQCbZf2GVawJwRhrwgkg88i18V d3tvUU0Txhwxzr1SAlSQULHcDUyNT3vYz56BlSffigEojPUsf38TUCsxIXOw+mwaKu5b vZKw== X-Gm-Message-State: AOJu0YywDrpUNj3k4XmVotqwpSGRhess46P0ylu8Rx9+yBR5vkM+JBRl jJFLmWH+k6nP8xFIvgL1B0zI5cM6bFFXKsygaZhTa/bhPh2JjdhokwDyrliGrvAYXXCjM+9n8kk fD30aWgg= X-Gm-Gg: ASbGncsq3G0buo3SQZmnRsXMuBHs/hHObkE/NBXwmHfzZ72AAc5iiAAJ4MSjlthl7xE 9ZMXvPrIdKvRLs//2/dqpZIf8Uv9OmAY2wYKlFJBoys+n12DyxlJuobE0B4MSSFf/oiPbmqNJle 22+LEBFBnunpuX2qZFutDa6r0IovqZ5/c/INALsfsqCxRpBf6KAQxj+p1yFGgOzy5Aw6eXJBzlp kdPrURQ1ihpGzDABPl9JhIPCkh4rCy549Dbm5gqfCcA+qZcR5s1RkNWW2yIGs+lpRmzhWmSUXiB ir7wlMABGSt6vtJEGBYmctlr0xggfZj2fScupKpV5dfKOorD2hekPsyE8pggxany2L7JKAdlFfJ GYGUmwztrCGYiim6hQr9dHIsy9lT3EmPEFxBp X-Google-Smtp-Source: AGHT+IGgFkOvE4Xx87bEubjg8NG4HAm0VznNcD6QuwdToYXwt7ikh/5Z5l/cIscI8N6d6mnXLLRbDQ== X-Received: by 2002:a05:6a20:3c8f:b0:243:78a:829f with SMTP id adf61e73a8af0-24340e4855bmr28667491637.56.1756256761356; Tue, 26 Aug 2025 18:06:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 09/61] target/arm/hvf: Use raw_read, raw_write to access Date: Wed, 27 Aug 2025 11:04:00 +1000 Message-ID: <20250827010453.4059782-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257294730116600 Content-Type: text/plain; charset="utf-8" Reduce the places that know about field types by 2. Signed-off-by: Richard Henderson --- target/arm/hvf/hvf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 5f19347bc5..9dffa99ed1 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -1153,7 +1153,7 @@ static bool hvf_sysreg_read_cp(CPUState *cpu, uint32_= t reg, uint64_t *val) } else if (ri->readfn) { *val =3D ri->readfn(env, ri); } else { - *val =3D CPREG_FIELD64(env, ri); + *val =3D raw_read(env, ri); } trace_hvf_vgic_read(ri->name, *val); return true; @@ -1435,7 +1435,7 @@ static bool hvf_sysreg_write_cp(CPUState *cpu, uint32= _t reg, uint64_t val) if (ri->writefn) { ri->writefn(env, ri, val); } else { - CPREG_FIELD64(env, ri) =3D val; + raw_write(env, ri, val); } =20 trace_hvf_vgic_write(ri->name, val); --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257517; cv=none; d=zohomail.com; s=zohoarc; b=j2ncJZag1OPVduaHd6x9Wm0corisgFHfGUsLb+z2qRmp0IXz+T+gpow/DNAc+6mZDYzUcYiPr52LpSOSN4+YurRZSPNZNHpiFQzwq26EG3K8cnjHvrBhyukddr5G854Yg1MnyHZicx6gSomtdND7f1PmF4olnbTtZxSooyE5m6A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257517; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=MNK4RwSNEHIMPmqrD7172d7GDCHMVFkY8KsTfaRpDOY=; b=KxkjObJp2sxmgY7o3FXRO5G5DiR9+J0achsaEIhFrlmZ0h1aoJC3V2+QZxOOZJAt7ryGJ6mumYxmKd6X1MuD05uQGV8OMM/mVN4xHDd0sCsl87tVszCG6KdNYNuD7/NNiBvJyVBVo1M/A9PYBrPzBM8GMtX2vYLy+dEWWnaq5X0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257517655425.52922240235364; Tue, 26 Aug 2025 18:18:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4dn-0000AG-Fq; Tue, 26 Aug 2025 21:07:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4cn-00056n-UH for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:56 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4cT-0007M4-Cz for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:53 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-77201f3d389so997241b3a.2 for ; Tue, 26 Aug 2025 18:06:09 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.06.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:06:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256767; x=1756861567; darn=nongnu.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=MNK4RwSNEHIMPmqrD7172d7GDCHMVFkY8KsTfaRpDOY=; b=BgQ2IwHwYVxDlQxMJuTje087F4wF2m50loT7a3NNMMANhiM4D6miSeqKF+gWoL0l40 5Y/CiuitWE3I4z+8VE6Px38gf/QO6Ze5AwfBxTNSz98ii7Q9DupLSCsNqgeJujF0qwK0 xLQl7S6I/eqy3Vxz9WZDTqleaV1QrxF/FDUEB9F79aXkuuB2auSJq8UQHneatdGub3x9 xlc00+7cam2ACYlVXQ9K080Bys8Ui29k+LmrkCJ7MTIP3Sr7JKK2M3aXIB+IwshD/A4L ofX1md3NDvjbwdGpRJW3rJfeF1iPF8+691/vKFeVlR8pbdpGpuQIVgQwch2quqQeTa4E jXiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256767; x=1756861567; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MNK4RwSNEHIMPmqrD7172d7GDCHMVFkY8KsTfaRpDOY=; b=UPUkAW/IQgg/Ix6oijsd848W7Fa3fT/7sRCvq0+h38mucqMy1mNhXe6mqGtKwvs6M/ BOg8MDhQWJYwREkboxHjOn7fwWM3TgDGYQ7uOTohe8jjvaV2Ch8KFE+gcrfunWambWle a7b+pOpjLsXNfCPsYXhAf4h6GDEJRWRiePhUepJ4TA2LSBPgAAit+q9kiIOEEsMNrqY2 OYzbQxvdgA8K5DxbSL5LuMdCJPNEe4F2z088AuSzYTm7ZPCRqu8MtIrewNwIzbc0+yP5 mOiAL9zN+akaWZiRDcDJBTlRKZUW+2JbLyPjZCY1w2lJO5zRm2gq7J+GDRwNuMjOP0yY TKiQ== X-Gm-Message-State: AOJu0YwBYEl5N8z+cN54rxs/9TPO6qOW9H2BXxGy3UiuHsRFRsGSUly6 rymH5u6dn8kSXDSGZdAfpztHmQNrvBp38gkpQXpAY7z/azhCaP4wVS1kC9ygHTgQNmXmw9BuDKb vcMU0MVs= X-Gm-Gg: ASbGncvJjAjs/O3WZnSB5p/MKtyFhm4iAfQWGjvO6kdDL5u0x9kJOXKTlwE3k7XduKA y2cVc83TcTvb+vwsS+3IT+26dQd2eGLGvrILYL3LbvSn5tpJ3zvcvIIAnxgn5i2O7FbMFUawM/8 3gzU8yG+s0HDHR5WhgPLxjV0qIGjj/6/Z1+GhlNGChAm3G5lcXNwwmYESAV+GFntux8RK11x37/ VTmGMJnNga7ZekMY0KVoVizpNNRd7N6V6DF6RgVn9nZ7x8NAxu00cGDgcsPyP5qUwGt9lz4MNbj 9j62V8+FTb4NkG9zmy1daGYpOb7uSeSmK0cjzbzbL2E7bkUPMZ6YEo7CwSbK7SekdI/pqX32sSW ddKl1nIMZK2PwfeOjxqBEayE19tJGYvTGshgV X-Google-Smtp-Source: AGHT+IFLUsyh29Y1qWYTaS6y/mX+P7docc8VUfhYLI2Redz8MulE8ZzdVpvAM2bW5WKOWkud/xJWIw== X-Received: by 2002:a05:6a00:138c:b0:770:2c2f:6435 with SMTP id d2e1a72fcca58-7702faafbcemr21147179b3a.20.1756256764783; Tue, 26 Aug 2025 18:06:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 10/61] target/arm: Use raw_write in cp_reg_reset Date: Wed, 27 Aug 2025 11:04:01 +1000 Message-ID: <20250827010453.4059782-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257519483124100 Content-Type: text/plain; charset="utf-8" Reduce the places that know about field types by 1. Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/cpu.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index e2b2337399..ed40e102fc 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -192,14 +192,8 @@ static void cp_reg_reset(gpointer key, gpointer value,= gpointer opaque) * This is basically only used for fields in non-core coprocessors * (like the pxa2xx ones). */ - if (!ri->fieldoffset) { - return; - } - - if (cpreg_field_is_64bit(ri)) { - CPREG_FIELD64(&cpu->env, ri) =3D ri->resetvalue; - } else { - CPREG_FIELD32(&cpu->env, ri) =3D ri->resetvalue; + if (ri->fieldoffset) { + raw_write(&cpu->env, ri, ri->resetvalue); } } =20 --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257089; cv=none; d=zohomail.com; s=zohoarc; b=AmJ52C1kICm6BQ9hs8IZFOwjZjKF7mYXCptvPohROb9ugQwavuefWxzx/9SEYkSiK9uQ6djblRlSyuIJXtpE0LGrCTMuXcGYsmTBy5yNK9x3TfCSLd7o5V+ZNLZHSk1xK+QWgoPtH1pqz2Ke84EpNWR/D6AkKrl2oGK46Z7G2fs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257089; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NDTC5pLbdDnYIIvrL8eH2HVsR8F9S2tn86RGWAaaihc=; b=KA0A+LsxZWNDrW9arDhlXOH+AH/VOwcReF5M4SbmBYOpL/rGMS3S4du2/aBScb/guRVutLwhMEGOX7/Rarc9Ga8XPe6I1n7Bgc2fs6fFgiz8Gg12jMzyffPoSD43uCdBRbHPTJ2F+z46QfNbPKNShiDNsJpUqFr+jPLHCih2szA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257089953214.95634872683593; Tue, 26 Aug 2025 18:11:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4dD-0006PV-Ha; Tue, 26 Aug 2025 21:07:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4ce-0004qb-PU for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:45 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4cS-0007M7-Pk for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:44 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-77201f3d389so997258b3a.2 for ; Tue, 26 Aug 2025 18:06:09 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.06.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:06:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256768; x=1756861568; darn=nongnu.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=NDTC5pLbdDnYIIvrL8eH2HVsR8F9S2tn86RGWAaaihc=; b=t/KAsHTOcyYRMiFY5W/24cKK38SRhguWps0GkDmTD9iuPwq9gNxHDpkBh0EuMYH0/H 1r5Axy2pBxIv+9+inoa4EiJy7jnD8RZe5p3z20OfSMxXzmmtuMy0Q09ZMmG50yY+zw61 YXr2f8mafr8vXJCwqceiRBNpO0fmwbo1XDTySQ4N+jJomUv6/UKD7U8cefqUE+HJVtbe lO6LUbyc1pibmfEc/4USgpiWaEfYU92K9Vr79wDv3q8npg3FFv5MU7/lHvBP1ooggHcu JV93UaJkf5DtIqg4e3HACkUjHXVXzLBKwu9gDMerJbJBlYSkINeFjcmlJM3FnwWE9KCA U6lQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256768; x=1756861568; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NDTC5pLbdDnYIIvrL8eH2HVsR8F9S2tn86RGWAaaihc=; b=m4vdXukw5Dp9OtuF7LjG5MLoTfxwLImBcA+fjKTg0/eZGAUIZmDwdHuSdNYDLQPNJR y+scUqwP6UUOLAuvzaDKjuhFk5yPuEuKNmvEyU3b2EUZ6/faUkKRNJRZDybtnl++guxU zug0AOtg7ikdmrVzAGTX/j7qgmpVgcPwQ4vXjnGwYi+BiWzw7vh7rjzRhhmCBsah/5tp ijxFrS5AIy8FawOJ73YqG3OfgHYq3h2Ul9qVW0ekCZsaPbxZS89ZrNm3ypDOcMHsWToc /ROdLs+jiQaYTXMK5CQbJ2XH2iaJ22w4mmGmCBlr9oncaENLu1Qzceo+siBBf9nLRjgt TfeA== X-Gm-Message-State: AOJu0Yxkx7s84sDeFcux/Q3kQo1zEkBTH/P2lqdVDNNjWpNyM9UImyD0 VDZ+a4mo6b6OOcL86oyTtI1urp5FzHledCuSOJ1J0wY+RKx0IJRSfvwossy8knv1/5rWf96G4sS XAmUshHY= X-Gm-Gg: ASbGnctyxBZdqfzu5XHh7Yn8STo6Wv+DXUZyaVo6lApGkm+vhxbgy7DtJIS0P1ZtmZF Ab8Vbng1GGzzvzGqUkntg2RGlvzdx3vJ2JuVvJWxqpAZUe2TOF80jOgqbeu9IFzVhfL3x2Kd1mV BLZOjv/KdRCtehCo5rg0KvFcZEYiNCzzFteUZoClY0YlGIG+cIcI/GCQ08yVoZN5cV4ykWoUBdm cF/EzY46AEhXNnkHPTSDdwrb0iA08bp/lvFEb0Fay/1fI/bp6QVvS+uXFbLj1XcE9ZuuqqDTDMx rHJkO+DhB5t/cvXblS/HwrlLdzP9RrE+PRhtwksU9v8BZzPgDEJpA9XGESkqE6f2ePE6vgITakT oTxIMrLzIdxokQi+Xb0ZUM4PueA== X-Google-Smtp-Source: AGHT+IH7g1WRL4BCFzaqXmyIoqYOZZYJWCd3K/Y7pVX8nsg2SuZYl6ShNcVSfwZbVtijizCcE0AqSg== X-Received: by 2002:a05:6a00:3695:b0:76e:885a:c3ec with SMTP id d2e1a72fcca58-7702fc0aa85mr24528675b3a.32.1756256768528; Tue, 26 Aug 2025 18:06:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 11/61] target/arm: Rename all ARMCPRegInfo from opaque to ri Date: Wed, 27 Aug 2025 11:04:02 +1000 Message-ID: <20250827010453.4059782-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42e.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257092257116600 Content-Type: text/plain; charset="utf-8" These pointers are no opaque, they have a specific type. Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/cpregs.h | 10 +++++----- target/arm/helper.c | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index c9506aa6d5..3344a02bd3 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -841,15 +841,15 @@ typedef struct ARMCPRegInfo ARMCPRegInfo; * Access functions for coprocessor registers. These cannot fail and * may not raise exceptions. */ -typedef uint64_t CPReadFn(CPUARMState *env, const ARMCPRegInfo *opaque); -typedef void CPWriteFn(CPUARMState *env, const ARMCPRegInfo *opaque, +typedef uint64_t CPReadFn(CPUARMState *env, const ARMCPRegInfo *ri); +typedef void CPWriteFn(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value); /* Access permission check functions for coprocessor registers. */ typedef CPAccessResult CPAccessFn(CPUARMState *env, - const ARMCPRegInfo *opaque, + const ARMCPRegInfo *ri, bool isread); /* Hook function for register reset */ -typedef void CPResetFn(CPUARMState *env, const ARMCPRegInfo *opaque); +typedef void CPResetFn(CPUARMState *env, const ARMCPRegInfo *ri); =20 #define CP_ANY 0xff =20 @@ -1075,7 +1075,7 @@ void raw_write(CPUARMState *env, const ARMCPRegInfo *= ri, uint64_t value); * CPResetFn that does nothing, for use if no reset is required even * if fieldoffset is non zero. */ -void arm_cp_reset_ignore(CPUARMState *env, const ARMCPRegInfo *opaque); +void arm_cp_reset_ignore(CPUARMState *env, const ARMCPRegInfo *ri); =20 /* * Return true if this reginfo struct's field in the cpu state struct diff --git a/target/arm/helper.c b/target/arm/helper.c index d230f9e766..e03cbc0394 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -1067,7 +1067,7 @@ static const ARMCPRegInfo v6k_cp_reginfo[] =3D { .resetvalue =3D 0 }, }; =20 -static void arm_gt_cntfrq_reset(CPUARMState *env, const ARMCPRegInfo *opaq= ue) +static void arm_gt_cntfrq_reset(CPUARMState *env, const ARMCPRegInfo *ri) { ARMCPU *cpu =3D env_archcpu(env); =20 @@ -5407,7 +5407,7 @@ static const ARMCPRegInfo rndr_reginfo[] =3D { .access =3D PL0_R, .readfn =3D rndr_readfn }, }; =20 -static void dccvap_writefn(CPUARMState *env, const ARMCPRegInfo *opaque, +static void dccvap_writefn(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value) { #ifdef CONFIG_TCG @@ -7730,7 +7730,7 @@ uint64_t arm_cp_read_zero(CPUARMState *env, const ARM= CPRegInfo *ri) return 0; } =20 -void arm_cp_reset_ignore(CPUARMState *env, const ARMCPRegInfo *opaque) +void arm_cp_reset_ignore(CPUARMState *env, const ARMCPRegInfo *ri) { /* Helper coprocessor reset function for do-nothing-on-reset registers= */ } --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257247; cv=none; d=zohomail.com; s=zohoarc; b=XQ1525ldqsQJe0QrxMrkgcPZo30JD2UFOSkWbN/mAl8XpGgmiZxGLctcCXZlD5sqlkRcQ6qaluo1lLfPtcLGOH7XevM0qGo7DrXzNzBujSr7Hip7AW47vRNngP/m0FK4P095RjFVfxGDTXwu1UltAVsgs12DKW/+2ktL45cJ4ac= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257247; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=tOyy+/rPG+fuvpUOdt5IfmJ1qSymu2F0o3Ur99A84f4=; b=Xct18cG3XkhPZwcK7Zkhoi491moulOq1Bvqv06V97h0AqsDjXNANea9AaGoxVv/hUye5TPA+Z9LoDZSw3+XVg1RpIrHzkBTfK5nUDiWrDVefnLu1v/zts6P1Mtt8Cp3A/rzxcFv35vzU0d2KHd2oZirE8lFehEbUHMm/b1fCGXs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257247823277.6298322997725; Tue, 26 Aug 2025 18:14:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4db-0007Ob-Im; Tue, 26 Aug 2025 21:07:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4ch-0004si-4d for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:47 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4cT-0007MT-EB for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:46 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-32326793a85so4198344a91.1 for ; Tue, 26 Aug 2025 18:06:14 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.06.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:06:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256772; x=1756861572; darn=nongnu.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=tOyy+/rPG+fuvpUOdt5IfmJ1qSymu2F0o3Ur99A84f4=; b=nZZ7IcPOwKQ2rOuw+Vie01BbgkH+UFFXZDd+KrKjya3vF53jcrZwrjy3z2/jYzyUVw HvAD57HbDH35f3Y56lR9zLBDhRACj8T5qkOJFF0tzXpi8SpegMe1ZJqo3d9KaLJOFbhQ Jh2AznMZsHs4Xn5c8IaWMT29U5qm3vCaYvCJXWtRsWXDkP6Ki2xjr5LqbSg86HlZ6P3q Gf6zAtWP53QkoKvC8oQLYRK0sQdh/O9BoyCkPpKpyV5K6j5hDLHKqCVQQ5zRM5ggTYGt r5SFFBmTznzboWAxo8e/xZtNB3EuizzKNjma+DeQM5hTDKi9zDX/BKt8uWkq9jdbEyHF ibFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256772; x=1756861572; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tOyy+/rPG+fuvpUOdt5IfmJ1qSymu2F0o3Ur99A84f4=; b=HuY56i7VSZ5IvRbtxOd4SpBDhOST4BcOuxzByL3Q9hUmYjlyzDRA1KNZYLKdxs67vy Da7J4Og0q/V98Is3NXRpjE5GX4pf+xV8/T9fhsz95dGcopEFhQ7mSWs9jvgHnKKE+cgp Btg9AVKmMIjX1PfIxMr6tzPhTNyS/Xap97NbOK5Y7xu9LPTlfl4MxoGDQvwXBBnfks8O BfeicUoW8igAZXkrMfRo51tepr/NWbHdrSRWvB67v7UdQmJscOlMlnpVyUslvuUENyc4 OTfSkVrobXyevTFCWD/NKj7cVUJ1hi/JYvg69rLUoRT2QjVdJ85wsEqrrFPBmG9y8X+B n8iQ== X-Gm-Message-State: AOJu0YzfKS/jkwORKlUkI+hkGeuK+FeTXBKxPniuCSr60isRpO8GSImz PcXZKz7XEcupeYFrGX7KC1f1bIIn9rR0CAd4p7V+Ys07NFt2qquWFhfEr3aoCzRewRvI2CB5E/4 ivXzqKKM= X-Gm-Gg: ASbGncujafRGPjZLkn1059AoD2eHKgAqssiWUUSgOomvgShh99xhxIP4HQg4qPOgxNC EaGtUUBFRzgGueTdkv/UtRmi9sYkU4ZvtE2UNDHHu0kthmch0+sZlVcv+v0QJ6XfaOjp22vtMFD arV3YHN28HIDNzuoZnbQe2dBIqB/hfRETy5FKXpbJ+3yVEM4fHLgE2wVUaKWQzn7y+UX8U+hdOD K6MJiiRetIw9oOrh9uEdcD3lskcpKAXoW/YSHHDVuYEWQxMeX1PAvPg2RJ99qfOf+SsQc1DEX/5 EovsweVOwnNQDwYmmZyJB5ei9lLiH0diNQJiXjTZFZkg+/8TT0oFH6nxVZBqYpL+hz9wVB3c882 xbcy36ChP4iuyhgcs1va3hL2ZXWCkhLcyhZtgdAcln0tZS3I= X-Google-Smtp-Source: AGHT+IHkGztZKRN7sqDjwFiiJ3/zp5g+iC3ZJTdvvq+SxoZOvBSEawJkrbsP7bmtf3c2kfJCvJSGDA== X-Received: by 2002:a17:90b:580f:b0:327:7220:f579 with SMTP id 98e67ed59e1d1-3277220fafdmr368254a91.1.1756256772322; Tue, 26 Aug 2025 18:06:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 12/61] target/arm: Drop define_one_arm_cp_reg_with_opaque Date: Wed, 27 Aug 2025 11:04:03 +1000 Message-ID: <20250827010453.4059782-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257248327116600 Content-Type: text/plain; charset="utf-8" The last use of this interface was removed in 603bc048a27f ("hw/arm: Remove pxa2xx_pic"). As the comment in gicv3 stated, keeping pointer references to cpregs has SMP issues, so avoid future temptation by removing the interface. Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/cpregs.h | 32 ++++++++------------------------ hw/intc/arm_gicv3_cpuif.c | 10 +--------- target/arm/helper.c | 29 +++++++++++------------------ 3 files changed, 20 insertions(+), 51 deletions(-) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index 3344a02bd3..b610716c24 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -906,11 +906,7 @@ struct ARMCPRegInfo { */ uint32_t nv2_redirect_offset; =20 - /* - * The opaque pointer passed to define_arm_cp_regs_with_opaque() when - * this register was defined: can be used to hand data through to the - * register read/write functions, since they are passed the ARMCPRegIn= fo*. - */ + /* This is used only by VHE. */ void *opaque; /* * Value of this register, if it is ARM_CP_CONST. Otherwise, if @@ -1004,27 +1000,15 @@ struct ARMCPRegInfo { #define CPREG_FIELD64(env, ri) \ (*(uint64_t *)((char *)(env) + (ri)->fieldoffset)) =20 -void define_one_arm_cp_reg_with_opaque(ARMCPU *cpu, const ARMCPRegInfo *re= g, - void *opaque); +void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRegInfo *regs); +void define_arm_cp_regs_len(ARMCPU *cpu, const ARMCPRegInfo *regs, size_t = len); =20 -static inline void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRegInfo *= regs) -{ - define_one_arm_cp_reg_with_opaque(cpu, regs, NULL); -} - -void define_arm_cp_regs_with_opaque_len(ARMCPU *cpu, const ARMCPRegInfo *r= egs, - void *opaque, size_t len); - -#define define_arm_cp_regs_with_opaque(CPU, REGS, OPAQUE) \ - do { \ - QEMU_BUILD_BUG_ON(ARRAY_SIZE(REGS) =3D=3D 0); = \ - define_arm_cp_regs_with_opaque_len(CPU, REGS, OPAQUE, \ - ARRAY_SIZE(REGS)); \ +#define define_arm_cp_regs(CPU, REGS) \ + do { \ + QEMU_BUILD_BUG_ON(ARRAY_SIZE(REGS) =3D=3D 0); \ + define_arm_cp_regs_len(CPU, REGS, ARRAY_SIZE(REGS)); \ } while (0) =20 -#define define_arm_cp_regs(CPU, REGS) \ - define_arm_cp_regs_with_opaque(CPU, REGS, NULL) - const ARMCPRegInfo *get_arm_cp_reginfo(GHashTable *cpregs, uint32_t encode= d_cp); =20 /* @@ -1143,7 +1127,7 @@ static inline bool arm_cpreg_traps_in_nv(const ARMCPR= egInfo *ri) * means that the right set of registers is exactly those where * the opc1 field is 4 or 5. (You can see this also in the assert * we do that the opc1 field and the permissions mask line up in - * define_one_arm_cp_reg_with_opaque().) + * define_one_arm_cp_reg().) * Checking the opc1 field is easier for us and avoids the problem * that we do not consistently use the right architectural names * for all sysregs, since we treat the name field as largely for debug. diff --git a/hw/intc/arm_gicv3_cpuif.c b/hw/intc/arm_gicv3_cpuif.c index 4b4cf09157..72e91f971a 100644 --- a/hw/intc/arm_gicv3_cpuif.c +++ b/hw/intc/arm_gicv3_cpuif.c @@ -3037,15 +3037,7 @@ void gicv3_init_cpuif(GICv3State *s) * cpu->gic_pribits */ =20 - /* Note that we can't just use the GICv3CPUState as an opaque poin= ter - * in define_arm_cp_regs_with_opaque(), because when we're called = back - * it might be with code translated by CPU 0 but run by CPU 1, in - * which case we'd get the wrong value. - * So instead we define the regs with no ri->opaque info, and - * get back to the GICv3CPUState from the CPUARMState. - * - * These CP regs callbacks can be called from either TCG or HVF co= de. - */ + /* These CP regs callbacks can be called from either TCG or HVF. */ define_arm_cp_regs(cpu, gicv3_cpuif_reginfo); =20 /* diff --git a/target/arm/helper.c b/target/arm/helper.c index e03cbc0394..35a176ea3b 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -7256,12 +7256,11 @@ void register_cp_regs_for_features(ARMCPU *cpu) } =20 /* - * Private utility function for define_one_arm_cp_reg_with_opaque(): + * Private utility function for define_one_arm_cp_reg(): * add a single reginfo struct to the hash table. */ static void add_cpreg_to_hashtable(ARMCPU *cpu, const ARMCPRegInfo *r, - void *opaque, CPState state, - CPSecureState secstate, + CPState state, CPSecureState secstate, int crm, int opc1, int opc2, const char *name) { @@ -7349,9 +7348,6 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, const= ARMCPRegInfo *r, r2->opc2 =3D opc2; r2->state =3D state; r2->secure =3D secstate; - if (opaque) { - r2->opaque =3D opaque; - } =20 if (make_const) { /* This should not have been a very special register to begin. */ @@ -7456,8 +7452,7 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, const= ARMCPRegInfo *r, } =20 =20 -void define_one_arm_cp_reg_with_opaque(ARMCPU *cpu, - const ARMCPRegInfo *r, void *opaque) +void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRegInfo *r) { /* * Define implementations of coprocessor registers. @@ -7616,7 +7611,7 @@ void define_one_arm_cp_reg_with_opaque(ARMCPU *cpu, if (nxs_ri.fgt) { nxs_ri.fgt |=3D R_FGT_NXS_MASK; } - add_cpreg_to_hashtable(cpu, &nxs_ri, opaque, state, + add_cpreg_to_hashtable(cpu, &nxs_ri, state, ARM_CP_SECSTATE_NS, crm, opc1, opc2, name); } @@ -7630,17 +7625,17 @@ void define_one_arm_cp_reg_with_opaque(ARMCPU *cpu, switch (r->secure) { case ARM_CP_SECSTATE_S: case ARM_CP_SECSTATE_NS: - add_cpreg_to_hashtable(cpu, r, opaque, state, + add_cpreg_to_hashtable(cpu, r, state, r->secure, crm, opc1, o= pc2, r->name); break; case ARM_CP_SECSTATE_BOTH: name =3D g_strdup_printf("%s_S", r->name); - add_cpreg_to_hashtable(cpu, r, opaque, state, + add_cpreg_to_hashtable(cpu, r, state, ARM_CP_SECSTATE_S, crm, opc1, opc2, name); g_free(name); - add_cpreg_to_hashtable(cpu, r, opaque, state, + add_cpreg_to_hashtable(cpu, r, state, ARM_CP_SECSTATE_NS, crm, opc1, opc2, r->nam= e); break; @@ -7652,7 +7647,7 @@ void define_one_arm_cp_reg_with_opaque(ARMCPU *cpu, * AArch64 registers get mapped to non-secure inst= ance * of AArch32 */ - add_cpreg_to_hashtable(cpu, r, opaque, state, + add_cpreg_to_hashtable(cpu, r, state, ARM_CP_SECSTATE_NS, crm, opc1, opc2, r->name); } @@ -7663,12 +7658,10 @@ void define_one_arm_cp_reg_with_opaque(ARMCPU *cpu, } =20 /* Define a whole list of registers */ -void define_arm_cp_regs_with_opaque_len(ARMCPU *cpu, const ARMCPRegInfo *r= egs, - void *opaque, size_t len) +void define_arm_cp_regs_len(ARMCPU *cpu, const ARMCPRegInfo *regs, size_t = len) { - size_t i; - for (i =3D 0; i < len; ++i) { - define_one_arm_cp_reg_with_opaque(cpu, regs + i, opaque); + for (size_t i =3D 0; i < len; ++i) { + define_one_arm_cp_reg(cpu, regs + i); } } =20 --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257011; cv=none; d=zohomail.com; s=zohoarc; b=nRjLrJMsuYhcV1IE8RYAzAff/R00BE9G68YvQJMB8FyOkYjmwGBCBihvYlaTwbHgQ3a0G70PBifxXKajrKi+VR5PSvJIXooRMBSpzj2gfKhKxDpTMWZu7FWBeFwWynDNAFEXZ0s++t8fXE0Z8GLZ+IKvx+P6KABRswW95KCdN3I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257011; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=hk62+AS/e7MZO34KLEc7CJ5dvld6WhuGbXC/O1uT0s0=; b=QKMCu7DcoWgf6qbAoENqnyWjJJ5puOIfFlbBMrAbUkd+pikqkmetPSJK0CuKMl30huZZG1PX0XTg8uthRVwuMydaS5eenwmWC+5w++0MfMSL5/+NzpQE+gfWFju3RG9Z70nzLwB+WLT36J5zrZrQAFElfB5boxj2MvCwTVe/edQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257011430797.8283133266251; Tue, 26 Aug 2025 18:10:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4cl-0004zC-4B; Tue, 26 Aug 2025 21:06:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4cV-0004WK-GL for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:38 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4cR-0007Mq-2P for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:35 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-771f3f89952so406191b3a.0 for ; Tue, 26 Aug 2025 18:06:18 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.06.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:06:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256777; x=1756861577; darn=nongnu.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=hk62+AS/e7MZO34KLEc7CJ5dvld6WhuGbXC/O1uT0s0=; b=xK82WJiEy7nUknFkakkRX+1mr0JBJVUdNEwcPS4/cR9jzUgZA9am1q2OM1Ck2egm2n gXA+33amxUeKRmv7D3S5Ogm+7IZAcC6Wuv7JuTx6Kg2rce/yFUTbjz4V1MF+BKICEgkt hx8Ic23eXw2V7TTVcclYp/cOW3/91vb+FkN/IcctkeyplPKLG+1LOMNcqslEm/iOAbp8 qvNTuS3zX8TFAkUj2D5khvczr8mbIN4C4lHZyUqyiDJML8LKRXAUsRSE9vgf6mSHU+X7 2VOmMqDPLixn0wbm8/IXcixrQxR4vqYbC/A/HIQIQvuT410YDAak1+tgt6jC/iG25cxm a3xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256777; x=1756861577; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hk62+AS/e7MZO34KLEc7CJ5dvld6WhuGbXC/O1uT0s0=; b=UhtHYFMVC4EJEjueSFiiJ5laQZWOFXpZoMPnQmih4PTJHRQUzuCtOwLZUcLjmesZZV vxCjy8Q50U6oJEwecHjXPMk7xjJp+ntvmmc6ptCjUHzPn8UxgjOLJQUc83LRT6coeoDv ok5rbODGB2IefZkQsnFlfzDIcZHBEqkB44nE0FClEIqHoX97WFLavnJT50ZH+1MIS8Ix Z68FbP0JmCCrjGSwdBEcZN4UpRdFHiSrDwJ+JO2WYPda1Z19qatXIPXdmsS1b4u7W66f G57kCb4brblZAEEYGVqnkgz3Gw10AMicR6otNJ7JSFVZRLXHNqlOKgU0Wp+l0iNB3rQH Jy0g== X-Gm-Message-State: AOJu0Yzg/UZ5y90EDfWsNJYaNw89bniREIFxhp58vDyjW2qU/CZEVLTq CFGGHnhPJ7Hvfa3KpX5tZiOHqSTbaDGUgLTqbDZV7q4pSmAVp5G67SNrif0mlMCo7/8zcGlM9dg YgXLCTDg= X-Gm-Gg: ASbGnctTP299f/L7MyK3duptHkQdEx6V9kGrewBWGXK9dCwMaoIorlEkjZnB6YteDEa PQQ4DWdJcymVeu6BZ7ol+0w6CQ2k5ou5odEw29dZtX5dMQoYFjfcbwrjrY3dWN99ZhXb2neJrJi +pesfsuQPK0YXmSXDZcHjKTd+Cl1H7bfMhYSkpVxS61X35AMp1Ba+AThAZTk7qNAadqk5DqGdiY RvddVwIB9FTFvi5sWyCGVMHin6dRbMiASxeuXw8p3f1Dh/MpPOyk/aAbuNAlty7DjzM+x9m+/Ix H9bNRX+Z4lYQP0Tm/G9Bkwa3NQQP1sgI2T17lv9DUBCWR6CORcDbV0rRw/A8EcrQmZiZbtp3B0n 7nR0ySa45uz0QUnWoBN+7GxG7YWCExRCD28ko X-Google-Smtp-Source: AGHT+IF2e4b3sa0OjR59rnjuDsbCx4wW2b7oLRUX2W40oZ6u87rwJ4jKBc/9JCyG5FarrMKhzKXgMA== X-Received: by 2002:a05:6a00:4f83:b0:770:57b9:c99f with SMTP id d2e1a72fcca58-771fc293bfamr4653914b3a.9.1756256776924; Tue, 26 Aug 2025 18:06:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 13/61] target/arm: Restrict the scope of CPREG_FIELD32, CPREG_FIELD64 Date: Wed, 27 Aug 2025 11:04:04 +1000 Message-ID: <20250827010453.4059782-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257013268116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/cpregs.h | 9 --------- target/arm/helper.c | 12 ++++++++++++ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index b610716c24..812fb1340a 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -991,15 +991,6 @@ struct ARMCPRegInfo { CPAccessFn *orig_accessfn; }; =20 -/* - * Macros which are lvalues for the field in CPUARMState for the - * ARMCPRegInfo *ri. - */ -#define CPREG_FIELD32(env, ri) \ - (*(uint32_t *)((char *)(env) + (ri)->fieldoffset)) -#define CPREG_FIELD64(env, ri) \ - (*(uint64_t *)((char *)(env) + (ri)->fieldoffset)) - void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRegInfo *regs); void define_arm_cp_regs_len(ARMCPU *cpu, const ARMCPRegInfo *regs, size_t = len); =20 diff --git a/target/arm/helper.c b/target/arm/helper.c index 35a176ea3b..3a9d8f0ddc 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -51,6 +51,15 @@ int compare_u64(const void *a, const void *b) return 0; } =20 +/* + * Macros which are lvalues for the field in CPUARMState for the + * ARMCPRegInfo *ri. + */ +#define CPREG_FIELD32(env, ri) \ + (*(uint32_t *)((char *)(env) + (ri)->fieldoffset)) +#define CPREG_FIELD64(env, ri) \ + (*(uint64_t *)((char *)(env) + (ri)->fieldoffset)) + uint64_t raw_read(CPUARMState *env, const ARMCPRegInfo *ri) { assert(ri->fieldoffset); @@ -71,6 +80,9 @@ void raw_write(CPUARMState *env, const ARMCPRegInfo *ri, = uint64_t value) } } =20 +#undef CPREG_FIELD32 +#undef CPREG_FIELD64 + static void *raw_ptr(CPUARMState *env, const ARMCPRegInfo *ri) { return (char *)env + ri->fieldoffset; --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756256992; cv=none; d=zohomail.com; s=zohoarc; b=BAu37W5LbAMykYkS3VUxmdGd8FAdBwNfgZIFs/wRGJoxUVViGTl68JA8SIsYn301K8pZT6y+BT03KQ7bxiw2wrSo36DowMtRYM+qZb7O6cVEGIKTbt29HSVAmjF6ZIdh5a/sMILkO98xdIvWHAm2dC2QUBkPNR3zfHsh3VY/8G4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756256992; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=y1H6nYK+rCUktWEjNC8YJ7MqEHw0W3aRE6kWYyzhr2A=; b=FLOvAWiihOQoe6v0XVLMJgvCfjxDQVfa88IYqJhz3nDIA8Y637BEQm4e64aUEhYz3aQXBmHbKkBk082axI5Fv/urOnLOlHDd5RAIrwW18Ietq/mFj0tsrUdF6AuougRsG8kse4sLjBx8NPQlPP3nocYBkx/hoMI61dfxOs8gjRE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756256992395747.6051686795995; Tue, 26 Aug 2025 18:09:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4dJ-0006uM-6l; Tue, 26 Aug 2025 21:07:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4cd-0004oU-KH for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:45 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4cT-0007NC-DS for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:43 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-770530175b2so2642648b3a.3 for ; Tue, 26 Aug 2025 18:06:22 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.06.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:06:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256780; x=1756861580; darn=nongnu.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=y1H6nYK+rCUktWEjNC8YJ7MqEHw0W3aRE6kWYyzhr2A=; b=kNw/4pLxb6refZUEMi4WPJ7cpDjJ5jqqWVPC2lzlA+7M1GWD8lvEmy41+PIBPiKcni aEtdU5r+pFtQ9+0yD1twFCJgRqQ/jcoKZwISsacSVZGmRKx1TJhR5ZiY9HLqY5c3sY7f gWv9NtV3BFsHY5/WfJ3vD72nrSfLTd7wUpVQyShI2W1EbExOEuTu3gCNrlpjqf5/cD9R Ku/qf+3BIr4kMIgfV6LBg4vK6H4Nfli0nax9ypvTUw18LV4KmOBq0szWeBY/KIANmeOF xnxKXI+QdlrcXOKagFXq4Qp5bzI7FmLSLa6IwghyERuuE8iU9Sho89rK7J4bLjwJCXlp 5aJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256780; x=1756861580; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=y1H6nYK+rCUktWEjNC8YJ7MqEHw0W3aRE6kWYyzhr2A=; b=OcnoJwOFQm4BYytLgu8NK43fBgBJdSYlFoImM8D18wlQMD12L9gO1lVAbcrK3SMzyV BsEvuPGu62SAyGsdBcxZUmxDnpA9PiHBprVusmkyVXrNmiGmtujlqUpcX0f/MDDBVIAm QXCTMa798MmanbiSljhw7lJUOWuXy679vO3BbhjMQkymPh4ycJgezvhDzm31SoKO2Sex R3x31muuwNjMZ/+oPUmIiDSjzlhoQxGvWvIRGqRG4Irf7wg4zpLhfKYdS6TbVc2WAiKr Cf9kK49z0apLtGebIs20mn0m3RnxGGF9xfKxzXLuB1XEmg+EY8+VldfBI/2iFLI+lVpe +8cQ== X-Gm-Message-State: AOJu0YxENu8F3KPtH7ZhM3+AWBHhZP3HyZ/cYI5n91svfGXbQQPi3YxW m7krPxZPIpZeEDOHbfai5N6DI31A0u/xRK89yFfL1HRlcAmgH+jsI0bOPiZrn3gqA4YR0RNKFVa 3oRWrL00= X-Gm-Gg: ASbGncuRmPydfwt+uuyFSH+WyHM6q6Gx+ubatOqWjvZmTRQ4QEo8nrVkYwkdSWjDUJ0 jfpAc57MhU8pgS0PY5lldZtYIm4+znuS5iTnbsvvoA6RorvCB9DuY6qaDpn2pJltwGjkQm6vFy2 8cEMVaNm5aHE+XAzIQqG0SVT3QMSAc2Dgr5bjdaexxJK0tWyu7MTCdLCf67swbxktmIEfLuF2/B cSx5qMCPhgG7IywkoFKL00kB9JhF3/BWc470ZgLln5kLczdPACykw5zm2w6pmmGAUz0VpiGACnQ xFaKD5F1dKh+DB+1kiicPSnTuVgbQoaNh3UQy7VJREEWa/9Ub/dQOEEDb3zR6an52dkU0sxOJiE PCxe6AFMQUe5Syzctn615QkGvWw== X-Google-Smtp-Source: AGHT+IHMpZwZDyFEn5jj/pdWH7/Ienk5W6xylM9w1m52cMeEm0NG6/64zKrtAwvLQ/RHrMEZ57tNXg== X-Received: by 2002:a05:6a00:b87:b0:771:e842:1de7 with SMTP id d2e1a72fcca58-771e85179b4mr11578843b3a.32.1756256780379; Tue, 26 Aug 2025 18:06:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 14/61] target/arm: Replace cpreg_field_is_64bit with cpreg_field_type Date: Wed, 27 Aug 2025 11:04:05 +1000 Message-ID: <20250827010453.4059782-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756256993519124100 Content-Type: text/plain; charset="utf-8" Prepare for 128-bit fields by using a better query api. Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/cpregs.h | 10 ++++++---- target/arm/gdbstub.c | 7 +++++-- target/arm/helper.c | 18 +++++++++++++----- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index 812fb1340a..b6c8eff0dd 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -22,6 +22,7 @@ #define TARGET_ARM_CPREGS_H =20 #include "hw/registerfields.h" +#include "exec/memop.h" #include "target/arm/kvm-consts.h" #include "cpu.h" =20 @@ -1053,12 +1054,13 @@ void raw_write(CPUARMState *env, const ARMCPRegInfo= *ri, uint64_t value); void arm_cp_reset_ignore(CPUARMState *env, const ARMCPRegInfo *ri); =20 /* - * Return true if this reginfo struct's field in the cpu state struct - * is 64 bits wide. + * Return MO_32 if the field in CPUARMState is uint32_t or + * MO_64 if the field in CPUARMState is uint64_t. */ -static inline bool cpreg_field_is_64bit(const ARMCPRegInfo *ri) +static inline MemOp cpreg_field_type(const ARMCPRegInfo *ri) { - return (ri->state =3D=3D ARM_CP_STATE_AA64) || (ri->type & ARM_CP_64BI= T); + return (ri->state =3D=3D ARM_CP_STATE_AA64 || (ri->type & ARM_CP_64BIT) + ? MO_64 : MO_32); } =20 static inline bool cp_access_ok(int current_el, diff --git a/target/arm/gdbstub.c b/target/arm/gdbstub.c index ce4497ad7c..e2fc389170 100644 --- a/target/arm/gdbstub.c +++ b/target/arm/gdbstub.c @@ -247,10 +247,13 @@ static int arm_gdb_get_sysreg(CPUState *cs, GByteArra= y *buf, int reg) key =3D cpu->dyn_sysreg_feature.data.cpregs.keys[reg]; ri =3D get_arm_cp_reginfo(cpu->cp_regs, key); if (ri) { - if (cpreg_field_is_64bit(ri)) { + switch (cpreg_field_type(ri)) { + case MO_64: return gdb_get_reg64(buf, (uint64_t)read_raw_cp_reg(env, ri)); - } else { + case MO_32: return gdb_get_reg32(buf, (uint32_t)read_raw_cp_reg(env, ri)); + default: + g_assert_not_reached(); } } return 0; diff --git a/target/arm/helper.c b/target/arm/helper.c index 3a9d8f0ddc..c4103d958a 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -63,20 +63,28 @@ int compare_u64(const void *a, const void *b) uint64_t raw_read(CPUARMState *env, const ARMCPRegInfo *ri) { assert(ri->fieldoffset); - if (cpreg_field_is_64bit(ri)) { + switch (cpreg_field_type(ri)) { + case MO_64: return CPREG_FIELD64(env, ri); - } else { + case MO_32: return CPREG_FIELD32(env, ri); + default: + g_assert_not_reached(); } } =20 void raw_write(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value) { assert(ri->fieldoffset); - if (cpreg_field_is_64bit(ri)) { + switch (cpreg_field_type(ri)) { + case MO_64: CPREG_FIELD64(env, ri) =3D value; - } else { + break; + case MO_32: CPREG_FIELD32(env, ri) =3D value; + break; + default: + g_assert_not_reached(); } } =20 @@ -2748,7 +2756,7 @@ static void vmsa_ttbr_write(CPUARMState *env, const A= RMCPRegInfo *ri, uint64_t value) { /* If the ASID changes (with a 64-bit write), we must flush the TLB. = */ - if (cpreg_field_is_64bit(ri) && + if (cpreg_field_type(ri) =3D=3D MO_64 && extract64(raw_read(env, ri) ^ value, 48, 16) !=3D 0) { ARMCPU *cpu =3D env_archcpu(env); tlb_flush(CPU(cpu)); --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756256855; cv=none; d=zohomail.com; s=zohoarc; b=QH4lcOwpMsgBVcywxqEIAx0DErthOtfnOOsZxuDedj2cIdYGyGGbG8ka/n7c1SsFidDCDoGgGYlPLAf8zFLEobJzWFLmj2tZ4Vd00JLG7nTi2zXVRnk8BBXWbDccR8ssCsw2ULJyTrD6HU/ci54dukxzq9w18lOhH7Abx0trVsA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756256855; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Z4Lf8/2iTXAex6ZXuf2I67UjdBKmSW8ls21CHC4ixcw=; b=bviNxtJH8tWQJIDTaWqAogkO+3DpAcQab3B7Dq7wCe8hazM6i1/5jBpNfsqApzphrLDD2YbA1lXCLtM6jO8B+S8O/0QurYpGVKLWesLl+aJ8J5cN0qaeUdy3Y7DvhAp9CusARuarvi7yEgX6AzHcmdovwjJWwa+10R5Lx2AEXb0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756256855789434.5740865356847; Tue, 26 Aug 2025 18:07:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4d8-0005sc-Qm; Tue, 26 Aug 2025 21:07:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4cb-0004iZ-LO for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:43 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4cS-0007Nw-QA for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:41 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-771ff6f117aso1013727b3a.2 for ; Tue, 26 Aug 2025 18:06:28 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.06.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:06:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256786; x=1756861586; darn=nongnu.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=Z4Lf8/2iTXAex6ZXuf2I67UjdBKmSW8ls21CHC4ixcw=; b=Pl2q4ucr8qcm4GpR4RlPVjHpEnZdVj2acudVk4RaClEO0sAXCMAqBlLIMcd1nTPzTN ne652TeGORotKqHsI6GEcW36cvn/pK4edlyiqkZLc0YbmG5610Tgp5AFkkPOzQSe3kRS jnoPUk9jFPMJx/0UIppTWGL5aiq3spsKWpBpKWJjcBCI6+23sKrfFbBol1LUR9wIzzqz n+XPZjVjIfHYnkpGoCSccJJ1wgB4gaM9EOcXu9VfWlofBtorcCdCRIfkGgU2RuPVFNE5 gsuAF+ySGDQplQgBdNyxRYI20tFrqmFllLewON7C65YO97zEmZoHm5t2s8wm1BXqANku 4vPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256786; x=1756861586; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Z4Lf8/2iTXAex6ZXuf2I67UjdBKmSW8ls21CHC4ixcw=; b=KyKj0r5M57bC0gJ8nvW6Xh571+aFRm6pAz/oowJSsxeHcz/7rzDoXOIFNTwalqhn1H xFnOSNGfVtsqImTZoEjNEdKHPMa7Qjr3CZDDtMfEVUGMTFefxcaA34uP/YvM1xxK3ZQ4 3n7odJyxIpajKdvk0/6BJGHMTSWpxP7K990vbmpXEO1JH/903Fbyu7nMeQHn6N8AJWjf SAXutYFF6J7Bsh99nOqDtIJvNy6nMAHRqnInvK7vvLCszpX1tr0It3DUFK2s6x2f/TjV VYjOLUNHol6TOLIHMqln9wSHmAAqdJurN36tUBGcoO/F4Y9pYcdQa9j05+guWV/iyZbX bNTw== X-Gm-Message-State: AOJu0YzMU8qtYmWr5oBEqOV+IF5N4pvRwhk7b7nohgUSk0gezTVaMTN7 XBahGwy6wXtUkVoCI1+hqYPfo6ShhcH6dBmkthgA96l/PddyiIkb9voS1J4ClB+614W5Kc2B2Zc KSPW8qRM= X-Gm-Gg: ASbGnct1p9H/DhNPTbugWaPiwi8hf6ha0V1LM0VtTrA5XWDnCClLKFlSarKSwDi1Ah9 IuWB/6OBNOVYkWK9IJm5RPu0Z7F546AZde6it5Ohs2Ml9KlCYGXCtMdbdoq/JO0yiIZ9m/jrT71 CKuCHBAL44cgFkDgsSGPUUH3WJlTvclKM/RZOVsKJaNEQDef2cG6bEGzGQgdyB14thtC+V3uxSd 6+fla5w9p/lOZ36eqpNGamOoYIALjxw3xgoW8TjkC66yqo/AmqXYRnfuiPXlp6VC5tVosgUG4FT B2UlthcwCfK03Ae1VEGR3G8EBJMlKo3EUFCsTNJcSjo8vfuuVTohgUlEGAaG17B+qmvkmUlN3cx nGSmQwU9s6okZCp9w3t0M+KAVF+VG2hIXbOF0 X-Google-Smtp-Source: AGHT+IHEVY7/8besdjS17Ryjh0NUy8unWQGZsVI/tHL1uTAaQ3cbGP5sEPNOdQ+Ozh8hS9LrCpboXQ== X-Received: by 2002:a05:6a00:4649:b0:771:fab2:83ca with SMTP id d2e1a72fcca58-771fab28737mr4983047b3a.4.1756256785634; Tue, 26 Aug 2025 18:06:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 15/61] target/arm: Add CP_REG_AA32_64BIT_{SHIFT,MASK} Date: Wed, 27 Aug 2025 11:04:06 +1000 Message-ID: <20250827010453.4059782-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756256857186116600 Content-Type: text/plain; charset="utf-8" Give a name to the bit we're already using. Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/cpregs.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index b6c8eff0dd..3dc4c9927b 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -178,9 +178,14 @@ enum { #define CP_REG_NS_SHIFT 29 #define CP_REG_NS_MASK (1 << CP_REG_NS_SHIFT) =20 +/* Distinguish 32-bit and 64-bit views of AArch32 system registers. */ +#define CP_REG_AA32_64BIT_SHIFT 15 +#define CP_REG_AA32_64BIT_MASK (1 << CP_REG_AA32_64BIT_SHIFT) + #define ENCODE_CP_REG(cp, is64, ns, crn, crm, opc1, opc2) \ - ((ns) << CP_REG_NS_SHIFT | ((cp) << 16) | ((is64) << 15) | \ - ((crn) << 11) | ((crm) << 7) | ((opc1) << 3) | (opc2)) + (((ns) << CP_REG_NS_SHIFT) | \ + ((is64) << CP_REG_AA32_64BIT_SHIFT) | \ + ((cp) << 16) | ((crn) << 11) | ((crm) << 7) | ((opc1) << 3) | (opc2)) =20 #define ENCODE_AA64_CP_REG(cp, crn, crm, op0, op1, op2) \ (CP_REG_AA64_MASK | \ @@ -202,7 +207,7 @@ static inline uint32_t kvm_to_cpreg_id(uint64_t kvmid) cpregid |=3D CP_REG_AA64_MASK; } else { if ((kvmid & CP_REG_SIZE_MASK) =3D=3D CP_REG_SIZE_U64) { - cpregid |=3D (1 << 15); + cpregid |=3D CP_REG_AA32_64BIT_MASK; } =20 /* @@ -226,8 +231,8 @@ static inline uint64_t cpreg_to_kvm_id(uint32_t cpregid) kvmid =3D cpregid & ~CP_REG_AA64_MASK; kvmid |=3D CP_REG_SIZE_U64 | CP_REG_ARM64; } else { - kvmid =3D cpregid & ~(1 << 15); - if (cpregid & (1 << 15)) { + kvmid =3D cpregid & ~CP_REG_AA32_64BIT_MASK; + if (cpregid & CP_REG_AA32_64BIT_MASK) { kvmid |=3D CP_REG_SIZE_U64 | CP_REG_ARM; } else { kvmid |=3D CP_REG_SIZE_U32 | CP_REG_ARM; --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756256870; cv=none; d=zohomail.com; s=zohoarc; b=ZZOYFmxOyjkoVpXsbD0ze4WRzoqUNCUx46qgYz8A55gUb+CyPHhdOjBrZsjusAD8h4kGEto+qJhgtpu3ilY27ce68wSkvF0kuPwlS9mAk/IkRe/M4mTD86eY2tPoG2NuVbTswDG3ZFCby/+z/KY5zXjmPHz/IeUKSznUX7AgVVU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756256870; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NnJObcpOjvRlTqxumgfn7EMYSWCiYK0hRCRitKjVJyY=; b=F/vaQevt1xG5nQEFDO2MnILk4j+RBIUdUgPzHYLsuq4nawit4YIRZhxDAEIg5RgcLsa05wHZsrBorI4V6utRSq2jTzlZlzlyyagriW5QB+lADkZsewJebPxRa52UK96/Ioo5T9t3h4pewOMWRNgLOLvYOvn8IOW2rygu5wZnruc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756256870730462.53178688546814; Tue, 26 Aug 2025 18:07:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4d7-0005id-7L; Tue, 26 Aug 2025 21:07:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4ca-0004hX-IF for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:41 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4cS-0007OH-Q4 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:40 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-76e2e6038cfso7071151b3a.0 for ; Tue, 26 Aug 2025 18:06:29 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.06.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:06:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256788; x=1756861588; darn=nongnu.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=NnJObcpOjvRlTqxumgfn7EMYSWCiYK0hRCRitKjVJyY=; b=uZuUrSkJEFzND5GzSBkfWcImi3XEd7zQsQtyD9CWV+aD3zQr4ophw1DS69O0HM3T6z 3YYoqNTjS0uo5ihry4iUFbpDo3WA4iTmY0Aj6CvS7MQ+nrYyHo8jwOxm2Jj5mlxLFV9E 9Z5CNQkG+3HKI1G6nqc01y7bpLaAGx8lk4I9gEwRMtpgJJZodWgjtBC8prbgUUDGT7Un rlxhi90ioabMmg4qn+RtR6rbbIcC1Eji0A9AnsEVmGrPqsgEMROPZgNEpi03fYo3Vf2l LbMx2AhtS4CAX8ZIXrIziOaGx1GAPJr+fCi0Q14fj7Pfiv9uL5mP+v2GhFv3d0qXPaHh aAHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256788; x=1756861588; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NnJObcpOjvRlTqxumgfn7EMYSWCiYK0hRCRitKjVJyY=; b=t6CsvhToVzJP5yfsGSNDpdEEx4ZdQbLmljV7ZD1KqzhRTc+n1d3FUP5+N73ZGy+YEK aiTopZpp2PdUtXUc7bdkx9gYrvzNTcMitftaF2rzpl4Gv3aNMrg+fh3D5SfrZiifH3dr Mt31tcAmaczNuY1nw1IbieFWVvyOnjlvm5Kw9nQ+BYDDoMkwvSxh3RoCEgRPjlj1F91b s5Md0VcB+WRexwBZkevyCSZkqt++KRpr0rJhMYbjeHhL77VwS7Fw5rPze78IdSz+ThmI 6wH9WwhzioyprVkO4xzi1snpgRX/v1IFrWNrvmU2FdXtA81G4ldNGVCL+EMGDoqur5UF Snnw== X-Gm-Message-State: AOJu0YwpSnUGuoUYdQqM/D4FgA+Su9+YGM6QBUN9cD6pUL7ly5ggUBrP +qXFkQjuFsCOPGrSaWL4KVLyic5vjkfn41IKy+AHJcPb5H0kAeIyL+6gEVgo7Pi0xE7WqvU/FwC wBLzoyXQ= X-Gm-Gg: ASbGncv9wXOvFCJkMg92slXGa5u31QfOs2X3mAUDqK/BkzPNntHYsRz3kcoBe7bFIsx 3gV4gFFumFhYrb102pNWO+4Fkm5F9BKmtFcwpu+r9Az0ZJ7UNjJRhmSipEsZVt5eFfujBAcO1Ml 4jNbC778hyQn4pvxHGUCG+XxLp/aiuz+IZqkZjsOnUA+xeYBpVAbm+wAAxfwBXoyTkjPJUMABoy cowDfe3UNAI/OCBiEGaPcL8VmEozKhZjzgRM0w9qk42+fHP5SC/ryFFBlsZHIM2bop6GyF/svGh KZ9A/EcTX1nJhtoaaL0THJ8qOJlY9njQxBbFyS7W9i58T4cmSXd/1FPLNyYC9vSKKXIKXK45fXD zntVZt8C67MDjqqjm3LQYkQi0gg== X-Google-Smtp-Source: AGHT+IFYzCUdcUUmuqbdRdNoAzSLptHmSY+K4WeK1W07Tkwgob/UVQ22Li8VUbXMHzvp/0z13dNP+Q== X-Received: by 2002:a05:6a00:2d90:b0:772:3c9:ce3e with SMTP id d2e1a72fcca58-77203c9d114mr2472701b3a.7.1756256788526; Tue, 26 Aug 2025 18:06:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 16/61] target/arm: Rename CP_REG_AA32_NS_{SHIFT,MASK} Date: Wed, 27 Aug 2025 11:04:07 +1000 Message-ID: <20250827010453.4059782-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756256871167116600 Content-Type: text/plain; charset="utf-8" Rename from CP_REG_NS_* to emphasize this is specific to AArch32. Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/cpregs.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index 3dc4c9927b..7ebe404163 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -175,15 +175,15 @@ enum { * add a bit to distinguish between secure and non-secure cpregs in the * hashtable. */ -#define CP_REG_NS_SHIFT 29 -#define CP_REG_NS_MASK (1 << CP_REG_NS_SHIFT) +#define CP_REG_AA32_NS_SHIFT 29 +#define CP_REG_AA32_NS_MASK (1 << CP_REG_AA32_NS_SHIFT) =20 /* Distinguish 32-bit and 64-bit views of AArch32 system registers. */ #define CP_REG_AA32_64BIT_SHIFT 15 #define CP_REG_AA32_64BIT_MASK (1 << CP_REG_AA32_64BIT_SHIFT) =20 #define ENCODE_CP_REG(cp, is64, ns, crn, crm, opc1, opc2) \ - (((ns) << CP_REG_NS_SHIFT) | \ + (((ns) << CP_REG_AA32_NS_SHIFT) | \ ((is64) << CP_REG_AA32_64BIT_SHIFT) | \ ((cp) << 16) | ((crn) << 11) | ((crm) << 7) | ((opc1) << 3) | (opc2)) =20 @@ -214,7 +214,7 @@ static inline uint32_t kvm_to_cpreg_id(uint64_t kvmid) * KVM is always non-secure so add the NS flag on AArch32 register * entries. */ - cpregid |=3D 1 << CP_REG_NS_SHIFT; + cpregid |=3D CP_REG_AA32_NS_MASK; } return cpregid; } --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257627; cv=none; d=zohomail.com; s=zohoarc; b=UZtiZaYj11FtCR1LHrlfb+2V4zp2N0C69+hxD66jguiwLdNq8nTF5ZaVTew7gEOO4KXhLhqMawYeeURFrNZUAMFKaRiJ6rwjHuFrgFjgaoiwScDzc1Ii5f5ha6wqf0YwxQ2bY8mNOiRBPxuIrkMu0yMalMOKQjtrfpPbOOe17Rw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257627; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/RnAyLOnPglCnqn9KStFraeKQldJjFkimEavUTsc0Rg=; b=V7Bc9GfHaqXAqzpnzU6LLLPF8+1mKufXQYMBsGELI52HV8dmo26TnhwyPLXLUefxVlVR0oEZ+uUH5zb+OK5tAUMOwTNmSknu6dlYg6BKj0zhaSi7o34xUDt22qvN754kTdow2eNc4Ksj61slL/zdvQdrR+iWJr8uVcpSvoQno80= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257627061335.5019917314539; Tue, 26 Aug 2025 18:20:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4ds-0000gr-Qu; Tue, 26 Aug 2025 21:08:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4cr-0005Hj-NM for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:58 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4cV-0007PM-9z for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:55 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-76e2e88c6a6so5565902b3a.1 for ; Tue, 26 Aug 2025 18:06:34 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.06.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:06:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256793; x=1756861593; darn=nongnu.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=/RnAyLOnPglCnqn9KStFraeKQldJjFkimEavUTsc0Rg=; b=oUK/FaA3poOrvXVIZEmN/ymGkOo04rqTt1ChlVcPnBVUrg1nQzyxhtu2Wolav7BzjT ftf9oiT5YxWV5B5rtcBgVab1W+IFIL2IB7VXGMCRE/54BbfoVTxQIiiLTFQBjSlgOL79 SOVWnaZy1k2emgN9wXkYZD9/zfDnE0KRQaeZxUhLFV434zTkYr7LviMvF23RDx5fzz40 zpp/eAXnKMQyfqpi4bD1LfzDqiB8zEed37D5COMVonWGk8T8XbiO617c+0x+8Zr3mNqE +f4PvnbaoDAjSxEPRJOxH2ABRqw/ZrB1sUPsfvuvaNhoTu7BUWoFXUgyl2vc6qfLv/51 w1Jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256793; x=1756861593; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/RnAyLOnPglCnqn9KStFraeKQldJjFkimEavUTsc0Rg=; b=u348VW7A8qHWLntO72w1iaPhnqku0FAtE64chrV+kY6p/ggBf51MellXJOFgSQ6c3X Db1CxBt3ZQIWkHrEdBOGvU3MnRNX+hPWEZrGcqZbs6WrBSkY+chWqZJPD7HufRXlcits libDTDWu4VOOePE4lhZUGLXqOPM0Jt1jJ2g/Z6+q+ZqUdyeAruDyHN54z7mKjaWucP6o Ypnjhk+shBZNYe5XwOmmfl1HVRnvCIXj0H4myAbxLk78Lpy4NJydurL+1luOaAh/h6sc vzuj2KyEaYSt6g/9fdhtWRRAHwxhMaNkGildNslIvVKhQuGmlv+U/pxc1aKZuuZWuK8r P+Yg== X-Gm-Message-State: AOJu0YyHvdHtVLkY66rhTkRiPdT9hXvSWnyjFXLo1F1cUvc5iRLq4enf ysZILVgFphK/oVBr6h+S9XsFi2METL+AA+ZMG2fgcQD1qmmH/hCn/mjIpc2i85NWVZuQyhdNEys zhQlWQZ8= X-Gm-Gg: ASbGncuzChS7HktjoXkd8mwOt6KPPVcb9t6fjyHCdokwACigstSXTxpq7fTgiv9fyT5 JDfg5PgSk7jTYYSuzX1WzquE60OznUiycajORbmVO+gpt2S64RmKE8LbJMH6x5RzzZ56oq4IefR gQj4REoqA/S8ZriLBCPS2Q4O5o1B78QFtt0vz/uz+AVAdSJbrB9RSgTNZ3fQ0B7hdqBoQ1UucPN t9jKLaxt10F3xAlCx+R0NOuuT/uLJklHWBC/+tzp1dcqbsND04TRbiJr9a+npOb+mjBQfnWg1UP 7RGzzSgd7AVbocNSUIyfjmppmwtB2btkLLUoDgknKXvn4c7LrINwlMgFQfNAUo2dlMfoNed/SGL XKUx/fbJMB2mEuvss7ne1Pi2uwAOYooAeG3hdOcnExzVOVcU= X-Google-Smtp-Source: AGHT+IEonCEhDn1WNyPkAF8XfoD5+G5TmC+jJSbA71yTPy/HsO2IALLhCVO2/GDzqWP3AuXHgZ6pIg== X-Received: by 2002:a05:6a00:3e27:b0:770:4d54:6234 with SMTP id d2e1a72fcca58-7704d546526mr14810896b3a.3.1756256793541; Tue, 26 Aug 2025 18:06:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 17/61] target/arm: Convert init_cpreg_list to g_hash_table_foreach Date: Wed, 27 Aug 2025 11:04:08 +1000 Message-ID: <20250827010453.4059782-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257628802116600 Content-Type: text/plain; charset="utf-8" Adjust count_cpreg and add_cpreg_to_list to be used with g_hash_table_foreach instead of g_list_foreach. In this way we have the ARMCPRegInfo pointer directly rather than having to look it up from the key. Delay the sorting of the cpreg_indexes until after add_cpreg_to_list. This allows us to sort the data that we actually care about, the kvm id, as computed within add_cpreg_to_list, instead of having to repeatedly compute the kvm id within cpreg_key_compare. Signed-off-by: Richard Henderson --- target/arm/helper.c | 54 ++++++++++++++++++--------------------------- 1 file changed, 21 insertions(+), 33 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index c4103d958a..268cad905f 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -229,11 +229,11 @@ bool write_list_to_cpustate(ARMCPU *cpu) return ok; } =20 -static void add_cpreg_to_list(gpointer key, gpointer opaque) +static void add_cpreg_to_list(gpointer key, gpointer value, gpointer opaqu= e) { ARMCPU *cpu =3D opaque; uint32_t regidx =3D (uintptr_t)key; - const ARMCPRegInfo *ri =3D get_arm_cp_reginfo(cpu->cp_regs, regidx); + const ARMCPRegInfo *ri =3D value; =20 if (!(ri->type & (ARM_CP_NO_RAW | ARM_CP_ALIAS))) { cpu->cpreg_indexes[cpu->cpreg_array_len] =3D cpreg_to_kvm_id(regid= x); @@ -242,61 +242,49 @@ static void add_cpreg_to_list(gpointer key, gpointer = opaque) } } =20 -static void count_cpreg(gpointer key, gpointer opaque) +static void count_cpreg(gpointer key, gpointer value, gpointer opaque) { ARMCPU *cpu =3D opaque; - const ARMCPRegInfo *ri; - - ri =3D g_hash_table_lookup(cpu->cp_regs, key); + const ARMCPRegInfo *ri =3D value; =20 if (!(ri->type & (ARM_CP_NO_RAW | ARM_CP_ALIAS))) { cpu->cpreg_array_len++; } } =20 -static gint cpreg_key_compare(gconstpointer a, gconstpointer b, gpointer d) -{ - uint64_t aidx =3D cpreg_to_kvm_id((uintptr_t)a); - uint64_t bidx =3D cpreg_to_kvm_id((uintptr_t)b); - - if (aidx > bidx) { - return 1; - } - if (aidx < bidx) { - return -1; - } - return 0; -} - void init_cpreg_list(ARMCPU *cpu) { /* * Initialise the cpreg_tuples[] array based on the cp_regs hash. * Note that we require cpreg_tuples[] to be sorted by key ID. */ - GList *keys; int arraylen; =20 - keys =3D g_hash_table_get_keys(cpu->cp_regs); - keys =3D g_list_sort_with_data(keys, cpreg_key_compare, NULL); - cpu->cpreg_array_len =3D 0; - - g_list_foreach(keys, count_cpreg, cpu); + g_hash_table_foreach(cpu->cp_regs, count_cpreg, cpu); =20 arraylen =3D cpu->cpreg_array_len; - cpu->cpreg_indexes =3D g_new(uint64_t, arraylen); - cpu->cpreg_values =3D g_new(uint64_t, arraylen); - cpu->cpreg_vmstate_indexes =3D g_new(uint64_t, arraylen); - cpu->cpreg_vmstate_values =3D g_new(uint64_t, arraylen); - cpu->cpreg_vmstate_array_len =3D cpu->cpreg_array_len; + if (arraylen) { + cpu->cpreg_indexes =3D g_new(uint64_t, arraylen); + cpu->cpreg_values =3D g_new(uint64_t, arraylen); + cpu->cpreg_vmstate_indexes =3D g_new(uint64_t, arraylen); + cpu->cpreg_vmstate_values =3D g_new(uint64_t, arraylen); + } else { + cpu->cpreg_indexes =3D NULL; + cpu->cpreg_values =3D NULL; + cpu->cpreg_vmstate_indexes =3D NULL; + cpu->cpreg_vmstate_values =3D NULL; + } + cpu->cpreg_vmstate_array_len =3D arraylen; cpu->cpreg_array_len =3D 0; =20 - g_list_foreach(keys, add_cpreg_to_list, cpu); + g_hash_table_foreach(cpu->cp_regs, add_cpreg_to_list, cpu); =20 assert(cpu->cpreg_array_len =3D=3D arraylen); =20 - g_list_free(keys); + if (arraylen) { + qsort(cpu->cpreg_indexes, arraylen, sizeof(uint64_t), compare_u64); + } } =20 bool arm_pan_enabled(CPUARMState *env) --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257515; cv=none; d=zohomail.com; s=zohoarc; b=bIDaUS6QbpGl0fMSn61OtOCE9Nuq3BQddNhaqsmhYojpLHeCL3skWo3hlhEWaq5JMIFz+y0EYZGtLrWe20xCslQSHg6t+Jsi0LX7pO2OYkbhmmBMwq0JMghVSV87Q+hfNEQI9lo+9gMmApm0eqb6NEc+ZonBYNTxRp/tQlYdqsk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257515; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=BMuL64RgjNJBh/XTj9TXpDrNBLGbyRPLO9EO9A1A2p8=; b=J5kH7WydU0jx4L0IE9YV1JvK2CS0YklYkObJgXvxNUtuv0DaROXJP76CXWbcQUhXGwovIP28oLKW3MjTFe6t/0QQYa2YdI4nxPbZBdcfsKHYioUcREY0sM/yt4humejVkYJK7CQIztzMVCU4NUvmwbdb8z+fG4sUfsXXM5XgIAc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175625751545377.30852486193623; Tue, 26 Aug 2025 18:18:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4dI-0006qJ-9t; Tue, 26 Aug 2025 21:07:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4cx-0005MM-Bu for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:05 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4ce-0007RJ-Jq for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:06:59 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-76e4fc419a9so5860214b3a.0 for ; Tue, 26 Aug 2025 18:06:42 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.06.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:06:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256801; x=1756861601; darn=nongnu.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=BMuL64RgjNJBh/XTj9TXpDrNBLGbyRPLO9EO9A1A2p8=; b=yZT2C6WETKjHrbBWDHKnFUw92R5URxiG/fyJxpAm2NpUuOFruNVy1mVPjEVR0hz3BG nNk9x4SP+YuEMr2ZQywW8irJQS3MINhyLHNpMVocTyiJ0fWnn+8jQjOvnjMuiFQAnoI7 EgVGi/GKG/GJrScY1iIQkW/wANMkxmnMjSiR36sxDHLtiWNQ/t7L2O88OZ02XqZK2T7v 2SB3av3LkJ6As3wIGUwB3hNzG69WwDvMFfznn5ptUVDL9yNWPXvaLIoIODqP7btYvGTK IKeNT424WWtvruMG+AaEl2YkHA/kr3HCFmqT1ykyffldPZhmr7vCoDQCYhMDngtnOYx+ gAZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256801; x=1756861601; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BMuL64RgjNJBh/XTj9TXpDrNBLGbyRPLO9EO9A1A2p8=; b=evHj2RI42pR1QDRlz/ts4xI1mhNZgXFsUrKP6BTvSlprTNmFiHDTkc9wn6me7wkLP/ JWK2WVH4ZHxODckwv5DOTZGgn9Tmoes/1Vg8ZtEoDSfAGA4n2skOXsRZH05ODFwEDBu6 CwCvxpLe1xA3lQXBpp6xZYv9gPMMXULUoFDlhjKTLATiU2qdbk4lZJ1U/gBFti6+AMGO YSfZ1rrJqiW1pZO3pt31DW4BUQVl2KIHkmFgFSqzmZCeMCAr9YTn6g3iLr5ESmsnp9xw 3c6QiH2SRQEPA9mNR7qtmEzu5i75CD/nT1mRQuMjQs6456WLgosf/P/pyGbrcsMIlYLu +yZQ== X-Gm-Message-State: AOJu0YwV0A9HRSg0LwDtjQZwCHSuU1w+qs6JBNQsoSH4K8gn0cL5rieD Zm8yaMGhTxMSvRQJ7+CjxYhfPqX0uhYL9cXgP2uKYv0FzEW7kDhmY4WOJ9z8E8apdv6wP4NTg8R ql94oiM0= X-Gm-Gg: ASbGnctiA089Mi/IF8uVK33Ss7VoviJuXALeXFBVGHYAocAc7ZRPoS1RgamR437cg0w /GWAqmS4xS08C1W52ageI62q9/1EjIzLVQGOGZeHN3mnqULLyNFUO92FyY8jJJG24Uj26tvorRY 2lxlE6/q/8ktjfIKuAC9epctthW4Y4eyDxV7m4FYGLpJc2Cmp0xrxkgTOItONnG2uSnnhlcR6pL biv1i3MlUbVMKSotmEO6yQVidODTS/AMSldHZq9zLxzvj/96PciJ3lpsb3BniLmjfd0WKBG7D4T X73mm6+NiEOIaqhCLCxXmbZJ6mEyrg5kozIlrjYJO6y34YmnhhEKi4VOwChFT1VyyV8y9sOQY6f wKhrvi4GLSHvP1gHVse4fTWEI0Q== X-Google-Smtp-Source: AGHT+IGaI1uVyol0Hfdy0BTY66sYdIPsHuZvwTVvCkWCtu7ZrvN3/GGGZbvi4slBZJCXSsT37SU6HQ== X-Received: by 2002:a05:6a00:398a:b0:76b:d75c:8a76 with SMTP id d2e1a72fcca58-7702f9d90b9mr21126397b3a.1.1756256800751; Tue, 26 Aug 2025 18:06:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 18/61] target/arm: Remove cp argument to ENCODE_AA64_CP_REG Date: Wed, 27 Aug 2025 11:04:09 +1000 Message-ID: <20250827010453.4059782-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257517582116600 Content-Type: text/plain; charset="utf-8" All invocations were required to pass the same value, CP_REG_ARM64_SYSREG_CP. Bake that in to the result directly. Remove CP_REG_ARM64_SYSREG_CP as unused. Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/cpregs.h | 5 ++--- target/arm/kvm-consts.h | 3 --- target/arm/helper.c | 11 +++++------ target/arm/hvf/hvf.c | 3 +-- target/arm/tcg/translate-a64.c | 6 ++---- 5 files changed, 10 insertions(+), 18 deletions(-) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index 7ebe404163..95b0b9c78e 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -187,9 +187,8 @@ enum { ((is64) << CP_REG_AA32_64BIT_SHIFT) | \ ((cp) << 16) | ((crn) << 11) | ((crm) << 7) | ((opc1) << 3) | (opc2)) =20 -#define ENCODE_AA64_CP_REG(cp, crn, crm, op0, op1, op2) \ - (CP_REG_AA64_MASK | \ - ((cp) << CP_REG_ARM_COPROC_SHIFT) | \ +#define ENCODE_AA64_CP_REG(crn, crm, op0, op1, op2) \ + (CP_REG_AA64_MASK | CP_REG_ARM64_SYSREG | \ ((op0) << CP_REG_ARM64_SYSREG_OP0_SHIFT) | \ ((op1) << CP_REG_ARM64_SYSREG_OP1_SHIFT) | \ ((crn) << CP_REG_ARM64_SYSREG_CRN_SHIFT) | \ diff --git a/target/arm/kvm-consts.h b/target/arm/kvm-consts.h index fdb305eea1..54ae5da7ce 100644 --- a/target/arm/kvm-consts.h +++ b/target/arm/kvm-consts.h @@ -160,9 +160,6 @@ MISMATCH_CHECK(QEMU_KVM_ARM_TARGET_CORTEX_A53, KVM_ARM_= TARGET_CORTEX_A53); #define CP_REG_ARM64_SYSREG_OP2_MASK 0x0000000000000007 #define CP_REG_ARM64_SYSREG_OP2_SHIFT 0 =20 -/* No kernel define but it's useful to QEMU */ -#define CP_REG_ARM64_SYSREG_CP (CP_REG_ARM64_SYSREG >> CP_REG_ARM_COPROC_S= HIFT) - MISMATCH_CHECK(CP_REG_ARM64, KVM_REG_ARM64); MISMATCH_CHECK(CP_REG_ARM_COPROC_MASK, KVM_REG_ARM_COPROC_MASK); MISMATCH_CHECK(CP_REG_ARM_COPROC_SHIFT, KVM_REG_ARM_COPROC_SHIFT); diff --git a/target/arm/helper.c b/target/arm/helper.c index 268cad905f..93cae888e2 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -4527,7 +4527,7 @@ static void define_arm_vh_e2h_redirects_aliases(ARMCP= U *cpu) }; =20 #define K(op0, op1, crn, crm, op2) \ - ENCODE_AA64_CP_REG(CP_REG_ARM64_SYSREG_CP, crn, crm, op0, op1, op2) + ENCODE_AA64_CP_REG(crn, crm, op0, op1, op2) =20 static const struct E2HAlias aliases[] =3D { { K(3, 0, 1, 0, 0), K(3, 4, 1, 0, 0), K(3, 5, 1, 0, 0), @@ -7297,10 +7297,9 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, cons= t ARMCPRegInfo *r, * in their AArch64 view (the .cp value may be non-zero for the * benefit of the AArch32 view). */ - if (cp =3D=3D 0 || r->state =3D=3D ARM_CP_STATE_BOTH) { - cp =3D CP_REG_ARM64_SYSREG_CP; - } - key =3D ENCODE_AA64_CP_REG(cp, r->crn, crm, r->opc0, opc1, opc2); + assert(cp =3D=3D 0 || r->state =3D=3D ARM_CP_STATE_BOTH); + cp =3D 0; + key =3D ENCODE_AA64_CP_REG(r->crn, crm, r->opc0, opc1, opc2); break; default: g_assert_not_reached(); @@ -7525,7 +7524,7 @@ void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRe= gInfo *r) } break; case ARM_CP_STATE_AA64: - assert(r->cp =3D=3D 0 || r->cp =3D=3D CP_REG_ARM64_SYSREG_CP); + assert(r->cp =3D=3D 0); break; default: g_assert_not_reached(); diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index 9dffa99ed1..af03fc7fc1 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -1124,8 +1124,7 @@ static bool is_id_sysreg(uint32_t reg) =20 static uint32_t hvf_reg2cp_reg(uint32_t reg) { - return ENCODE_AA64_CP_REG(CP_REG_ARM64_SYSREG_CP, - (reg >> SYSREG_CRN_SHIFT) & SYSREG_CRN_MASK, + return ENCODE_AA64_CP_REG((reg >> SYSREG_CRN_SHIFT) & SYSREG_CRN_MASK, (reg >> SYSREG_CRM_SHIFT) & SYSREG_CRM_MASK, (reg >> SYSREG_OP0_SHIFT) & SYSREG_OP0_MASK, (reg >> SYSREG_OP1_SHIFT) & SYSREG_OP1_MASK, diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index dbf47595db..743c5a10e1 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2466,8 +2466,7 @@ static void handle_sys(DisasContext *s, bool isread, unsigned int op0, unsigned int op1, unsigned int op= 2, unsigned int crn, unsigned int crm, unsigned int rt) { - uint32_t key =3D ENCODE_AA64_CP_REG(CP_REG_ARM64_SYSREG_CP, - crn, crm, op0, op1, op2); + uint32_t key =3D ENCODE_AA64_CP_REG(crn, crm, op0, op1, op2); const ARMCPRegInfo *ri =3D get_arm_cp_reginfo(s->cp_regs, key); bool need_exit_tb =3D false; bool nv_trap_to_el2 =3D false; @@ -2603,8 +2602,7 @@ static void handle_sys(DisasContext *s, bool isread, * We don't use the EL1 register's access function, and * fine-grained-traps on EL1 also do not apply here. */ - key =3D ENCODE_AA64_CP_REG(CP_REG_ARM64_SYSREG_CP, - crn, crm, op0, 0, op2); + key =3D ENCODE_AA64_CP_REG(crn, crm, op0, 0, op2); ri =3D get_arm_cp_reginfo(s->cp_regs, key); assert(ri); assert(cp_access_ok(s->current_el, ri, isread)); --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257280; cv=none; d=zohomail.com; s=zohoarc; b=duKPFa2XyJD66cRBGKIDiScZRf4+ZiVQ3WvJyh3D+T3aDfoJQcvmRQ3lhPCDOuWvpYtZ4HLT3DXTrm5BKygOinrbhAm+/b2+zcWoDgdcd03nLK5QJm8J8XF93x4WNiuYM7rEo0cz6GrltR8KiEzbD4p3CTg3o5RCow1mtLmgK6g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257280; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xm+DiQK3QPrsWhspwKpORtvyMvoqamrQ0zoWrs8mIIg=; b=WU0jBrwVHUwkF02qV+xthUJOV+gl0rqw9KvqASv/pYAnVDWk+2KtdGC2mctMLswZA+ON5bgd5f2qGUY1dmbQD/oJzsMOtd7hHntj5ZjnRQzngNv1781SJtO5kTMxT/xWOrPEkE+n2ZOlyS7TvnQ6Ag5ANS4g+OsOULXBmu5qLdg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257280818832.897142290711; Tue, 26 Aug 2025 18:14:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4d9-0005zo-JV; Tue, 26 Aug 2025 21:07:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4d0-0005P6-8y for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:07 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4cg-0007Rz-1m for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:03 -0400 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-77057266cb8so2485739b3a.0 for ; Tue, 26 Aug 2025 18:06:45 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.06.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:06:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256804; x=1756861604; darn=nongnu.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=xm+DiQK3QPrsWhspwKpORtvyMvoqamrQ0zoWrs8mIIg=; b=UD76AQ8cMaHTg5s1d0d3NXo6BJRRAwlL3TehQuq+fE9+QinvRcjwiJv/g5jtFVDGiO CjzKFw89ZSW9PAE6Yx4cypjX/AxSS4Tl25vUgzoyuSY0lRLMwlws5SHzyd1qSKWsuIUw jr3xijRBUCSk1D8xBHvgbWnpYtTUax0c57Qm0nZmsR8NFjy5rKFZW04bKNNHihsUDE56 DKyVZufDAqh731z74C7Vx0k1KrMBwRJl8oUMPa8UvxUpKjnUg+FgmTnzTk4zIIEHCWTI MGT5RONEQsCOqsuhgwSD10G9rRcBeUydonJ4rba6FAzbLE6+B/LZZ7sdadJMAst8QAMT Z9UA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256804; x=1756861604; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xm+DiQK3QPrsWhspwKpORtvyMvoqamrQ0zoWrs8mIIg=; b=Td+lBRr1TSh+efE8o8jGFEFFbXEp6FZnczB0s+E5gNtS8os5PpA9lCXLec1gblLD8a 7p7ksDn0u/26kWnSWyXu4JEOZtiaf2mrGQchM+q4nDsfkYjhb6My55yXZTcdSeyY43zt wbgj1j2RbeIaVQV4V2Z4y0OiqGR3rSXaNCXJgLdE2CIo5d5IgJznSRzeLRsMjEWhHGu/ yFAtj+yKLRv9u2T6sM5JxjDuFP22Obz5/iUY9f2wVtShr7RFTAl0bYj0vP75opjGuZo7 HrX2bbcZlyeZYZjmeysgox2UzcYnQ8xlJrei5QrIx8gdQdrEQrkvfdu2QdhAAdxd4hgl fwKg== X-Gm-Message-State: AOJu0YzYrW26zXPqKO3biT1muK9EsNwPeqB30NlY8qfJRbe4mNBoekEg NOwdfCvvPqoJCJaZmP7S9USWdDexFY01fb0bmu+Mhuphd3//kw1I3MkKMMBSmeXV+wguZWniZ3Y mUYrsCKk= X-Gm-Gg: ASbGnctjb03JJZ3oAvVAsa6WYfsUtbhkzjf+mlVm0lR66q1kCbKFDuTywzz+mtjicJd QPdmioQdj9jrMnNJG3PL0yAfAZLQ7mdPIfDnZOzN8P70PLRaU3nRJcQpWJt7U7vzTawNT5rZsGS 4l8mSVCal8fq4/qfTMMZM4wo9h4OktUrVARi38Mgl5sX4jRPjDOP08eSikkDsYJTrbSihlA7ySM FJsAJ+Dez79zADqHIWiXEJV+nupWUGwCZFfOhY3vWuG2qE4ViyMAtwgpiR/HJnzyjoc22e4cDzz kW7sul2WwwnOI5JEnOb3fRYX2By6w9c+plG3kZYC349/CS9pXoqJS+tz0kJdWcVy9RBo9gmWjfq GmLIfyjDoT193A62N2PZQcbNWvA== X-Google-Smtp-Source: AGHT+IFavYLkjFmtmd47RFYLz95wqtF/AITqoCSmalH++VzPT9h05R1tRUpwCLbHP1Ad/lvtP/Hd+g== X-Received: by 2002:a05:6a00:23d1:b0:771:e1bf:bddc with SMTP id d2e1a72fcca58-771e1bfccbfmr13032300b3a.13.1756256804289; Tue, 26 Aug 2025 18:06:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 19/61] target/arm: Reorder ENCODE_AA64_CP_REG arguments Date: Wed, 27 Aug 2025 11:04:10 +1000 Message-ID: <20250827010453.4059782-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::431; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x431.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257282769124100 Content-Type: text/plain; charset="utf-8" The order of the parameters in the Arm ARM is op0, op1, crn, crm, op2 Reorder the arguments of ENCODE_AA64_CP_REG to match. Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/cpregs.h | 2 +- target/arm/helper.c | 4 ++-- target/arm/hvf/hvf.c | 6 +++--- target/arm/tcg/translate-a64.c | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index 95b0b9c78e..7bdf6cf847 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -187,7 +187,7 @@ enum { ((is64) << CP_REG_AA32_64BIT_SHIFT) | \ ((cp) << 16) | ((crn) << 11) | ((crm) << 7) | ((opc1) << 3) | (opc2)) =20 -#define ENCODE_AA64_CP_REG(crn, crm, op0, op1, op2) \ +#define ENCODE_AA64_CP_REG(op0, op1, crn, crm, op2) \ (CP_REG_AA64_MASK | CP_REG_ARM64_SYSREG | \ ((op0) << CP_REG_ARM64_SYSREG_OP0_SHIFT) | \ ((op1) << CP_REG_ARM64_SYSREG_OP1_SHIFT) | \ diff --git a/target/arm/helper.c b/target/arm/helper.c index 93cae888e2..b48b669a6a 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -4527,7 +4527,7 @@ static void define_arm_vh_e2h_redirects_aliases(ARMCP= U *cpu) }; =20 #define K(op0, op1, crn, crm, op2) \ - ENCODE_AA64_CP_REG(crn, crm, op0, op1, op2) + ENCODE_AA64_CP_REG(op0, op1, crn, crm, op2) =20 static const struct E2HAlias aliases[] =3D { { K(3, 0, 1, 0, 0), K(3, 4, 1, 0, 0), K(3, 5, 1, 0, 0), @@ -7299,7 +7299,7 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, const= ARMCPRegInfo *r, */ assert(cp =3D=3D 0 || r->state =3D=3D ARM_CP_STATE_BOTH); cp =3D 0; - key =3D ENCODE_AA64_CP_REG(r->crn, crm, r->opc0, opc1, opc2); + key =3D ENCODE_AA64_CP_REG(r->opc0, opc1, r->crn, crm, opc2); break; default: g_assert_not_reached(); diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index af03fc7fc1..bda57614ed 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -1124,10 +1124,10 @@ static bool is_id_sysreg(uint32_t reg) =20 static uint32_t hvf_reg2cp_reg(uint32_t reg) { - return ENCODE_AA64_CP_REG((reg >> SYSREG_CRN_SHIFT) & SYSREG_CRN_MASK, - (reg >> SYSREG_CRM_SHIFT) & SYSREG_CRM_MASK, - (reg >> SYSREG_OP0_SHIFT) & SYSREG_OP0_MASK, + return ENCODE_AA64_CP_REG((reg >> SYSREG_OP0_SHIFT) & SYSREG_OP0_MASK, (reg >> SYSREG_OP1_SHIFT) & SYSREG_OP1_MASK, + (reg >> SYSREG_CRN_SHIFT) & SYSREG_CRN_MASK, + (reg >> SYSREG_CRM_SHIFT) & SYSREG_CRM_MASK, (reg >> SYSREG_OP2_SHIFT) & SYSREG_OP2_MASK); } =20 diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 743c5a10e1..58303c224f 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2466,7 +2466,7 @@ static void handle_sys(DisasContext *s, bool isread, unsigned int op0, unsigned int op1, unsigned int op= 2, unsigned int crn, unsigned int crm, unsigned int rt) { - uint32_t key =3D ENCODE_AA64_CP_REG(crn, crm, op0, op1, op2); + uint32_t key =3D ENCODE_AA64_CP_REG(op0, op1, crn, crm, op2); const ARMCPRegInfo *ri =3D get_arm_cp_reginfo(s->cp_regs, key); bool need_exit_tb =3D false; bool nv_trap_to_el2 =3D false; @@ -2602,7 +2602,7 @@ static void handle_sys(DisasContext *s, bool isread, * We don't use the EL1 register's access function, and * fine-grained-traps on EL1 also do not apply here. */ - key =3D ENCODE_AA64_CP_REG(crn, crm, op0, 0, op2); + key =3D ENCODE_AA64_CP_REG(op0, 0, crn, crm, op2); ri =3D get_arm_cp_reginfo(s->cp_regs, key); assert(ri); assert(cp_access_ok(s->current_el, ri, isread)); --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257044; cv=none; d=zohomail.com; s=zohoarc; b=aUh3eNxloctISA3T0e7FTWhs2UgHpTUXncgRUw5lOe9qpYFcqF3/8vtDyZXnsL5L0E+sDaSgGBLpO3g315KU6KBQZrT5CH4EbtWWlZu/ZeXshgg70uAl0S1C4Nu3zqjU9/DNW4XQdn0e+2X9FwgsBEDQm4LfWhl5hwRiN/krO24= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257044; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dWdqEh5/ACt1jGQsPrkt1Z/Ikir05hx1pOmvaHv8O0w=; b=jS6r1OkI1cgvrutdChpU9gGOtfKXFzz/OpZ3rDhN1/mVNUKllzkrBiyULDltbUb2m1OAEevVvhGv7s6mP+PUdXTO2DiI9MZlV2tWOhE5bOMaqSzkf6LVX+kKEA2tht+xPaujoo0xKxRRIyA/7rFuTXnhLQz1Cfh+rjrVqE/CXe4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17562570441555.508628263300466; Tue, 26 Aug 2025 18:10:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4dD-0006Ou-2d; Tue, 26 Aug 2025 21:07:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4d1-0005S5-6k for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:09 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4cr-0007TV-P2 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:05 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-771e1e64fbbso3799370b3a.3 for ; Tue, 26 Aug 2025 18:06:56 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.06.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:06:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256815; x=1756861615; darn=nongnu.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=dWdqEh5/ACt1jGQsPrkt1Z/Ikir05hx1pOmvaHv8O0w=; b=s+p2zbizL5ZeGmfKnP4WvW9cN2kOgQ/okOAImHlU/0bqwvHU7qIZ1tbwFE2KBfetP5 nyTUQIELskT21/1m2ziEvBpryWfNdPu+qnov1vTo/4v6Nq58M2Z1/me+66tH5ZuXGhkU zyk5bnHxsgpMpsCIqFrhNNf47WlkcAKcUjwsB1JwwUIulyd0uS9lz7Pihmuly2xacDjy z2g5YfFSPquHRLNnRWzqkbBKe+6xVDP2SxpLyXIRNAVCcq7qySxIPNhHMDhgqCh1hEpt RpVEhO7iuxkxpLcEHHpNT8EFvhziaIF4QZtS7JFSfdPC2uBm2Z1yzmmL8XncX9o+xt50 Zshg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256815; x=1756861615; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dWdqEh5/ACt1jGQsPrkt1Z/Ikir05hx1pOmvaHv8O0w=; b=Zvh2PUdWdJaIvQZJjwyrE+f9KXfG09EGO2wQnvHqXlCkuYplTqxdUdzWauSI1FAQda p4Jd6JEXrtck3cnHrMQpPKZw9ZiVLgPB+22AaDt8pkyUxB2LlYknPy9RrgBajG0p1iQ8 dul+qGhAwNi0rj9b0FtLOQokolCuSd0hV5u976XRcvDcK48UsheJxCqiXAuWFA1QCW9J 7cLb632d4VxxTH/jfCnfDRiDDZ0lQvHSYO9iNHJXNGUTEZ7yYHGBHz5VQq7nyD1W0vNd 7umxTL1pm3tzgnlezUHEsqmda+XvvDtB0Upnoe/DDvK2pLNrIaFew+fCaENa2CSKJ58F u7Gw== X-Gm-Message-State: AOJu0Yww0+UBQUFDfybjH3iXlxHQ3qtOaLSgl6Wp6d3oIUKIif+eERuC jaT3r693tueXHP3a3c1IWPxRL59zwvKFtb87LrDW1iVJmMxghUip3kRcxL6k5mTPSIi62pSo3CI FKseFQI4= X-Gm-Gg: ASbGncv6XVWWkf2exKF7Uwk8j2XMoh85Sfxce/1FDRgraUSS4Hq655nbz1wcP8j8bwN A033BmT+E8al/cgAqSOPedALx9+eD8pKJ2Fd78ZEBuZ4jsW84HHxOmS25bVOLCI+9H0hGxdxiaB BgYh3NKwxwyrnRNzdxbw6xvaR7XnZWnVRMcn9Ok+uBGPRjfZJQhbrAc3+EmPRKwJje+w6bqj/NP 3cd4WC7buTjy9POpSMGACU6ndow21LlZlG7Vs19l6ALQ97b88HIXoMOgE8b6J/2f+Ht4eTd3l5H eIqW2B+r0ZjxPeMNXmTLWoIEhGF02SLwVuSTL5JU6HnpRRfnnnV5tA77kolCDhxvMixXygeSM9X 6OsfBZEgnsZu+LTEGxQ2x9Xpz4w== X-Google-Smtp-Source: AGHT+IGPfxa6uWH1k9DRO5IgpAYHvZQmz0jSVuT0PU0u2Ugqn7t6TA1o1cN98zJy4CLGKCouNUUqig== X-Received: by 2002:a05:6a00:170d:b0:771:e50c:99c0 with SMTP id d2e1a72fcca58-771e50c9e2bmr8211682b3a.26.1756256815185; Tue, 26 Aug 2025 18:06:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 20/61] target/arm: Split out add_cpreg_to_hashtable_aa{32,64} Date: Wed, 27 Aug 2025 11:04:11 +1000 Message-ID: <20250827010453.4059782-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257045685116600 Content-Type: text/plain; charset="utf-8" The nesting level for the inner loop of define_one_arm_cp_reg was overly deep. Split out that code into two functions, for the AArch32 and AArch64 paths separately. Simplify the innermost loop to a switch statement over r->state. Signed-off-by: Richard Henderson --- target/arm/helper.c | 147 +++++++++++++++++++++++--------------------- 1 file changed, 76 insertions(+), 71 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index b48b669a6a..7ce03336fe 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -7458,6 +7458,66 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, cons= t ARMCPRegInfo *r, g_hash_table_insert(cpu->cp_regs, (gpointer)(uintptr_t)key, r2); } =20 +static void add_cpreg_to_hashtable_aa32(ARMCPU *cpu, const ARMCPRegInfo *r, + int crm, int opc1, int opc2) +{ + /* + * Under AArch32 CP registers can be common + * (same for secure and non-secure world) or banked. + */ + char *name; + + assert(!(r->type & ARM_CP_ADD_TLBI_NXS)); /* aa64 only */ + + switch (r->secure) { + case ARM_CP_SECSTATE_S: + case ARM_CP_SECSTATE_NS: + add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, + r->secure, crm, opc1, opc2, r->name); + break; + case ARM_CP_SECSTATE_BOTH: + name =3D g_strdup_printf("%s_S", r->name); + add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, + ARM_CP_SECSTATE_S, crm, opc1, opc2, name); + g_free(name); + add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, + ARM_CP_SECSTATE_NS, crm, opc1, opc2, r->nam= e); + break; + default: + g_assert_not_reached(); + } +} + +static void add_cpreg_to_hashtable_aa64(ARMCPU *cpu, const ARMCPRegInfo *r, + int crm, int opc1, int opc2) +{ + if ((r->type & ARM_CP_ADD_TLBI_NXS) && + cpu_isar_feature(aa64_xs, cpu)) { + /* + * This is a TLBI insn which has an NXS variant. The + * NXS variant is at the same encoding except that + * crn is +1, and has the same behaviour except for + * fine-grained trapping. Add the NXS insn here and + * then fall through to add the normal register. + * add_cpreg_to_hashtable() copies the cpreg struct + * and name that it is passed, so it's OK to use + * a local struct here. + */ + ARMCPRegInfo nxs_ri =3D *r; + g_autofree char *name =3D g_strdup_printf("%sNXS", r->name); + + assert(nxs_ri.crn < 0xf); + nxs_ri.crn++; + if (nxs_ri.fgt) { + nxs_ri.fgt |=3D R_FGT_NXS_MASK; + } + add_cpreg_to_hashtable(cpu, &nxs_ri, ARM_CP_STATE_AA64, + ARM_CP_SECSTATE_NS, crm, opc1, opc2, name); + } + + add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA64, ARM_CP_SECSTATE_NS, + crm, opc1, opc2, r->name); +} =20 void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRegInfo *r) { @@ -7485,14 +7545,12 @@ void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCP= RegInfo *r) * bits; the ARM_CP_64BIT* flag applies only to the AArch32 view of * the register, if any. */ - int crm, opc1, opc2; int crmmin =3D (r->crm =3D=3D CP_ANY) ? 0 : r->crm; int crmmax =3D (r->crm =3D=3D CP_ANY) ? 15 : r->crm; int opc1min =3D (r->opc1 =3D=3D CP_ANY) ? 0 : r->opc1; int opc1max =3D (r->opc1 =3D=3D CP_ANY) ? 7 : r->opc1; int opc2min =3D (r->opc2 =3D=3D CP_ANY) ? 0 : r->opc2; int opc2max =3D (r->opc2 =3D=3D CP_ANY) ? 7 : r->opc2; - CPState state; =20 /* 64 bit registers have only CRm and Opc1 fields */ assert(!((r->type & ARM_CP_64BIT) && (r->opc2 || r->crn))); @@ -7589,75 +7647,22 @@ void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCP= RegInfo *r) } } =20 - for (crm =3D crmmin; crm <=3D crmmax; crm++) { - for (opc1 =3D opc1min; opc1 <=3D opc1max; opc1++) { - for (opc2 =3D opc2min; opc2 <=3D opc2max; opc2++) { - for (state =3D ARM_CP_STATE_AA32; - state <=3D ARM_CP_STATE_AA64; state++) { - if (r->state !=3D state && r->state !=3D ARM_CP_STATE_= BOTH) { - continue; - } - if ((r->type & ARM_CP_ADD_TLBI_NXS) && - cpu_isar_feature(aa64_xs, cpu)) { - /* - * This is a TLBI insn which has an NXS variant. T= he - * NXS variant is at the same encoding except that - * crn is +1, and has the same behaviour except for - * fine-grained trapping. Add the NXS insn here and - * then fall through to add the normal register. - * add_cpreg_to_hashtable() copies the cpreg struct - * and name that it is passed, so it's OK to use - * a local struct here. - */ - ARMCPRegInfo nxs_ri =3D *r; - g_autofree char *name =3D g_strdup_printf("%sNXS",= r->name); - - assert(state =3D=3D ARM_CP_STATE_AA64); - assert(nxs_ri.crn < 0xf); - nxs_ri.crn++; - if (nxs_ri.fgt) { - nxs_ri.fgt |=3D R_FGT_NXS_MASK; - } - add_cpreg_to_hashtable(cpu, &nxs_ri, state, - ARM_CP_SECSTATE_NS, - crm, opc1, opc2, name); - } - if (state =3D=3D ARM_CP_STATE_AA32) { - /* - * Under AArch32 CP registers can be common - * (same for secure and non-secure world) or banke= d. - */ - char *name; - - switch (r->secure) { - case ARM_CP_SECSTATE_S: - case ARM_CP_SECSTATE_NS: - add_cpreg_to_hashtable(cpu, r, state, - r->secure, crm, opc1, o= pc2, - r->name); - break; - case ARM_CP_SECSTATE_BOTH: - name =3D g_strdup_printf("%s_S", r->name); - add_cpreg_to_hashtable(cpu, r, state, - ARM_CP_SECSTATE_S, - crm, opc1, opc2, name); - g_free(name); - add_cpreg_to_hashtable(cpu, r, state, - ARM_CP_SECSTATE_NS, - crm, opc1, opc2, r->nam= e); - break; - default: - g_assert_not_reached(); - } - } else { - /* - * AArch64 registers get mapped to non-secure inst= ance - * of AArch32 - */ - add_cpreg_to_hashtable(cpu, r, state, - ARM_CP_SECSTATE_NS, - crm, opc1, opc2, r->name); - } + for (int crm =3D crmmin; crm <=3D crmmax; crm++) { + for (int opc1 =3D opc1min; opc1 <=3D opc1max; opc1++) { + for (int opc2 =3D opc2min; opc2 <=3D opc2max; opc2++) { + switch (r->state) { + case ARM_CP_STATE_AA32: + add_cpreg_to_hashtable_aa32(cpu, r, crm, opc1, opc2); + break; + case ARM_CP_STATE_AA64: + add_cpreg_to_hashtable_aa64(cpu, r, crm, opc1, opc2); + break; + case ARM_CP_STATE_BOTH: + add_cpreg_to_hashtable_aa32(cpu, r, crm, opc1, opc2); + add_cpreg_to_hashtable_aa64(cpu, r, crm, opc1, opc2); + break; + default: + g_assert_not_reached(); } } } --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257024; cv=none; d=zohomail.com; s=zohoarc; b=UtJ+VC1ELt4dCPQtTEDpTNYLRKlSoaO9RarUMhWS90wMk3OQXw4EZfOvOKM3n6FCRknwS+eSWcHA/9xypEU8qvadeTt/wCO8F2fyJKQRhu+2e23cl+XwaXX8SbbjNmjm05vpNGRY/5sBIJkW9ANLIf5yKhX+z+IyNAySr8BnxFI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257024; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=V4VzluGVNtyKJrvXVDGigWrz7oPLdUT2YsAV8VDVK+g=; b=Sn2oScFS1pbgcr+MwnFG0q/LScQWbt+HoCFFIglH8QBgwwt+3nxFOdw+sviXpQociURybOnQAN1JkGw+AkklB37IJXsvFFhnyim6pJWAXnePVoAynZ599xDmrT+USBvpdRwBI8LCcfluJS2oMhN1YsKAwmux0B9bNYRwRGLu6SM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175625702477462.08280694714824; Tue, 26 Aug 2025 18:10:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4df-0007pi-Fn; Tue, 26 Aug 2025 21:07:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4d1-0005SK-6m for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:09 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4cx-0007UN-93 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:06 -0400 Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-b474e8d6d01so4073303a12.0 for ; Tue, 26 Aug 2025 18:07:00 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.06.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:06:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256819; x=1756861619; darn=nongnu.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=V4VzluGVNtyKJrvXVDGigWrz7oPLdUT2YsAV8VDVK+g=; b=dBcFsylxDkpAk/XUzWb3PnrM7/VKpVGpnmRYlf4a4JMTTJA89UsT8wyGHuivQCLg2J iNnKTVL8PiGr88hofzVYg0HzEYy5AZ2Udz0zjmSf4/iViSmZsAsKmTIN7PUh736UDh2V 1otyXGYbXismhCiZenZbWkFpqwfqyrUOrCao0d67MZzX5Tg6FfgkDcn1Vt8l6GlNtVBO EJGZ6MVCeupjyGysVE0gUwyHG63TpBDyOY0iZLO3tjwxLj2mCKh5FLmjzCWv4sVaKZMq gR8nhQD+i9kBaeyYI3WPPLd8esPrxzbilsqX3KkUjCDxTvIF5BExzn5UJR2lDB5skF23 feLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256819; x=1756861619; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=V4VzluGVNtyKJrvXVDGigWrz7oPLdUT2YsAV8VDVK+g=; b=bEu5gHPY38miQWzOrB9ZBmm6DgO/lwVZG93qF8AKHYgdtCeP2sq/q2k1gZ/wG8b+pg 3v+B2Tf9I1HMKUd+yWuHtGbUF/02e+zZpZDofWhtMPHhk7Ym04py3vmtVSuY1uBZCkuS IKHyEjsMC13f3ZAhtfSZ/4aUPKgcmE6jX2Uz/darR7X55iULKoRPZhF7EN2l1mrqM6rs b4TKU8qnJFKSjK9lTeSKKUp4f57WNN3sWCGfUdWZXj7O2TJLPR8lM/V839nUISbcQhfy SF7zSDCh+h/i3QD9n9bDnWOEC1SR7gCX2rY0D3lBGh5KjocsuIpwoNI6RNTLmg9c8l0M 9Nfg== X-Gm-Message-State: AOJu0YxaXkBvvom6bAX7WXpFdwDPV1SlyxbQzPdZoduIxTPqI3wp2V+w GS5NSniKq64L6WArY6BnmUwuDlDZiPOu+ZMqmcnNhnOZ7rSW3iP+dNPnsrh3xE86mjtpB/I26XB r4JaNxZA= X-Gm-Gg: ASbGncvpQ3cnlp5qxTrhxQw42yD+aghmua9HcqvuGrEuC+7FoXtYTu/Fek1sjg1H+7g 1VH8gaa2QSDbiAaERed5Eqp/nZpIdSh62pBnSJUFSeFujxX94CN2JTRjxcJkLYORV8+FYay3adX HuyVWN6Zg0X/T4qBcpR8aasoJW2PCP35hLOhK3eEmbtNbeH+cIwMMn/XUv+5um2+8n4gheQfmHW 1eCwJfHRhQoksZI2pO3oTT8crmmMblI8yFFfNRXNI3u+0iKIeiSBGFIt39WdJJ7Ohq3TarmdasU 73qtU9mhuh8u6vb5lkr8hycb8PDmfFPbvfeJKGDpmGCGKyv2quQ713P73W+ZIhu5wLeMAOZKdXn PvNtbneWMraFvnWg/aEXv16/oQ3o0t/bBYmB+ X-Google-Smtp-Source: AGHT+IHAPEr7d+JyW0l3CDykgcLwjOqu1e68QQty6uIE/pqXE6SRPBhYWw2V456kdFTreGMS83r+ig== X-Received: by 2002:a05:6a20:a124:b0:240:5b1:e157 with SMTP id adf61e73a8af0-24340d1241bmr23386974637.32.1756256818732; Tue, 26 Aug 2025 18:06:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 21/61] target/arm: Improve asserts in define_one_arm_cp_reg Date: Wed, 27 Aug 2025 11:04:12 +1000 Message-ID: <20250827010453.4059782-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257048074124100 Content-Type: text/plain; charset="utf-8" Reject ARM_CP_64BIT with ARM_CP_STATE_BOTH, because encoding constrains prevent it from working. Remove some extra parens; distribute ! across && to simplify. Signed-off-by: Richard Henderson --- target/arm/helper.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 7ce03336fe..da6a8f0a8f 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -7552,12 +7552,17 @@ void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCP= RegInfo *r) int opc2min =3D (r->opc2 =3D=3D CP_ANY) ? 0 : r->opc2; int opc2max =3D (r->opc2 =3D=3D CP_ANY) ? 7 : r->opc2; =20 - /* 64 bit registers have only CRm and Opc1 fields */ - assert(!((r->type & ARM_CP_64BIT) && (r->opc2 || r->crn))); + /* + * AArch64 regs are all 64 bit so ARM_CP_64BIT is meaningless. + * Moreover, the encoding test just following in general prevents + * shared encoding so ARM_CP_STATE_BOTH won't work either. + */ + assert(r->state =3D=3D ARM_CP_STATE_AA32 || !(r->type & ARM_CP_64BIT)); + /* AArch32 64-bit registers have only CRm and Opc1 fields. */ + assert(!(r->type & ARM_CP_64BIT) || !(r->opc2 || r->crn)); /* op0 only exists in the AArch64 encodings */ - assert((r->state !=3D ARM_CP_STATE_AA32) || (r->opc0 =3D=3D 0)); - /* AArch64 regs are all 64 bit so ARM_CP_64BIT is meaningless */ - assert((r->state !=3D ARM_CP_STATE_AA64) || !(r->type & ARM_CP_64BIT)); + assert(r->state !=3D ARM_CP_STATE_AA32 || r->opc0 =3D=3D 0); + /* * This API is only for Arm's system coprocessors (14 and 15) or * (M-profile or v7A-and-earlier only) for implementation defined --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257234; cv=none; d=zohomail.com; s=zohoarc; b=fCI84xItg2GBkBM2Mj1I4XIQfKLaZCb4oQFxc3IXQSBsUtkcheI5qWYF0dT/9MJVv7jUe1pv0NuOj+VzGot0HzspdZyH17qqWhds86KWVHETSsYVy+O4ip8nEPOb8yRHVcXCaXRWk53IbhbybEe5hPuveNrNoqDukWKs6Zi06wA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257234; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PiTlSDbl7ZE2Kdnr9r+qg6Y8XwHKnrFV6OAAtT3qX4s=; b=Z2p7EYmIp8Hdp/5P097UUAnF3GHpVkZFHulJ3uY4o8QqXT5ClF4zwMv63WBtN3MHDIGo1SNx3b+QygjbWE907HfrF61bWAtBi+ieYSyl3zoZCB+rF0C+IAIhXVdy4akRkrrtA5oA+ySy3nkmnyVGau55wLi0U74odw4qSjiU4lo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257234908907.1759769845343; Tue, 26 Aug 2025 18:13:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4dl-0008Qc-FJ; Tue, 26 Aug 2025 21:07:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4dD-0006Si-Rw for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:21 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4d1-0007V6-1n for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:18 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-7704f3c46ceso2844121b3a.2 for ; Tue, 26 Aug 2025 18:07:04 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.06.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:07:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256823; x=1756861623; darn=nongnu.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=PiTlSDbl7ZE2Kdnr9r+qg6Y8XwHKnrFV6OAAtT3qX4s=; b=vaMCFL7+ZVFuuLoZeC3wFPiZXckN07/iN0qm9H36lTErZW2MaTk9HTg8HTaNLfrMAI LnckHPPm/gk2kwqRTfMDuetD1QULE8u5mjzosBKM/0svWS4KPRU39avCj2/r3mWRFly3 +r0v/Z4V2gl7TUBOBR64zTVxKQI7cAALRwA7bHcLIGpIims8Q3ZQ0NRQqJ7uvHjxERQA c7QyWA7feZ2VpgUUDMs7vdaPB3ZEgLUox68DGsg2Zl/6c66pc92Hu4g8zBZFpzwIpYle zMZ3pbSneuKi1NysSbJV4PEIxReQck9SAv7kunDcX2xAYV66UFFEFq3riKCqrSLiyVMm 0Ocg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256823; x=1756861623; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PiTlSDbl7ZE2Kdnr9r+qg6Y8XwHKnrFV6OAAtT3qX4s=; b=nVFvlbsJ5DCGtc7ulOxUJ7xO+Hca790rJi3zBApcR9GeTqhjWT2yDV++xyFmrITs6j SRIBrkkOxO71HmGlnPPOwrBMVEk52mJDoiZjmnww1GHCpcXY0p4t/RcsR+V6kSjgb4WK zxsSaNxh31aJ96RMN4Q3ttNgtGeEhUo3W3h+7V3yTI7DBNRDRB2rp7OUVT7DbcRK4t7G vXcFi66oHEnERchNKvz5KY1kOhgYjoz3zvdPxCwIM5PmVs+Q64sLLhsvFgGEqIJ4i8e1 BqgaAbZlDpkk/MbpV14umo1ix6cQ04499TdoKdJ1/B0V4KKrg8eoiSwdT30gLKglRvcd DQVQ== X-Gm-Message-State: AOJu0Yxv8Q2KaMbIn/1FijOJKiv1GyBvUaDH4caMMr4z1F67nKGOgqqO 973E0+rfIY4w2ruaZMx3m/YqM+O/XZV++TDu4mPLjwjzhwcnirfPVqYeu9SSBBAWYUIvO42Qpwd a2XnW9nE= X-Gm-Gg: ASbGncsSpZJ0O81vXSliZ7w4DtPiDhfnc8Cd/jaqADRNfhqFuLzOprfocPEfKSNUUrz cqig5YIxppzyJbdG1DQpJWzeCeLlgE/Bn5DVJFEbpXaSMbn7S1HX4jrC41bYNUqDExp8EtpQAZI QOyKwzwr4MAuY5rzZPfoG5ThV0I+7k07RXqTrI1S0Drxt7ah+Vf/Q9pR6+V87KrT+3FjchJZvc8 zK1cW/L1hne27Igso/kdTOIyj+TaQwF7MHQKWYhJMWR4cw/+j6OrjZwIZfPHzL3mNE+Yd5sXPrl ZOp89PaEbhc+dRixEV/1ldVrDfr5U6Ufrvn5YUP1D3Mu70bEpVN2M/rptVoJPaayrJG3W15fTBD qhmYCA6XCAkRuyRXOwpU+22Zhs57SWsTCVeCOV9wxM9P81ZE= X-Google-Smtp-Source: AGHT+IH0iM1ygKOoU5r2kTMIxyLmtw73+6189p1IT7DGgLcP4y82qXYsjOF7Vl5WtssV+z+GIVmRkA== X-Received: by 2002:a05:6a00:14c7:b0:770:5987:5b3a with SMTP id d2e1a72fcca58-77059879144mr11624726b3a.16.1756256823287; Tue, 26 Aug 2025 18:07:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 22/61] target/arm: Move cp processing to define_one_arm_cp_reg Date: Wed, 27 Aug 2025 11:04:13 +1000 Message-ID: <20250827010453.4059782-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257236154116600 Content-Type: text/plain; charset="utf-8" Processing of cp was split between add_cpreg_to_hashtable and define_one_arm_cp_reg. Unify it all to the top-level function. Signed-off-by: Richard Henderson --- target/arm/helper.c | 53 +++++++++++++++++++-------------------------- 1 file changed, 22 insertions(+), 31 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index da6a8f0a8f..a9d6ed1270 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -7269,7 +7269,7 @@ void register_cp_regs_for_features(ARMCPU *cpu) */ static void add_cpreg_to_hashtable(ARMCPU *cpu, const ARMCPRegInfo *r, CPState state, CPSecureState secstate, - int crm, int opc1, int opc2, + int cp, int crm, int opc1, int opc2, const char *name) { CPUARMState *env =3D &cpu->env; @@ -7277,28 +7277,14 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, con= st ARMCPRegInfo *r, ARMCPRegInfo *r2; bool is64 =3D r->type & ARM_CP_64BIT; bool ns =3D secstate & ARM_CP_SECSTATE_NS; - int cp =3D r->cp; size_t name_len; bool make_const; =20 switch (state) { case ARM_CP_STATE_AA32: - /* We assume it is a cp15 register if the .cp field is left unset.= */ - if (cp =3D=3D 0 && r->state =3D=3D ARM_CP_STATE_BOTH) { - cp =3D 15; - } key =3D ENCODE_CP_REG(cp, is64, ns, r->crn, crm, opc1, opc2); break; case ARM_CP_STATE_AA64: - /* - * To allow abbreviation of ARMCPRegInfo definitions, we treat - * cp =3D=3D 0 as equivalent to the value for "standard guest-visi= ble - * sysreg". STATE_BOTH definitions are also always "standard sysr= eg" - * in their AArch64 view (the .cp value may be non-zero for the - * benefit of the AArch32 view). - */ - assert(cp =3D=3D 0 || r->state =3D=3D ARM_CP_STATE_BOTH); - cp =3D 0; key =3D ENCODE_AA64_CP_REG(r->opc0, opc1, r->crn, crm, opc2); break; default: @@ -7459,7 +7445,7 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, const= ARMCPRegInfo *r, } =20 static void add_cpreg_to_hashtable_aa32(ARMCPU *cpu, const ARMCPRegInfo *r, - int crm, int opc1, int opc2) + int cp, int crm, int opc1, int opc= 2) { /* * Under AArch32 CP registers can be common @@ -7472,16 +7458,16 @@ static void add_cpreg_to_hashtable_aa32(ARMCPU *cpu= , const ARMCPRegInfo *r, switch (r->secure) { case ARM_CP_SECSTATE_S: case ARM_CP_SECSTATE_NS: - add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, - r->secure, crm, opc1, opc2, r->name); + add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, r->secure, + cp, crm, opc1, opc2, r->name); break; case ARM_CP_SECSTATE_BOTH: name =3D g_strdup_printf("%s_S", r->name); - add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, - ARM_CP_SECSTATE_S, crm, opc1, opc2, name); + add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, ARM_CP_SECSTATE_= S, + cp, crm, opc1, opc2, name); g_free(name); - add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, - ARM_CP_SECSTATE_NS, crm, opc1, opc2, r->nam= e); + add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, ARM_CP_SECSTATE_= NS, + cp, crm, opc1, opc2, r->name); break; default: g_assert_not_reached(); @@ -7512,11 +7498,11 @@ static void add_cpreg_to_hashtable_aa64(ARMCPU *cpu= , const ARMCPRegInfo *r, nxs_ri.fgt |=3D R_FGT_NXS_MASK; } add_cpreg_to_hashtable(cpu, &nxs_ri, ARM_CP_STATE_AA64, - ARM_CP_SECSTATE_NS, crm, opc1, opc2, name); + ARM_CP_SECSTATE_NS, 0, crm, opc1, opc2, nam= e); } =20 add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA64, ARM_CP_SECSTATE_NS, - crm, opc1, opc2, r->name); + 0, crm, opc1, opc2, r->name); } =20 void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRegInfo *r) @@ -7551,6 +7537,7 @@ void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRe= gInfo *r) int opc1max =3D (r->opc1 =3D=3D CP_ANY) ? 7 : r->opc1; int opc2min =3D (r->opc2 =3D=3D CP_ANY) ? 0 : r->opc2; int opc2max =3D (r->opc2 =3D=3D CP_ANY) ? 7 : r->opc2; + int cp =3D r->cp; =20 /* * AArch64 regs are all 64 bit so ARM_CP_64BIT is meaningless. @@ -7573,21 +7560,25 @@ void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCP= RegInfo *r) */ switch (r->state) { case ARM_CP_STATE_BOTH: - /* 0 has a special meaning, but otherwise the same rules as AA32. = */ - if (r->cp =3D=3D 0) { + /* + * If the cp field is left unset, assume cp15. + * Otherwise apply the same rules as AA32. + */ + if (cp =3D=3D 0) { + cp =3D 15; break; } /* fall through */ case ARM_CP_STATE_AA32: if (arm_feature(&cpu->env, ARM_FEATURE_V8) && !arm_feature(&cpu->env, ARM_FEATURE_M)) { - assert(r->cp >=3D 14 && r->cp <=3D 15); + assert(cp >=3D 14 && cp <=3D 15); } else { - assert(r->cp < 8 || (r->cp >=3D 14 && r->cp <=3D 15)); + assert(cp < 8 || (cp >=3D 14 && cp <=3D 15)); } break; case ARM_CP_STATE_AA64: - assert(r->cp =3D=3D 0); + assert(cp =3D=3D 0); break; default: g_assert_not_reached(); @@ -7657,13 +7648,13 @@ void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCP= RegInfo *r) for (int opc2 =3D opc2min; opc2 <=3D opc2max; opc2++) { switch (r->state) { case ARM_CP_STATE_AA32: - add_cpreg_to_hashtable_aa32(cpu, r, crm, opc1, opc2); + add_cpreg_to_hashtable_aa32(cpu, r, cp, crm, opc1, opc= 2); break; case ARM_CP_STATE_AA64: add_cpreg_to_hashtable_aa64(cpu, r, crm, opc1, opc2); break; case ARM_CP_STATE_BOTH: - add_cpreg_to_hashtable_aa32(cpu, r, crm, opc1, opc2); + add_cpreg_to_hashtable_aa32(cpu, r, cp, crm, opc1, opc= 2); add_cpreg_to_hashtable_aa64(cpu, r, crm, opc1, opc2); break; default: --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756256946; cv=none; d=zohomail.com; s=zohoarc; b=Nh3SqWh4EKC6ImuDp135mO40dQSGfvD6+uXm1rueVhDwIdAninyexG4ekeaccbrEipmip1RWnb25hp8LmJdWjfChrVDWh7RbBnnon/aq88ZQaljzYnpUXehXMPj3qcYddXViOYuh+k1DQAQtktyhdA9I4OLG2CkdPsbm2m0VYCY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756256946; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6bG/3hhPGRMWHAj9F4OmuFUUkP9nD2TAKa5JDME5628=; b=Zzr5swApzFYVGXyTkHgz7J3/uMWeYqu4zN512Y4tTHxT0ZrliziYxJ18ZHEJygMqWp0H1YCMmgcyqiKSDjiYJyvCWKg2zd5gartsr8GT1LcPrnZBtTgLLFE/ja1JXsMJlnXIQ1AQ3K+0z6PA/1zp5Ub9Wah2V2L5GrkT+z9OXc0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756256946732703.4920686444302; Tue, 26 Aug 2025 18:09:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4dG-0006j0-TP; Tue, 26 Aug 2025 21:07:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4dA-000677-9T for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:16 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4d6-0007Vt-Sh for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:16 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-7704799d798so2856309b3a.3 for ; Tue, 26 Aug 2025 18:07:09 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.07.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:07:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256827; x=1756861627; darn=nongnu.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=6bG/3hhPGRMWHAj9F4OmuFUUkP9nD2TAKa5JDME5628=; b=XR3G/V8YFx8eIcaU6Kp+7GRp4UJgoFLLGY7a6ce8fWS2EExJGEyGonGXiSRal/K7Tt CACuxYiMl+DT1xLOs0aLoEiCH2K9VES6AU19XF3ofZRKdUliCjY3cAN9iq5/72vAyluw sSFc9AsnNmQw9etwl464H0gPZY0LdDPXw8CnDocteeh88QLmuBR+xL/lCCjnk8L44H7W d3INJzHiJMCNO5HZR/YfnXRvYfqt1BZmZQq3nJSsKqSPwhBE7F/nlPRG34nGJJMn/f4p C7CG/dC6Eo8HVnXgRPBieZmzotf5ZBaY0AoILX71Ob0SqSzpnR6Hdnyd91q6gXRcGLYL 4c2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256827; x=1756861627; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6bG/3hhPGRMWHAj9F4OmuFUUkP9nD2TAKa5JDME5628=; b=tS9IjRFocfJpvOF6yZFoPS+In+fjkfv/5PQptRSj5zGdZ5WEBZltbQ1QNJrpRbdpj8 KwrNsomA4RTNlgHPeyJS9+eXXyFCnE9zWZVCX36s7wM/JKB+3kuDJiWywzG+1vBeI0t3 /6HO+KvWuyTXlnfNbtzRA6jz8bimOlnAJW1ng/78PWQIUxX+ejwIf7svRyKzcrEIEhhg 3y7PQCmm+q7v4cHazxlJirYmfadjkknORBnMsbc8cT/J/jtD8Gh3d0psdNJHlXgJ26kt tTZvfgDwxv0N3xXDx5SwC16B2yCxukdJ797wVkxaUDJ9+ISMfJnFEhhxSKJmV0oeawsT Ui2Q== X-Gm-Message-State: AOJu0YzxEIQwhLF8hN4+OfFSXwam4c+O+DSpww/esR3n27JFk728lXPu 793jdT8Bf6mIiz4RsZDxebsVZwE6YbY0WrUjGUzs+xx+Z2EydzMWzF26cBOVNP5zCpXZiBzotYV ecPjH004= X-Gm-Gg: ASbGncu4doG1u0EWEYKGYXaxiClMGLDkihS27YfO2iRRkwbscwjcT1TJ/dTWR6r23gz kj7VAf6YpvwXSlJdZub68nhPr7zS4douErVT0Gb3/QFJiJyZzPymKHbLDTRrnjNwk4cNd+YHvJI W5TXvYxYRTqcpr6CFZxRqDh0Lm5i1lWmrPPULI/FB+cuVFb2mwPR+Y1br50i5foQcghQ/bGxhXb H3Jr0D0ZEnLbrDKUsJWUauONGToHJvuCKErduUwYUXbGy91DGQEeXWyzL5fywtFSFIA/ZdC/jrk sfyXvqPAVxnyjYMiZw5pGXt5BbF09XBs1GRLWeDb3rOOAyae78XyBkrQHXoAjP9ycIDosNqrkMV 5KHuvzqN0RNtP1Z2lRQqY6faErQ== X-Google-Smtp-Source: AGHT+IHTpjiKWKNk2X7Arek/BJl7IKIODx/CBorhfNc0eWu3w80SsiJQaokuP1Nssn2DS+pRm7SssQ== X-Received: by 2002:a05:6a00:2989:b0:772:775:88c9 with SMTP id d2e1a72fcca58-77207758ab4mr908175b3a.19.1756256827024; Tue, 26 Aug 2025 18:07:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 23/61] target/arm: Move cpreg elimination to define_one_arm_cp_reg Date: Wed, 27 Aug 2025 11:04:14 +1000 Message-ID: <20250827010453.4059782-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42e.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756256948542116601 Content-Type: text/plain; charset="utf-8" Eliminate unused registers earlier, so that by the time we arrive in add_cpreg_to_hashtable we never skip. Signed-off-by: Richard Henderson --- target/arm/helper.c | 123 +++++++++++++++++++++++--------------------- 1 file changed, 64 insertions(+), 59 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index a9d6ed1270..02c155418b 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -7278,7 +7278,6 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, const= ARMCPRegInfo *r, bool is64 =3D r->type & ARM_CP_64BIT; bool ns =3D secstate & ARM_CP_SECSTATE_NS; size_t name_len; - bool make_const; =20 switch (state) { case ARM_CP_STATE_AA32: @@ -7299,32 +7298,6 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, cons= t ARMCPRegInfo *r, } } =20 - /* - * Eliminate registers that are not present because the EL is missing. - * Doing this here makes it easier to put all registers for a given - * feature into the same ARMCPRegInfo array and define them all at onc= e. - */ - make_const =3D false; - if (arm_feature(env, ARM_FEATURE_EL3)) { - /* - * An EL2 register without EL2 but with EL3 is (usually) RES0. - * See rule RJFFP in section D1.1.3 of DDI0487H.a. - */ - int min_el =3D ctz32(r->access) / 2; - if (min_el =3D=3D 2 && !arm_feature(env, ARM_FEATURE_EL2)) { - if (r->type & ARM_CP_EL3_NO_EL2_UNDEF) { - return; - } - make_const =3D !(r->type & ARM_CP_EL3_NO_EL2_KEEP); - } - } else { - CPAccessRights max_el =3D (arm_feature(env, ARM_FEATURE_EL2) - ? PL2_RW : PL1_RW); - if ((r->access & max_el) =3D=3D 0) { - return; - } - } - /* Combine cpreg and name into one allocation. */ name_len =3D strlen(name) + 1; r2 =3D g_malloc(sizeof(*r2) + name_len); @@ -7342,38 +7315,7 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, cons= t ARMCPRegInfo *r, r2->state =3D state; r2->secure =3D secstate; =20 - if (make_const) { - /* This should not have been a very special register to begin. */ - int old_special =3D r2->type & ARM_CP_SPECIAL_MASK; - assert(old_special =3D=3D 0 || old_special =3D=3D ARM_CP_NOP); - /* - * Set the special function to CONST, retaining the other flags. - * This is important for e.g. ARM_CP_SVE so that we still - * take the SVE trap if CPTR_EL3.EZ =3D=3D 0. - */ - r2->type =3D (r2->type & ~ARM_CP_SPECIAL_MASK) | ARM_CP_CONST; - /* - * Usually, these registers become RES0, but there are a few - * special cases like VPIDR_EL2 which have a constant non-zero - * value with writes ignored. - */ - if (!(r->type & ARM_CP_EL3_NO_EL2_C_NZ)) { - r2->resetvalue =3D 0; - } - /* - * ARM_CP_CONST has precedence, so removing the callbacks and - * offsets are not strictly necessary, but it is potentially - * less confusing to debug later. - */ - r2->readfn =3D NULL; - r2->writefn =3D NULL; - r2->raw_readfn =3D NULL; - r2->raw_writefn =3D NULL; - r2->resetfn =3D NULL; - r2->fieldoffset =3D 0; - r2->bank_fieldoffsets[0] =3D 0; - r2->bank_fieldoffsets[1] =3D 0; - } else { + { bool isbanked =3D r->bank_fieldoffsets[0] && r->bank_fieldoffsets[= 1]; =20 if (isbanked) { @@ -7538,6 +7480,8 @@ void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRe= gInfo *r) int opc2min =3D (r->opc2 =3D=3D CP_ANY) ? 0 : r->opc2; int opc2max =3D (r->opc2 =3D=3D CP_ANY) ? 7 : r->opc2; int cp =3D r->cp; + ARMCPRegInfo r_const; + CPUARMState *env =3D &cpu->env; =20 /* * AArch64 regs are all 64 bit so ARM_CP_64BIT is meaningless. @@ -7643,6 +7587,67 @@ void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPR= egInfo *r) } } =20 + /* + * Eliminate registers that are not present because the EL is missing. + * Doing this here makes it easier to put all registers for a given + * feature into the same ARMCPRegInfo array and define them all at onc= e. + */ + if (arm_feature(env, ARM_FEATURE_EL3)) { + /* + * An EL2 register without EL2 but with EL3 is (usually) RES0. + * See rule RJFFP in section D1.1.3 of DDI0487H.a. + */ + int min_el =3D ctz32(r->access) / 2; + if (min_el =3D=3D 2 && !arm_feature(env, ARM_FEATURE_EL2)) { + if (r->type & ARM_CP_EL3_NO_EL2_UNDEF) { + return; + } + if (!(r->type & ARM_CP_EL3_NO_EL2_KEEP)) { + /* This should not have been a very special register. */ + int old_special =3D r->type & ARM_CP_SPECIAL_MASK; + assert(old_special =3D=3D 0 || old_special =3D=3D ARM_CP_N= OP); + + r_const =3D *r; + + /* + * Set the special function to CONST, retaining the other = flags. + * This is important for e.g. ARM_CP_SVE so that we still + * take the SVE trap if CPTR_EL3.EZ =3D=3D 0. + */ + r_const.type =3D (r->type & ~ARM_CP_SPECIAL_MASK) | ARM_CP= _CONST; + /* + * Usually, these registers become RES0, but there are a f= ew + * special cases like VPIDR_EL2 which have a constant non-= zero + * value with writes ignored. + */ + if (!(r->type & ARM_CP_EL3_NO_EL2_C_NZ)) { + r_const.resetvalue =3D 0; + } + /* + * ARM_CP_CONST has precedence, so removing the callbacks = and + * offsets are not strictly necessary, but it is potential= ly + * less confusing to debug later. + */ + r_const.readfn =3D NULL; + r_const.writefn =3D NULL; + r_const.raw_readfn =3D NULL; + r_const.raw_writefn =3D NULL; + r_const.resetfn =3D NULL; + r_const.fieldoffset =3D 0; + r_const.bank_fieldoffsets[0] =3D 0; + r_const.bank_fieldoffsets[1] =3D 0; + + r =3D &r_const; + } + } + } else { + CPAccessRights max_el =3D (arm_feature(env, ARM_FEATURE_EL2) + ? PL2_RW : PL1_RW); + if ((r->access & max_el) =3D=3D 0) { + return; + } + } + for (int crm =3D crmmin; crm <=3D crmmax; crm++) { for (int opc1 =3D opc1min; opc1 <=3D opc1max; opc1++) { for (int opc2 =3D opc2min; opc2 <=3D opc2max; opc2++) { --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257216; cv=none; d=zohomail.com; s=zohoarc; b=hjQJ1fjWm1rx7y9oGiHgz4tPp6i6p8fBm0VpWkCWDGeJihS0hs+XlUnKFTRPns4gciZLD/wuFnPOIYDHVZ4Qdag7MJVkmItfucbF56eud19zhh6Y6r3lec6yxzK4MHLUnbpDZjpNfPXeJzOQ6SJ88WhjGscbOYTMdfp9r0tSy88= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257216; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1xaHs5WgmJxxI4MWQhNiuezsYVgJ83xCQG2Di2ZBMw8=; b=UopVyBosCYfBDQlbI0CU0qr69BbA/Q7yPF8qDiS0rLVv/EsPiJKXeDfCRwHqv99kn/3y50b6Xvjbrk1eI8/eo+eENikEo9mR9RIWkVQVA8hePES6R5MJ/zLwp5nZdcjhr23VsejY8Wm+r7XpQ0P4RyaffpY4ipzR76DLkwFNqfI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257216286408.65739385253767; Tue, 26 Aug 2025 18:13:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4dg-00080p-JI; Tue, 26 Aug 2025 21:07:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4dM-00078C-11 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:29 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4dE-0007Wh-RX for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:27 -0400 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-771ed4a8124so2425922b3a.2 for ; Tue, 26 Aug 2025 18:07:17 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.07.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:07:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256834; x=1756861634; darn=nongnu.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=1xaHs5WgmJxxI4MWQhNiuezsYVgJ83xCQG2Di2ZBMw8=; b=NYMlYiUnCczCp6kRZ3tp5yz+glhWgCfBhSIzT8HieijPJGXEY+IYafBgU5920ezPTg d1sQb+0Rsry0G+UyQ/V0704GAT34x2N+3EXTTaxV8KOIaWvPq06WpzO8d9dpDrPQ4/aL wXkUQHRa/KiDFRtVBqbKei9Tb4wAr8SHmtSs72wB1eyYE5I3xAwAZ1Pk6ezW6CmJO049 t98yfbhrGp+byYZRmWnaAH6JjoSBeTzGzs+GSIi3wyGLbEZoDlgqZ84lxQyBMB0s1xNB +7+ggZIqrkiiJlRdMts4gfICsiHsRAi+luZVBZymvD3kAJzbjsjHFu2oR19fxltnYY8O kCnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256834; x=1756861634; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1xaHs5WgmJxxI4MWQhNiuezsYVgJ83xCQG2Di2ZBMw8=; b=iODBTrNtZ55gFGAVnQQ9X6MHjDNVHLMv4PK9im8dk2cAWwx0TRTr4SAsoEe3BWb03z bAL3tYCqCc+trfA/fwPSVx1e3x3MhLBKeqkx+CdcHEEkCLWNM8N9J5KjorS1BBw07NaW tWPGLa/Uu36cIapJV94DUzF40JWwAwkxskPP25ms/aWnmWPSk6dDI6pcjjKEtWYW1ALh s8ElCISHTkr5498hkGdCrTb/RMYwCHRDzzu36fGVPrRaEnQDiisq2/bI0jzQFmblQYUF U34mTC+OCf0LPiVzakNZxnNKRqX/DnlJ+dBo64+XbQSJ6+G/lSVPE9CCJExoTghFmgVH QLtQ== X-Gm-Message-State: AOJu0YyU1S+ydaQ3DiLb2la/48jrRagnXCjaaDCgFbcmIznkSVLEgYUS MRjmZWNgWLr+VP7IJmNDIfI1GlSpxlTo8Udr/VTKBor25y6z6HX6934hMxIBsVtgr9uqhIpN639 qb9OuSTU= X-Gm-Gg: ASbGncsL+swIQksHZbaHkrOb1gRNE7e3nx7A/2ytDM61xKIq/c4o5kVKYAUCRI7f+WL P0Qkdke+TAgvtdDEFNQ1V1D2jRCRFhrR9XV+Nvpwn3zQY877o9hSN3VGbXkYSJR6pYvpzUs2g6R hWmYEwPZEXLBCkdm3u1Ox+8htVzBiU8xvWuYfnqojOdkChiaZs7KuK09JaS80wg81h5C5LcaxlV TOpvXE3fegBD6ozOpyk1aO4eRnHjDIlQCzVnKAXi+heg/136g4WjmHu2m4IrcZVC3w4py3zSvRf Tv1eANlNBbLe4U8cP0MOZy6U66ieGuzDlzojZQEsomA5R/A9LpAtS9go2hyMW21UljOgRsJrpYT z2MQ7v/LpVwKZTGJmfaqE/xieFw== X-Google-Smtp-Source: AGHT+IGjSUwsQnXmu/wOWvdn+aZb3tmVirzNs306P2u4zQ8EAKd/x5VFO/7YEXw9DnDsVVS+7B6lNQ== X-Received: by 2002:a05:6a00:22c8:b0:771:f07e:1bfb with SMTP id d2e1a72fcca58-771f07e1ce5mr6920475b3a.30.1756256833970; Tue, 26 Aug 2025 18:07:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 24/61] target/arm: Add key parameter to add_cpreg_to_hashtable Date: Wed, 27 Aug 2025 11:04:15 +1000 Message-ID: <20250827010453.4059782-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257217858116600 Content-Type: text/plain; charset="utf-8" Hoist the computation of key into the caller, where state is a known constant. Signed-off-by: Richard Henderson --- target/arm/helper.c | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 02c155418b..a4cd4cf232 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -7270,26 +7270,13 @@ void register_cp_regs_for_features(ARMCPU *cpu) static void add_cpreg_to_hashtable(ARMCPU *cpu, const ARMCPRegInfo *r, CPState state, CPSecureState secstate, int cp, int crm, int opc1, int opc2, - const char *name) + const char *name, uint32_t key) { CPUARMState *env =3D &cpu->env; - uint32_t key; ARMCPRegInfo *r2; - bool is64 =3D r->type & ARM_CP_64BIT; bool ns =3D secstate & ARM_CP_SECSTATE_NS; size_t name_len; =20 - switch (state) { - case ARM_CP_STATE_AA32: - key =3D ENCODE_CP_REG(cp, is64, ns, r->crn, crm, opc1, opc2); - break; - case ARM_CP_STATE_AA64: - key =3D ENCODE_AA64_CP_REG(r->opc0, opc1, r->crn, crm, opc2); - break; - default: - g_assert_not_reached(); - } - /* Overriding of an existing definition must be explicitly requested. = */ if (!(r->type & ARM_CP_OVERRIDE)) { const ARMCPRegInfo *oldreg =3D get_arm_cp_reginfo(cpu->cp_regs, ke= y); @@ -7394,22 +7381,28 @@ static void add_cpreg_to_hashtable_aa32(ARMCPU *cpu= , const ARMCPRegInfo *r, * (same for secure and non-secure world) or banked. */ char *name; + bool is64 =3D r->type & ARM_CP_64BIT; + uint32_t key =3D ENCODE_CP_REG(cp, is64, 0, r->crn, crm, opc1, opc2); =20 assert(!(r->type & ARM_CP_ADD_TLBI_NXS)); /* aa64 only */ =20 switch (r->secure) { - case ARM_CP_SECSTATE_S: case ARM_CP_SECSTATE_NS: + key |=3D CP_REG_AA32_NS_MASK; + /* fall through */ + case ARM_CP_SECSTATE_S: add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, r->secure, - cp, crm, opc1, opc2, r->name); + cp, crm, opc1, opc2, r->name, key); break; case ARM_CP_SECSTATE_BOTH: name =3D g_strdup_printf("%s_S", r->name); add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, ARM_CP_SECSTATE_= S, - cp, crm, opc1, opc2, name); + cp, crm, opc1, opc2, name, key); g_free(name); + + key |=3D CP_REG_AA32_NS_MASK; add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, ARM_CP_SECSTATE_= NS, - cp, crm, opc1, opc2, r->name); + cp, crm, opc1, opc2, r->name, key); break; default: g_assert_not_reached(); @@ -7419,6 +7412,8 @@ static void add_cpreg_to_hashtable_aa32(ARMCPU *cpu, = const ARMCPRegInfo *r, static void add_cpreg_to_hashtable_aa64(ARMCPU *cpu, const ARMCPRegInfo *r, int crm, int opc1, int opc2) { + uint32_t key =3D ENCODE_AA64_CP_REG(r->opc0, opc1, r->crn, crm, opc2); + if ((r->type & ARM_CP_ADD_TLBI_NXS) && cpu_isar_feature(aa64_xs, cpu)) { /* @@ -7433,18 +7428,22 @@ static void add_cpreg_to_hashtable_aa64(ARMCPU *cpu= , const ARMCPRegInfo *r, */ ARMCPRegInfo nxs_ri =3D *r; g_autofree char *name =3D g_strdup_printf("%sNXS", r->name); + uint32_t nxs_key; =20 assert(nxs_ri.crn < 0xf); nxs_ri.crn++; + nxs_key =3D key + (1 << CP_REG_ARM64_SYSREG_CRN_SHIFT); if (nxs_ri.fgt) { nxs_ri.fgt |=3D R_FGT_NXS_MASK; } + add_cpreg_to_hashtable(cpu, &nxs_ri, ARM_CP_STATE_AA64, - ARM_CP_SECSTATE_NS, 0, crm, opc1, opc2, nam= e); + ARM_CP_SECSTATE_NS, 0, crm, opc1, opc2, + name, nxs_key); } =20 add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA64, ARM_CP_SECSTATE_NS, - 0, crm, opc1, opc2, r->name); + 0, crm, opc1, opc2, r->name, key); } =20 void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRegInfo *r) --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257319; cv=none; d=zohomail.com; s=zohoarc; b=X0YTFvSDbNvIeqcRWxA2ZDtGu7L0tscmTe5l3twGo0MEpz3GgLzwKilnHiAOPdKc8mt9C7NxPHbbATiQQyEvEDm06tH82mCF8FbA+iyGQdQN3JZtJyYsObWELQC3atI12RvgPgXvAwr0hzYt/x9jfkCP2Yu/WMD9wsjgu0cf1fQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257319; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=CiTPcH4cN132XrAlCNyqqTcsX5/+34SY6jW1V2d9z4Y=; b=iVvsadBPwGNwfuSJ0P2g1RMgrvEthXGo1W+FY6+Wp/yvhKyaxnzynqIg/ADE1t457eL6sp0NbPSYElbruTX+Nm07+vgtoOOAWirJD/H9J0xXbeWdkIxspsrkj13m2jhhch2byRlFZqqENROSanUKL+MtGR33QNI/uQNBqBIjUAY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257319469829.2105161239128; Tue, 26 Aug 2025 18:15:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4dn-0000B0-Om; Tue, 26 Aug 2025 21:07:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4dN-00079Q-R3 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:33 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4dK-0007Xl-MV for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:29 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-771fa65b0e1so659367b3a.0 for ; Tue, 26 Aug 2025 18:07:25 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.07.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:07:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256843; x=1756861643; darn=nongnu.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=CiTPcH4cN132XrAlCNyqqTcsX5/+34SY6jW1V2d9z4Y=; b=YSoobIgLYB+MPPwTTpSTO9a/Z+NLKWDbEyFnylZEdnrbchBiWafC1rWvyoeG7KiHPa XvbtFNfK9whRxiK8N8RxVWiADFliMpDNh6puZHRHnvQLKCb9exHUP3Gb0C5+gGwsap+7 oe4OOjT9wpVVYqffl5GAEHhu2O8PzCaiKNmcZlNgCg0lhBMbA10VeUWASF8fJceD4QXK Pv5sgLXwVqtAlWEOrZvFUriT9RL6WDO6uMkVkt65PwhXp8efyeuKeifch8RmSKxu2dE6 RiqFPM2ktDe/G+cIQUYdTWvfiuXntGqAa+lFG1A1YsXQxUg8yQTIwUD/siNtg4hp0AWy GHvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256843; x=1756861643; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CiTPcH4cN132XrAlCNyqqTcsX5/+34SY6jW1V2d9z4Y=; b=HI+mbdFMgrmDuGaWFiUPqJ3DH3f0EeiH06Jh+MpllLWSD8tN2FS9UkcZ/Ckwe2yYav umpk8nqTq292p3Rsu/8TrjzqcRLOcjmhB/RN17gMuQkg8jvD2TdsAtzVbgOlh6hmOqfF 91QtMmyATdwLpJPpUNzWdHpYV6IHMly7tMK5we+6s2LCn61QqlgvjwsNvTzTzmQR/9yh 79s9rKHD/QIRzt4Drw61LQt9Fe9vS1eeWn4O5+CSIHzQy5jqgm83DgQYmexO8PO3Ktpr HKpXu39apUXGjlYA9crZZWHHvjMZtjF4higcikl0KXa3R4uz+xVIamxBsX8d0ofFuKle 4GXA== X-Gm-Message-State: AOJu0YxaJ6wIsXrQwjPu2rYMdHc86WveiJkSanehACHui89Cd9aLob1f 3pDMZ5Uc6RZ3Xn8lk1hUflJE7QJjYS9O0ZEMrJ1shVryEAKthjGv7Ks6stC4bTYOuUHkVHo1+QR v7ZTRLrc= X-Gm-Gg: ASbGncsQdaJ09kx+/0S/8855E810C3ixw9G7mHujoVXuTCMzKLI6lXv2u4cVP5btrrL 9w9lbmTVZ8e9bWCrJQoRYvzod9LR7WHWg04RLDs2iaLuAdmgCRFIKyMzh0LMOYGH1ogGquoXeMq ORXBie3Rv6H49D2kmg70ylZh0kWr845Eu5Mt8ZSc+HNWqGkbDB2FwHo/Jt61HCIXY+rRKHcBK7k YfNGZn+9PvwmzcMU6jD9Vm2owjTUy5NyRsfwEnNv3k98eZSLdAZfx7CYCyNILQzKkIS+ercEPrA HBzpYTtmua93zJs/j9S8S72pk62qLB6vDirER3/TokBhGMPOw6XtBiliEJeyeoyRMEc527Os9dQ ZPWM0XYMZ3ROYrZnUWEDjlMMwMZyKIhKL9roN X-Google-Smtp-Source: AGHT+IFQVDWFOeS/wZ1LS5SwKVdpALVIw+/wXO+QLvv7MNvP1FXnvJv+ieUAx4+DxhLleFXj4N2waA== X-Received: by 2002:a05:6a00:391f:b0:76e:99fc:db8d with SMTP id d2e1a72fcca58-7702fa08e63mr20625201b3a.3.1756256842850; Tue, 26 Aug 2025 18:07:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 25/61] target/arm: Split out alloc_cpreg Date: Wed, 27 Aug 2025 11:04:16 +1000 Message-ID: <20250827010453.4059782-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42d.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257320859116600 Content-Type: text/plain; charset="utf-8" Include provision for a name suffix. Signed-off-by: Richard Henderson --- target/arm/helper.c | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index a4cd4cf232..0e4be14606 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -7263,6 +7263,28 @@ void register_cp_regs_for_features(ARMCPU *cpu) #endif } =20 +/* + * Copy a ARMCPRegInfo structure, allocating it along with the name + * and an optional suffix to the name. + */ +static ARMCPRegInfo *alloc_cpreg(const ARMCPRegInfo *in, + const char *name, const char *suffix) +{ + size_t name_len =3D strlen(name); + size_t suff_len =3D suffix ? strlen(suffix) : 0; + ARMCPRegInfo *out =3D g_malloc(sizeof(*in) + name_len + suff_len + 1); + char *p =3D (char *)(out + 1); + + *out =3D *in; + out->name =3D p; + + memcpy(p, name, name_len + 1); + if (suffix) { + memcpy(p + name_len, suffix, suff_len + 1); + } + return out; +} + /* * Private utility function for define_one_arm_cp_reg(): * add a single reginfo struct to the hash table. @@ -7275,7 +7297,6 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, const= ARMCPRegInfo *r, CPUARMState *env =3D &cpu->env; ARMCPRegInfo *r2; bool ns =3D secstate & ARM_CP_SECSTATE_NS; - size_t name_len; =20 /* Overriding of an existing definition must be explicitly requested. = */ if (!(r->type & ARM_CP_OVERRIDE)) { @@ -7285,11 +7306,7 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, cons= t ARMCPRegInfo *r, } } =20 - /* Combine cpreg and name into one allocation. */ - name_len =3D strlen(name) + 1; - r2 =3D g_malloc(sizeof(*r2) + name_len); - *r2 =3D *r; - r2->name =3D memcpy(r2 + 1, name, name_len); + r2 =3D alloc_cpreg(r, name, NULL); =20 /* * Update fields to match the instantiation, overwiting wildcards --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257108; cv=none; d=zohomail.com; s=zohoarc; b=K66un3wdVJXMeZ/cnM9LCm4sJIVrCshk6HNPcpbzWcSW8MnM1FkpQW5kRO55gHw0j4VsQRWPqv4wMOrVae4FQgS49JgnGgjVbxrNcpGubTW/28l3NNtW6+WxB+0tA+ZNnARVxOmWZbghoytS7OXm7zxyRr7F8g4VPYJl5Bu8wdQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257108; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0m53HPKD6Du3PeyFjN/hMU96ykTHL6/3IH+CJFSfXbY=; b=C8VouCZaVIVPHZwkJQUr0dL/aBqJ0MR5DRt5T3/YBNObZeFaJhtkahfhLX7hKS5dlyhibcZY8p55/7TM4MC3yCJUedOQTrqHvIwdaPa7cuDhduvn3hN2P+Gy/sGDMCpCkcK59O30KfDyCEpLLuf3XGfbrnSjXbRBmcYmkRaHCSo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257108518606.7630035760046; Tue, 26 Aug 2025 18:11:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4do-0000J9-KC; Tue, 26 Aug 2025 21:07:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4dX-0007Sp-Qt for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:43 -0400 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4dQ-0007Yq-1Q for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:39 -0400 Received: by mail-pj1-x1032.google.com with SMTP id 98e67ed59e1d1-32597b88f0dso2563436a91.3 for ; Tue, 26 Aug 2025 18:07:31 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.07.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:07:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256848; x=1756861648; darn=nongnu.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=0m53HPKD6Du3PeyFjN/hMU96ykTHL6/3IH+CJFSfXbY=; b=NzRwaF0OhR2SnatAesC5zsuJb7cIFdbx9O1ybyIor44R3i9YktDOQOL2wcku3zU/8b mSJVOl9Yur5E8z6S1WomRBT34DELyddYLyeHpqsN7VbwEyjT4s4ewyxIKvJaKOm9U+ED h3BWhr61xM3MddeDM98QxE8HltPYPj4FfA9W/fCrwYkrlGepJ149XubXM2hCHTJvnihN C+E7IUZ2TCCw/jyLNqETygnhgrpcq975UlJDOGB983KQnEcs5/wQ8AWRi1OIU2DyHH0h dRJAVKN1+27dpvWkV+LAjQIFHp2npsGR+39UgBuWMZSo40Ufso8zWe+mLLz4n4WPucZt k9Yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256848; x=1756861648; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=0m53HPKD6Du3PeyFjN/hMU96ykTHL6/3IH+CJFSfXbY=; b=j8slGPBuapfFedzrdW6pGGn+PkUbM4zrUZM4+KXKpC9LVY1UINlo2ghceRBTeu2mQL CRTiPLk6FpQdFO7AMsZnX43ZhAjWcHhlAf1n7v6XhLFk0UEjShe45RUzyMU7W9o2mPWf DKwbDJIcHuJwSRif8lLy0lTcI+MvWkEGv1lUDBTLYzfCk+ZCxQqr2W4EsVKidrbfYlFk d2mn9ULWkz+pMaXsZTNftOjBXfu2rlUtSfttmm10dg4qaWTy6jnvtJFftRq0rtvc5X9L gEyOWYzKniBA4IUdpN16AUvNshHrdCO2p5B7WnVVckdm7yGVTyO1oVnXhB4pgY0MHI5X e2sw== X-Gm-Message-State: AOJu0YwYFusKW6TIpBhVtNFVUrRp4NunkSzRs9v6VdbtusRngDUN8zIR VAsl2adCnbAOE8akQwwO+6ceEvxlfjkBW8uiMIZwrerKZubfrl71EGW6r1TmpjgK+lwOygNtUXJ NYVqGkXo= X-Gm-Gg: ASbGnculaCTO9vH3BQc875cS0BQVcrS54V0No1sLv2LKRW3aOW1u2GYOcsO64DKo7z1 H9iuvPZKswK/fmFUX+HWoqXpiNh33Qw7LJLZ5MYjwKonARv3Uw3irrDuvq27E0CjXJ07I8daUEm a6zemmgvsA+Pe/TPsMUOXOlxV9+QhNU3DxAPFvhV5guD6h8LIRmnvFGfp+snAmazwd6Opb0I5F+ LVt8b50EH3ZwhfGBfxGBXXhGovdQkHz8LROFI90YAONUxusY/Qff/QRMrUQbyL8beIp2f29ZOZZ FDKqWBR6NFHtM9GUbLUfzvHfMla3JGYHGCU3bbjg86lE+5Y6ShFu0RwPEDaYsyZYqrKdXqB8s6y tSL+9RyKfF0AAAknhkCIXCtyogQ== X-Google-Smtp-Source: AGHT+IH0OFkMttbU+X7btvbDDLaBqLBq7hos/HyPoN7kSFGx0aCLM0R/kTGRuiOrs8FA+8GgOarKYg== X-Received: by 2002:a17:90b:3d89:b0:31e:f397:b5b4 with SMTP id 98e67ed59e1d1-3251744bd7amr21249738a91.22.1756256848166; Tue, 26 Aug 2025 18:07:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 26/61] target/arm: Hoist the allocation of ARMCPRegInfo Date: Wed, 27 Aug 2025 11:04:17 +1000 Message-ID: <20250827010453.4059782-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1032.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257110684116601 Content-Type: text/plain; charset="utf-8" Pass in a newly allocated structure, rather than having to dance around allocation of the name and the structure. Since we no longer have two copies of the structure handy within add_cpreg_to_hashtable, delay the writeback of concrete values over wildcards until we're done querying the wildcards. Signed-off-by: Richard Henderson --- target/arm/helper.c | 97 ++++++++++++++++++++++----------------------- 1 file changed, 48 insertions(+), 49 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 0e4be14606..d9ac6a20a7 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -7289,13 +7289,12 @@ static ARMCPRegInfo *alloc_cpreg(const ARMCPRegInfo= *in, * Private utility function for define_one_arm_cp_reg(): * add a single reginfo struct to the hash table. */ -static void add_cpreg_to_hashtable(ARMCPU *cpu, const ARMCPRegInfo *r, +static void add_cpreg_to_hashtable(ARMCPU *cpu, ARMCPRegInfo *r, CPState state, CPSecureState secstate, int cp, int crm, int opc1, int opc2, - const char *name, uint32_t key) + uint32_t key) { CPUARMState *env =3D &cpu->env; - ARMCPRegInfo *r2; bool ns =3D secstate & ARM_CP_SECSTATE_NS; =20 /* Overriding of an existing definition must be explicitly requested. = */ @@ -7306,19 +7305,6 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, cons= t ARMCPRegInfo *r, } } =20 - r2 =3D alloc_cpreg(r, name, NULL); - - /* - * Update fields to match the instantiation, overwiting wildcards - * such as CP_ANY, ARM_CP_STATE_BOTH, or ARM_CP_SECSTATE_BOTH. - */ - r2->cp =3D cp; - r2->crm =3D crm; - r2->opc1 =3D opc1; - r2->opc2 =3D opc2; - r2->state =3D state; - r2->secure =3D secstate; - { bool isbanked =3D r->bank_fieldoffsets[0] && r->bank_fieldoffsets[= 1]; =20 @@ -7328,7 +7314,7 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, const= ARMCPRegInfo *r, * Overwriting fieldoffset as the array is only used to define * banked registers but later only fieldoffset is used. */ - r2->fieldoffset =3D r->bank_fieldoffsets[ns]; + r->fieldoffset =3D r->bank_fieldoffsets[ns]; } if (state =3D=3D ARM_CP_STATE_AA32) { if (isbanked) { @@ -7345,19 +7331,19 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, con= st ARMCPRegInfo *r, */ if ((r->state =3D=3D ARM_CP_STATE_BOTH && ns) || (arm_feature(env, ARM_FEATURE_V8) && !ns)) { - r2->type |=3D ARM_CP_ALIAS; + r->type |=3D ARM_CP_ALIAS; } } else if ((secstate !=3D r->secure) && !ns) { /* * The register is not banked so we only want to allow * migration of the non-secure instance. */ - r2->type |=3D ARM_CP_ALIAS; + r->type |=3D ARM_CP_ALIAS; } =20 if (HOST_BIG_ENDIAN && - r->state =3D=3D ARM_CP_STATE_BOTH && r2->fieldoffset) { - r2->fieldoffset +=3D sizeof(uint32_t); + r->state =3D=3D ARM_CP_STATE_BOTH && r->fieldoffset) { + r->fieldoffset +=3D sizeof(uint32_t); } } } @@ -7369,35 +7355,46 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, con= st ARMCPRegInfo *r, * multiple times. Special registers (ie NOP/WFI) are * never migratable and not even raw-accessible. */ - if (r2->type & ARM_CP_SPECIAL_MASK) { - r2->type |=3D ARM_CP_NO_RAW; + if (r->type & ARM_CP_SPECIAL_MASK) { + r->type |=3D ARM_CP_NO_RAW; } if (((r->crm =3D=3D CP_ANY) && crm !=3D 0) || ((r->opc1 =3D=3D CP_ANY) && opc1 !=3D 0) || ((r->opc2 =3D=3D CP_ANY) && opc2 !=3D 0)) { - r2->type |=3D ARM_CP_ALIAS | ARM_CP_NO_GDB; + r->type |=3D ARM_CP_ALIAS | ARM_CP_NO_GDB; } =20 + /* + * Update fields to match the instantiation, overwiting wildcards + * such as CP_ANY, ARM_CP_STATE_BOTH, or ARM_CP_SECSTATE_BOTH. + */ + r->cp =3D cp; + r->crm =3D crm; + r->opc1 =3D opc1; + r->opc2 =3D opc2; + r->state =3D state; + r->secure =3D secstate; + /* * Check that raw accesses are either forbidden or handled. Note that * we can't assert this earlier because the setup of fieldoffset for * banked registers has to be done first. */ - if (!(r2->type & ARM_CP_NO_RAW)) { - assert(!raw_accessors_invalid(r2)); + if (!(r->type & ARM_CP_NO_RAW)) { + assert(!raw_accessors_invalid(r)); } =20 - g_hash_table_insert(cpu->cp_regs, (gpointer)(uintptr_t)key, r2); + g_hash_table_insert(cpu->cp_regs, (gpointer)(uintptr_t)key, r); } =20 -static void add_cpreg_to_hashtable_aa32(ARMCPU *cpu, const ARMCPRegInfo *r, +static void add_cpreg_to_hashtable_aa32(ARMCPU *cpu, ARMCPRegInfo *r, int cp, int crm, int opc1, int opc= 2) { /* * Under AArch32 CP registers can be common * (same for secure and non-secure world) or banked. */ - char *name; + ARMCPRegInfo *r_s; bool is64 =3D r->type & ARM_CP_64BIT; uint32_t key =3D ENCODE_CP_REG(cp, is64, 0, r->crn, crm, opc1, opc2); =20 @@ -7409,24 +7406,23 @@ static void add_cpreg_to_hashtable_aa32(ARMCPU *cpu= , const ARMCPRegInfo *r, /* fall through */ case ARM_CP_SECSTATE_S: add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, r->secure, - cp, crm, opc1, opc2, r->name, key); + cp, crm, opc1, opc2, key); break; case ARM_CP_SECSTATE_BOTH: - name =3D g_strdup_printf("%s_S", r->name); - add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, ARM_CP_SECSTATE_= S, - cp, crm, opc1, opc2, name, key); - g_free(name); + r_s =3D alloc_cpreg(r, r->name, "_S"); + add_cpreg_to_hashtable(cpu, r_s, ARM_CP_STATE_AA32, ARM_CP_SECSTAT= E_S, + cp, crm, opc1, opc2, key); =20 key |=3D CP_REG_AA32_NS_MASK; add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, ARM_CP_SECSTATE_= NS, - cp, crm, opc1, opc2, r->name, key); + cp, crm, opc1, opc2, key); break; default: g_assert_not_reached(); } } =20 -static void add_cpreg_to_hashtable_aa64(ARMCPU *cpu, const ARMCPRegInfo *r, +static void add_cpreg_to_hashtable_aa64(ARMCPU *cpu, ARMCPRegInfo *r, int crm, int opc1, int opc2) { uint32_t key =3D ENCODE_AA64_CP_REG(r->opc0, opc1, r->crn, crm, opc2); @@ -7443,24 +7439,23 @@ static void add_cpreg_to_hashtable_aa64(ARMCPU *cpu= , const ARMCPRegInfo *r, * and name that it is passed, so it's OK to use * a local struct here. */ - ARMCPRegInfo nxs_ri =3D *r; - g_autofree char *name =3D g_strdup_printf("%sNXS", r->name); + ARMCPRegInfo *nxs_ri =3D alloc_cpreg(r, r->name, "NXS"); uint32_t nxs_key; =20 - assert(nxs_ri.crn < 0xf); - nxs_ri.crn++; + assert(nxs_ri->crn < 0xf); + nxs_ri->crn++; nxs_key =3D key + (1 << CP_REG_ARM64_SYSREG_CRN_SHIFT); - if (nxs_ri.fgt) { - nxs_ri.fgt |=3D R_FGT_NXS_MASK; + if (nxs_ri->fgt) { + nxs_ri->fgt |=3D R_FGT_NXS_MASK; } =20 - add_cpreg_to_hashtable(cpu, &nxs_ri, ARM_CP_STATE_AA64, + add_cpreg_to_hashtable(cpu, nxs_ri, ARM_CP_STATE_AA64, ARM_CP_SECSTATE_NS, 0, crm, opc1, opc2, - name, nxs_key); + nxs_key); } =20 add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA64, ARM_CP_SECSTATE_NS, - 0, crm, opc1, opc2, r->name, key); + 0, crm, opc1, opc2, key); } =20 void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRegInfo *r) @@ -7667,16 +7662,20 @@ void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCP= RegInfo *r) for (int crm =3D crmmin; crm <=3D crmmax; crm++) { for (int opc1 =3D opc1min; opc1 <=3D opc1max; opc1++) { for (int opc2 =3D opc2min; opc2 <=3D opc2max; opc2++) { + ARMCPRegInfo *r2 =3D alloc_cpreg(r, r->name, NULL); + ARMCPRegInfo *r3; + switch (r->state) { case ARM_CP_STATE_AA32: - add_cpreg_to_hashtable_aa32(cpu, r, cp, crm, opc1, opc= 2); + add_cpreg_to_hashtable_aa32(cpu, r2, cp, crm, opc1, op= c2); break; case ARM_CP_STATE_AA64: - add_cpreg_to_hashtable_aa64(cpu, r, crm, opc1, opc2); + add_cpreg_to_hashtable_aa64(cpu, r2, crm, opc1, opc2); break; case ARM_CP_STATE_BOTH: - add_cpreg_to_hashtable_aa32(cpu, r, cp, crm, opc1, opc= 2); - add_cpreg_to_hashtable_aa64(cpu, r, crm, opc1, opc2); + r3 =3D alloc_cpreg(r2, r2->name, NULL); + add_cpreg_to_hashtable_aa32(cpu, r2, cp, crm, opc1, op= c2); + add_cpreg_to_hashtable_aa64(cpu, r3, crm, opc1, opc2); break; default: g_assert_not_reached(); --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257070; cv=none; d=zohomail.com; s=zohoarc; b=mGU8tlk6YMLZJ68Q3R2XiLR8qxySemvoEkPbM8AdeXS58P38p8U5Y2lLs85ONyKSVLN7jCkRfn/1ccfOPf8oIlMkDhsOrYtHySA0JCrCmafH/HiXKzqe5xiRy2E3XyyuAKPvjEAnA8t1RKAdVhvSKSM5qiA7lTTVacLbgwNjt+8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257070; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/Mzkv/ARe4RUNBXryPDykt2Z93CF8H2bNJcxJ8kAMtQ=; b=S/bf/Iv6s7SLmuz9Kjl032lHGXRFwbhX8k5BfMfF+1/FqNEbzticK8JRww6fTvZ3g83xzVAzv/YaFlm4WVOJlwu2S63enKUeXj6SXUFpjhvDEecR4/4Ia1kevTszmmPaxB+fEIZCZGjruSaUAVxCJv2mZKG24vnxzTn+zt5nabI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257070090768.5145647525137; Tue, 26 Aug 2025 18:11:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4eF-0001nF-RX; Tue, 26 Aug 2025 21:08:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4dZ-0007Xm-9e for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:43 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4dU-0007am-MX for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:40 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-76e2e88c6a6so5566266b3a.1 for ; Tue, 26 Aug 2025 18:07:33 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.07.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:07:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256852; x=1756861652; darn=nongnu.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=/Mzkv/ARe4RUNBXryPDykt2Z93CF8H2bNJcxJ8kAMtQ=; b=wcgH08xN590ORIPXjAm+2QekIgyVazzruA/S0GcTS3MKAvleAUtfkO7vxvtSV5VidE 1LoYw16cSrRi9Nz4bcQJWasbLtkdtTzkgwJbrH7Se5M21fO5OrdYHh2cN3XudV823T8W nTc6rYfugcVRmMTrVcvaC92kM3yRgiuBQKj59CTWZlr699XQ53YLEd1iXpACvZLjNLdI 5PVYKouXoQ41BpONSnLbzuLEqXS8PPIQPpm2uvJ2BlxBEdh7acn+4BPPqcnizZFJmfxf jgGxTLV8cSPF+/h/IcAR/rIoBpiuAX6b25r9gyNMsMwXdUdYw7g9ZKZbd+MvD/vBYrTO Dmpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256852; x=1756861652; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/Mzkv/ARe4RUNBXryPDykt2Z93CF8H2bNJcxJ8kAMtQ=; b=bMIPcR99ZE0QSM3Qdgr3NrB02xnHWW+nviu9Fr9ZLQQRYE15O4eF+XCsfFPXYalqMI u72AoJ47u38TOgmT/XcHhBXeG5Rn9S8qpNEBq/DF02cWXDLuvWstEZZV7D1Finci2j4j CsImgsi32ryLsSsdkaPWa3LqehCgovvzsLyuL0fA4EHYhxv8idbXIeuBgeOlEKyZbawD ilLZO5pieN3MHBrnlD1XPH0ufvE4eOW+F83RP5srofMbSeH4Sf2Pmh4CltAEdFSNKsME WB24xVztabSpBAycAmSFCMSYcchrDl91OMwyN9dRidTz0HnbMIeAvxBde7dGXesAs+9c Hu9Q== X-Gm-Message-State: AOJu0Yxb+ODR3Q/6lJUfjBItHmdBJf4N8XdLjLWUYnM7HgifSz63sfEm l2ZcaZO+nJqc4s/4gJKUqScmlxylFBQov6+HY4DOh4m88CYnFpwiUMOeWY19lkBPYw/8rnUWTYj gbQQIocI= X-Gm-Gg: ASbGncu9+E9M8G5IxK1LghGyCtQa52EhYW3WwlPUewvuAmXVyCaAeGOHHcXBreKknw2 FRjLNb0eh72onfgwhe3MD2Yf0jhoOF+NRpNADszkdPmSLLqwRAnDLP4/1bxuILZo0W9hIEysHSg ZVe3Gaj2GPKtnY6e4NCPQdHHMk0LdtQ6NeOUMSty2YmZNTu4/ZavvHhT3CwK4WEC414Xe7mdRJ5 O5Kykxr0xmZg8CDdbc1UtV6Sopjv2f5GGLcx4R0O2/XGxVHe01uoJW0zK+qSPMQTJzXJjNz3yBg GCuk4zy4qeIdW1kh1Qvf+2zz4kgU7obFSQZl0FTl+8U+DGEpIwCSOd37dqHGkhYx0eQf8oQ5soW NvjV3J7ucF5bP9BQV79ccAJGNXQtt+tXm9JYT0V8NbeAXLZY= X-Google-Smtp-Source: AGHT+IHt59RAtXAnspcHNiGx8izVzNNxGZgUUFbo+MoJyUZPmWVkJw4oHIg7gsdZoRXtz9ZAXQL4rQ== X-Received: by 2002:a05:6a00:3d55:b0:771:ec42:1c09 with SMTP id d2e1a72fcca58-771ec421d77mr9538236b3a.27.1756256851690; Tue, 26 Aug 2025 18:07:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 27/61] target/arm: Remove name argument to alloc_cpreg Date: Wed, 27 Aug 2025 11:04:18 +1000 Message-ID: <20250827010453.4059782-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257072344124100 Content-Type: text/plain; charset="utf-8" All callers now pass in->name, so take the value from there. Signed-off-by: Richard Henderson --- target/arm/helper.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index d9ac6a20a7..3cd4546494 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -7267,9 +7267,9 @@ void register_cp_regs_for_features(ARMCPU *cpu) * Copy a ARMCPRegInfo structure, allocating it along with the name * and an optional suffix to the name. */ -static ARMCPRegInfo *alloc_cpreg(const ARMCPRegInfo *in, - const char *name, const char *suffix) +static ARMCPRegInfo *alloc_cpreg(const ARMCPRegInfo *in, const char *suffi= x) { + const char *name =3D in->name; size_t name_len =3D strlen(name); size_t suff_len =3D suffix ? strlen(suffix) : 0; ARMCPRegInfo *out =3D g_malloc(sizeof(*in) + name_len + suff_len + 1); @@ -7409,7 +7409,7 @@ static void add_cpreg_to_hashtable_aa32(ARMCPU *cpu, = ARMCPRegInfo *r, cp, crm, opc1, opc2, key); break; case ARM_CP_SECSTATE_BOTH: - r_s =3D alloc_cpreg(r, r->name, "_S"); + r_s =3D alloc_cpreg(r, "_S"); add_cpreg_to_hashtable(cpu, r_s, ARM_CP_STATE_AA32, ARM_CP_SECSTAT= E_S, cp, crm, opc1, opc2, key); =20 @@ -7439,7 +7439,7 @@ static void add_cpreg_to_hashtable_aa64(ARMCPU *cpu, = ARMCPRegInfo *r, * and name that it is passed, so it's OK to use * a local struct here. */ - ARMCPRegInfo *nxs_ri =3D alloc_cpreg(r, r->name, "NXS"); + ARMCPRegInfo *nxs_ri =3D alloc_cpreg(r, "NXS"); uint32_t nxs_key; =20 assert(nxs_ri->crn < 0xf); @@ -7662,7 +7662,7 @@ void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRe= gInfo *r) for (int crm =3D crmmin; crm <=3D crmmax; crm++) { for (int opc1 =3D opc1min; opc1 <=3D opc1max; opc1++) { for (int opc2 =3D opc2min; opc2 <=3D opc2max; opc2++) { - ARMCPRegInfo *r2 =3D alloc_cpreg(r, r->name, NULL); + ARMCPRegInfo *r2 =3D alloc_cpreg(r, NULL); ARMCPRegInfo *r3; =20 switch (r->state) { @@ -7673,7 +7673,7 @@ void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRe= gInfo *r) add_cpreg_to_hashtable_aa64(cpu, r2, crm, opc1, opc2); break; case ARM_CP_STATE_BOTH: - r3 =3D alloc_cpreg(r2, r2->name, NULL); + r3 =3D alloc_cpreg(r2, NULL); add_cpreg_to_hashtable_aa32(cpu, r2, cp, crm, opc1, op= c2); add_cpreg_to_hashtable_aa64(cpu, r3, crm, opc1, opc2); break; --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257620; cv=none; d=zohomail.com; s=zohoarc; b=RiAHs/pw5sZOj9/oiytuCvxeYvbF9RItmEdjcfnTrVbzQBijZgpJRFEugCk3n6GI8HQGk3WlioAr0evCSVxg51ghncNRD5dKdzA8WfnIXSavYBcAoGTgML6WN54aOSybMpiOuysMsq3MgNu8i+yo4qh2sWwG/2Ow5lCsbs+rKJs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257620; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=GXUdqCkF+LYn22BhLyzjofcSNfXOcqV3+XqLF12lMmE=; b=VkoFUSlyU0Vbdord6IoFyF4LpuLGXsYceKexGqYajKILyiHKS72XKB+VCJR0/r9x0GoI+tzzDI35yXoGeDepr3rvtgYUnWaAwA/BHlNNzGpkhs/ALfUJradTPOIfzd43XB6Y515Ww+PZK2gfzKYGsFkAG2M4J1rOsPAgTzQO/pQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257620394621.3168690278262; Tue, 26 Aug 2025 18:20:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4dq-0000T9-TL; Tue, 26 Aug 2025 21:07:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4dd-0007pE-Tw for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:47 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4dW-0007cL-MD for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:45 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-770d7dafacdso3339156b3a.0 for ; Tue, 26 Aug 2025 18:07:37 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.07.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:07:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256856; x=1756861656; darn=nongnu.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=GXUdqCkF+LYn22BhLyzjofcSNfXOcqV3+XqLF12lMmE=; b=nKcdtVmPJA+Dlh4W96IBj0DTKeJOWi3jetSUC6V87hA+97cSDYO+NCTXIS1ywrJ4YQ 7n7deoZzuvS2XlGGOFILNfbhyOEY/v60cHGe+CrSMmL1QWYZzzTd3yeQAbOwqiOGQwEI tf3RYdBuSiiPBXBlypfbinM+5G9oZTKqvC1w0YBZt8F27YqgR0Tgv/qSr7W1dAWWikXf dOGwuZXDzJ0EQwdPej89h0Tc+20m6rgFmkV0ip60gLRvQ215/DqIcw2Y+0dO/WzOKcDp qnOem1Vw3roiRLHATIi4vB5K7jZruGkUvEbC8kZ15QEQWvMgYLA/uU9cSnOP4Nm9kK6a vEYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256856; x=1756861656; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GXUdqCkF+LYn22BhLyzjofcSNfXOcqV3+XqLF12lMmE=; b=FQ+nwoHBe0EnnLPSmW5UDxGrqdkqhAjRN711e7EheqzueNVwRtmMl+PBPuouT5fO+p 0d87CSleHbWhHb5f0rxZLmoIQQhAKqUGrTX6HvXggoNlJeVgfvwhnGicVz/qW81XAT7E H7qNOkiSGR5gYdWMaXvAAbCUfC6Q/rjtTMSsr6zVRGn+wPmKqBVXR0+FYNx0I3lY2fPI z2WGtL/j+auXrRD2kRrPrZMRIpr1ZhgOeoFsNo9BFQPXEQS4jQbkbgbgs/OLf8JnHKlV Lxd6ydZwbQ2LmfDN/XQYLZCHvEJ4gCknkOx9bkIOId5Dg6Dvo+HaEdzfpXCq65LzAECX 7V8A== X-Gm-Message-State: AOJu0YxviVi/suYoQh0o7b0cRH/FBfG7LJZJqnSst1JYCipldZDfQBVO +cpWsDdFzh+D4su6zxwzC6p4cuF502h2fDJubGcWPQHmyW86PKNdJAPxWWmVF1eUXrcJJHcbji6 1HhPU7q0= X-Gm-Gg: ASbGncuXj0t26t1biuuiToRZVOmFjE5Ip7C8TWiR+zhpOK/9rfHeVc/jFD5BpSCidXn a57XYvTDXfI5I5NmPgNEOJ+1I4Q6RxKRYGRDRajPfOh1OZdOizeDD9Du0oNPuwLZmvj1qqToqO7 0lmby0Z4FR3tephB0NckXVJDz7fAfyztmngNi92TVrCVYvf5BqJST1JqRJjyxjjMvd+dj+I6D4P cFT2a6+u5ytOhWrHZeVuKQkC2IoFpbLAIiPHhn7ZiXKYuAAKBEvNpEJALYhJfzvHDJtd5RppgAQ RriFCLHstcv60zA8nDr3NLV0TyyQW2fNsKxnXUMtkZoGhLQvDuj3l8PyGi+rUE6WdmWtQU0Ghzy U42ENGsXnsd7eA5UyIEAPBP3vJd7jq00iclBm X-Google-Smtp-Source: AGHT+IFf7ecdlminGXOBAydYbtK4duI+sSVUcfD5+Urj5l/NAJlkvs0mcElP4ltd85I9IUgbbqoCsQ== X-Received: by 2002:a05:6a00:439b:b0:771:f8b5:d88 with SMTP id d2e1a72fcca58-771f8b51015mr6428666b3a.22.1756256856477; Tue, 26 Aug 2025 18:07:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 28/61] target/arm: Move alias setting for wildcards Date: Wed, 27 Aug 2025 11:04:19 +1000 Message-ID: <20250827010453.4059782-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257622565116600 Content-Type: text/plain; charset="utf-8" Move this test from add_cpreg_to_hashtable to define_one_arm_cp_reg_with_opaque, where we can also simplify it based on the loop variables. Signed-off-by: Richard Henderson --- target/arm/helper.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 3cd4546494..1a321ad181 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -7349,20 +7349,12 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, ARM= CPRegInfo *r, } =20 /* - * By convention, for wildcarded registers only the first - * entry is used for migration; the others are marked as - * ALIAS so we don't try to transfer the register - * multiple times. Special registers (ie NOP/WFI) are - * never migratable and not even raw-accessible. + * Special registers (ie NOP/WFI) are never migratable and + * are not even raw-accessible. */ if (r->type & ARM_CP_SPECIAL_MASK) { r->type |=3D ARM_CP_NO_RAW; } - if (((r->crm =3D=3D CP_ANY) && crm !=3D 0) || - ((r->opc1 =3D=3D CP_ANY) && opc1 !=3D 0) || - ((r->opc2 =3D=3D CP_ANY) && opc2 !=3D 0)) { - r->type |=3D ARM_CP_ALIAS | ARM_CP_NO_GDB; - } =20 /* * Update fields to match the instantiation, overwiting wildcards @@ -7665,6 +7657,16 @@ void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPR= egInfo *r) ARMCPRegInfo *r2 =3D alloc_cpreg(r, NULL); ARMCPRegInfo *r3; =20 + /* + * By convention for wildcarded registers, only the first + * entry is used for migration; the others are marked as + * ALIAS so we don't try to transfer the register + * multiple times. + */ + if (crm !=3D crmmin || opc1 !=3D opc1min || opc2 !=3D opc2= min) { + r2->type |=3D ARM_CP_ALIAS | ARM_CP_NO_GDB; + } + switch (r->state) { case ARM_CP_STATE_AA32: add_cpreg_to_hashtable_aa32(cpu, r2, cp, crm, opc1, op= c2); --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257888; cv=none; d=zohomail.com; s=zohoarc; b=EH+v1OproYFu1d3xcKHNbxCZgu0QC5rYhKtNhtrNxxIfie2x4PEus3RLKq65y7jOIKNok0271akZ8bwyH6WV9m4OCKZq7s9UC2u1ljJVKmeMhcyryr+sbhJhEWX7MdFZoCLN5h2/8I05dVVI5YYkmHxX84nxwJlhClCf/Jos1PM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257888; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fQtW1VuVxg7+Obq+lNxml0rtcuIJugDUSAdlvV8elWI=; b=koyGDiseeNdKDxmR7iHNkojmXs6yZGoiuXfdPY9O708j+Bhrmgkv/uKqLy0v3eu+12cbbAXmgLNkOmFjniVwj2Tp23E48UvIvUzfuMRVVyQM1FOW2XSfx3ugnocJfn0TeW5ymkHmQyQNHg+DDHJtKaWb3XQiW6/8/L7UA6eedWw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257888602687.2569990083472; Tue, 26 Aug 2025 18:24:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4du-0000mr-Hy; Tue, 26 Aug 2025 21:08:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4di-0008EF-V3 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:51 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4db-0007cr-PD for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:49 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-770d7dafacdso3339227b3a.0 for ; Tue, 26 Aug 2025 18:07:40 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.07.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:07:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256859; x=1756861659; darn=nongnu.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=fQtW1VuVxg7+Obq+lNxml0rtcuIJugDUSAdlvV8elWI=; b=AC1LResSl6bciqRPQXO8pWFHlUgQGoiRe6Bnep7JTqLRYWEooCsRchPsSd/Rq1W0Im TsE7oGstBnJ6jY2AZyaTUZOROafQTAB7rd/uGsyv1NwTbqpRlDXgoZZ8yVDO5vnP+yFz SWjwWNo3BVfQXdcTges++SkkAnFvA26H0GlPXZ0xacU6juaeGggY0u6dxnMGneRbuAKp 7HgnoexUzIzBUMMVVSpNzWy3vE0pgD0QV2sAvX+pbmo+RMnuTJFVySc0q/PCQCe6l/Zs lJNKpq7NSKHo3zBekOOe31FIitrW7EdUHM6Mv0/veiqNuJKxPDq3UlBy7crqlwLGIkml mPDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256859; x=1756861659; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fQtW1VuVxg7+Obq+lNxml0rtcuIJugDUSAdlvV8elWI=; b=i5oFSbv2ZhBcMXR09kRgUD24QYxQDeWwiiUy1flC9huPp0z1vjsCvUZcAEz40Q6TNo tN+hsVGOoSUqCdXNPUYykUabdzT83kUgU4C5ecmqKXENj704M7RBuYesVNCW6aan8+il RkD+iEG3AlpWnE4DIuheNU2HLgmctRFJ5qT4OjyNtEOeHWTW3OlnKAzoGT1mYYR7usJy AEoqn9OCjy2qlrbdXCdeXcLbJAFHcUoVpOwC6/55PSO+C0ezcmDyuoNaFFON5lQk4qFS 1ann8GmvNB/m+4vsI+A8jF3RiVynks2sG8HJVEzzDncEg7JlZWczAeu22m28GhTccXT+ Xu+g== X-Gm-Message-State: AOJu0YwStdn75Hiemxqlb3+jDytZXUOMZ79dShW6kZvccNN7T4uAqyWU sWRocRSKZoz7vpAIVHrmZuWty/LDx+VGVEoc3I3scyRspHiqfawYoAVJ0s07E1TZKXD+DdIPqBP WGaBwbH8= X-Gm-Gg: ASbGncvWq5YcRGYnPyDkFRhK8RioTeu+XxgQyaXKuIUBUVtKo8cgauPCshAZq1En252 QbCie9jI0qIuIngqd61vUyycYT5aF850octuDcDfexeG4YjWoDwC1Iex90Z4JAtondmiGEKG2kQ VKlCDOVpqsE53zyGBTiPMwIoaKU7sy6F8NtGUU9eFo+evHyshxQOa9u4tYwROUJHzSjYGfFe8/a I9ECDsti8qlws+8R2gUPeZfxwVePqqOFM2vaI/TTMv9aqLUNq8LmyLQ0HgGMG/XWl6iLhCJz9ks lGwkYvL/9D1JMy5WWLzgrTp5AiE2Obg9C4qCD79aojS4Rq1MYSbxxmMiWi1LapzNmBT4uBTZ63W lmxlivZDCXPDnxecG12GYsr4kEXVzKQKFdaMh9S8psq2oqeM= X-Google-Smtp-Source: AGHT+IF08gwjfpY/vHIP/8p+0uA04w7LU4wFS5OH5xw1i/uEKMfARoFXDE0Mg9KlRiHq+dzPIyL1BA== X-Received: by 2002:a05:6a21:328b:b0:240:2d32:500 with SMTP id adf61e73a8af0-24340b58571mr25942695637.13.1756256858784; Tue, 26 Aug 2025 18:07:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 29/61] target/arm: Move writeback of CP_ANY fields Date: Wed, 27 Aug 2025 11:04:20 +1000 Message-ID: <20250827010453.4059782-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257889816116600 Content-Type: text/plain; charset="utf-8" Move the writeback of cp, crm, opc1, opc2 to define_one_arm_cp_reg, which means we don't have to pass all those parameters down to subroutines. Signed-off-by: Richard Henderson --- target/arm/helper.c | 52 ++++++++++++++++++++++----------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 1a321ad181..66e70abc76 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -7291,7 +7291,6 @@ static ARMCPRegInfo *alloc_cpreg(const ARMCPRegInfo *= in, const char *suffix) */ static void add_cpreg_to_hashtable(ARMCPU *cpu, ARMCPRegInfo *r, CPState state, CPSecureState secstate, - int cp, int crm, int opc1, int opc2, uint32_t key) { CPUARMState *env =3D &cpu->env; @@ -7358,12 +7357,8 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, ARMC= PRegInfo *r, =20 /* * Update fields to match the instantiation, overwiting wildcards - * such as CP_ANY, ARM_CP_STATE_BOTH, or ARM_CP_SECSTATE_BOTH. + * such as ARM_CP_STATE_BOTH or ARM_CP_SECSTATE_BOTH. */ - r->cp =3D cp; - r->crm =3D crm; - r->opc1 =3D opc1; - r->opc2 =3D opc2; r->state =3D state; r->secure =3D secstate; =20 @@ -7379,8 +7374,7 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, ARMCP= RegInfo *r, g_hash_table_insert(cpu->cp_regs, (gpointer)(uintptr_t)key, r); } =20 -static void add_cpreg_to_hashtable_aa32(ARMCPU *cpu, ARMCPRegInfo *r, - int cp, int crm, int opc1, int opc= 2) +static void add_cpreg_to_hashtable_aa32(ARMCPU *cpu, ARMCPRegInfo *r) { /* * Under AArch32 CP registers can be common @@ -7388,7 +7382,8 @@ static void add_cpreg_to_hashtable_aa32(ARMCPU *cpu, = ARMCPRegInfo *r, */ ARMCPRegInfo *r_s; bool is64 =3D r->type & ARM_CP_64BIT; - uint32_t key =3D ENCODE_CP_REG(cp, is64, 0, r->crn, crm, opc1, opc2); + uint32_t key =3D ENCODE_CP_REG(r->cp, is64, 0, r->crn, + r->crm, r->opc1, r->opc2); =20 assert(!(r->type & ARM_CP_ADD_TLBI_NXS)); /* aa64 only */ =20 @@ -7397,27 +7392,26 @@ static void add_cpreg_to_hashtable_aa32(ARMCPU *cpu= , ARMCPRegInfo *r, key |=3D CP_REG_AA32_NS_MASK; /* fall through */ case ARM_CP_SECSTATE_S: - add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, r->secure, - cp, crm, opc1, opc2, key); + add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, r->secure, key); break; case ARM_CP_SECSTATE_BOTH: r_s =3D alloc_cpreg(r, "_S"); - add_cpreg_to_hashtable(cpu, r_s, ARM_CP_STATE_AA32, ARM_CP_SECSTAT= E_S, - cp, crm, opc1, opc2, key); + add_cpreg_to_hashtable(cpu, r_s, ARM_CP_STATE_AA32, + ARM_CP_SECSTATE_S, key); =20 key |=3D CP_REG_AA32_NS_MASK; - add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, ARM_CP_SECSTATE_= NS, - cp, crm, opc1, opc2, key); + add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA32, + ARM_CP_SECSTATE_NS, key); break; default: g_assert_not_reached(); } } =20 -static void add_cpreg_to_hashtable_aa64(ARMCPU *cpu, ARMCPRegInfo *r, - int crm, int opc1, int opc2) +static void add_cpreg_to_hashtable_aa64(ARMCPU *cpu, ARMCPRegInfo *r) { - uint32_t key =3D ENCODE_AA64_CP_REG(r->opc0, opc1, r->crn, crm, opc2); + uint32_t key =3D ENCODE_AA64_CP_REG(r->opc0, r->opc1, + r->crn, r->crm, r->opc2); =20 if ((r->type & ARM_CP_ADD_TLBI_NXS) && cpu_isar_feature(aa64_xs, cpu)) { @@ -7442,12 +7436,11 @@ static void add_cpreg_to_hashtable_aa64(ARMCPU *cpu= , ARMCPRegInfo *r, } =20 add_cpreg_to_hashtable(cpu, nxs_ri, ARM_CP_STATE_AA64, - ARM_CP_SECSTATE_NS, 0, crm, opc1, opc2, - nxs_key); + ARM_CP_SECSTATE_NS, nxs_key); } =20 - add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA64, ARM_CP_SECSTATE_NS, - 0, crm, opc1, opc2, key); + add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA64, + ARM_CP_SECSTATE_NS, key); } =20 void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRegInfo *r) @@ -7667,17 +7660,24 @@ void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCP= RegInfo *r) r2->type |=3D ARM_CP_ALIAS | ARM_CP_NO_GDB; } =20 + /* Overwrite CP_ANY with the instantiation. */ + r2->crm =3D crm; + r2->opc1 =3D opc1; + r2->opc2 =3D opc2; + switch (r->state) { case ARM_CP_STATE_AA32: - add_cpreg_to_hashtable_aa32(cpu, r2, cp, crm, opc1, op= c2); + add_cpreg_to_hashtable_aa32(cpu, r2); break; case ARM_CP_STATE_AA64: - add_cpreg_to_hashtable_aa64(cpu, r2, crm, opc1, opc2); + add_cpreg_to_hashtable_aa64(cpu, r2); break; case ARM_CP_STATE_BOTH: r3 =3D alloc_cpreg(r2, NULL); - add_cpreg_to_hashtable_aa32(cpu, r2, cp, crm, opc1, op= c2); - add_cpreg_to_hashtable_aa64(cpu, r3, crm, opc1, opc2); + r2->cp =3D cp; + add_cpreg_to_hashtable_aa32(cpu, r2); + r3->cp =3D 0; + add_cpreg_to_hashtable_aa64(cpu, r3); break; default: g_assert_not_reached(); --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257315; cv=none; d=zohomail.com; s=zohoarc; b=BbbAvhu8PriJzTEQqCeyb6PGTIETRgfmoDed8GQRUTCenb14zWHG/4xxWK9zEztFCjzPhn5R1Y3bIaJJr1OxHCeZBPZMTPKrrkObKzrJb8l/U+058oX+D5zoyDn2R1Q94X6zgI4Aqq5K7SxRfsSO+/4Y8h+gkAdMYHU0AnJIN1c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257315; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Zq68Nh6Pb9LNdIJ5Ri5el2wLAJJswXT0LQtr5jRjjiE=; b=cmafBCy7Q+QhVQj3W8eVEgt7rysDh7cicFqc//2VHp34czXR8Bzz/7RPJJ5KrS62mzT0V2m4lrC2aV+uyIFZTxPdW/+Na1c0gIavQxN+zhKp5ZZ/X43BAzgfDXl4HKiqoF3uyA39A9K77CtcLNlb0qtYnGjE7RtsVCQzwpu5zwI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257315303171.85855037462056; Tue, 26 Aug 2025 18:15:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4e4-0001h1-Dn; Tue, 26 Aug 2025 21:08:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4ds-0000hh-Vr for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:08:01 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4de-0007dK-M2 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:08:00 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-771e4378263so2437636b3a.0 for ; Tue, 26 Aug 2025 18:07:42 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.07.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:07:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256861; x=1756861661; darn=nongnu.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=Zq68Nh6Pb9LNdIJ5Ri5el2wLAJJswXT0LQtr5jRjjiE=; b=krK38b9UlJStO10cV3kpW9zYtIXeXbmPoK6we4icMmNAae1H29sV7BIuioYqDOK/GS EzIz4SFovfUkxkaccjv5yzpx6oqA86dQDVwEwmxPPNXDe/Zb+rJHRiuhdHuaKmwjQVCr qH3uRfElKSNCyNfQDgGvY4t3+L/JMpDu+FIwAsUnzQ78NABenxYU/69snpnb0PO294xl oPDF5TmnEhvYbP17Kv8hPZvuSUopoRaGipQJckjBsAH2AH6M4yqYbDB3yN9AsvcqIrWy IOEmq9lh4DgbrSKXeCZ1e74J/rexY+mkOoMvc2TDfPQl+qEmmhEx+AEkcGadCt2JzTz7 GDTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256861; x=1756861661; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Zq68Nh6Pb9LNdIJ5Ri5el2wLAJJswXT0LQtr5jRjjiE=; b=H54Sm1sF5WxkXNjbVnEDhaZChlnT8yO/vU/k6CMhTO1X+cfD3WT2BkcJAhOD7RMqZB PGkF3ubzTiAxyYDN0qoiIED4VUIKqqxezMAADld/y0zSab1KdTdqDqtauBGFRE6f4/qG BpIYFumJkgB9SKLDhj/UbNa5MkcrI10ZYAy9kvbJTmvU92Ikn/EjIOpUkZEEAprIEVmN HobJbWGaI07cif0b96rVkQb8ywMoA8Di+X/PK+2fJonSMWF1m2xhmEhE/gpFnK9lFX8A AmwbG/kRJT4BD6NEgqMIDxUy/RkfXu6+yd67kW8fo1InhItakWjJoP4DqzVpf5nKpJ2S hdRg== X-Gm-Message-State: AOJu0Yx6KfhRPqVGQhd7NegkoVKdT/68+HW7xDR3oqZlxKB2vJnOHacn H1//6q+O8MEAOM8RMVrfVtrlSDC58RlXjujYFGgkurUUuqg0DGjB5W6qdozw1SRvrHrOaR3pn3U 3EcZs6CE= X-Gm-Gg: ASbGnct1azzmeYCuS1nVL380mMpcl0thDSSYlDi1ses4MHVUdDiGoMMDJv81OLGo6tD qdhzaYhVkZJFxFbnfAPMC/tj5WYQCGx6PeusWkTdUh5HHHxDDJ9iqr5TkcgfVyk6+ArnlJrjV3R 7MVU9PidiewY5fVcE6CcAMaD66/PfkKlAREy2IMCx1QHuYeHvk/uuBHC9wLDYM1aGIPXms2rs99 ovT26tT7uGgUQuZPc/nlYPP7CJAgD9dzeT/UW+P7kv26ih1vV0XECOrVJA5vsSU0vVfzPYGx3Ue o9lizaELlOVr4hlxEQFkWABLf2zycx1gB+k57oODC158DCRhQAFY8EMhDFHHLUiefnxrXJs8SMi npGo5LA0GViD1nABaRjXlipBQWQ4vzhCT1At4 X-Google-Smtp-Source: AGHT+IEZ5FLXvtTe6GUIXzOW3rp/Ki481RPdi1xKwncHmK03L23IVd8caPQcdOcACqIyqkfW8nWfAg== X-Received: by 2002:a05:6a00:a03:b0:76e:885a:c32b with SMTP id d2e1a72fcca58-7702fc47b79mr20834702b3a.25.1756256861098; Tue, 26 Aug 2025 18:07:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 30/61] target/arm: Move endianness fixup for 32-bit registers Date: Wed, 27 Aug 2025 11:04:21 +1000 Message-ID: <20250827010453.4059782-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=0.01 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257316830116600 Content-Type: text/plain; charset="utf-8" Move the test outside of the banked register block, and repeat the AA32 test. Signed-off-by: Richard Henderson --- target/arm/helper.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 66e70abc76..d0ccc23811 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -7339,14 +7339,21 @@ static void add_cpreg_to_hashtable(ARMCPU *cpu, ARM= CPRegInfo *r, */ r->type |=3D ARM_CP_ALIAS; } - - if (HOST_BIG_ENDIAN && - r->state =3D=3D ARM_CP_STATE_BOTH && r->fieldoffset) { - r->fieldoffset +=3D sizeof(uint32_t); - } } } =20 + /* + * For 32-bit AArch32 regs shared with 64-bit AArch64 regs, + * adjust the field offset for endianness. This had to be + * delayed until banked registers were resolved. + */ + if (HOST_BIG_ENDIAN && + state =3D=3D ARM_CP_STATE_AA32 && + r->state =3D=3D ARM_CP_STATE_BOTH && + r->fieldoffset) { + r->fieldoffset +=3D sizeof(uint32_t); + } + /* * Special registers (ie NOP/WFI) are never migratable and * are not even raw-accessible. --=20 2.43.0 From nobody Sun Sep 28 16:28:06 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257216; cv=none; d=zohomail.com; s=zohoarc; b=ZVZjMDIvpY4HZpZooWVR6+g1WkqIH8AMAEO6bcdL/5pYkZ/pJyQ+s6Yh0MZEMi/62h0syjN4hQUWkv8T9IglKlmHeoKsf2awgSDpoyy4f4OvKvITsKCQXOK9wIjoI26vKvAPjknn0rLbrOVRlhtmZsDNUrtbQg1KEm8sEWa/Bo0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257216; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=x38MLekZNEZjsShxH8cHbE+ym7HzClucSOu45aiR/ek=; b=EeWqQdoH8vC/CIPVOcvzz/3PZd1JPdkp2M2zQ1GHZctJx4Tpl7np+87otMIskx7ynzshCanMAUvsWPFyNw4Fz1Ptz9E4G0xQ2UJ5CAImk8ELCLtEHGVgsxzqN1NBMNaLfzZC/M8mCmNYLzgLwuDaErmzpEGIqbwSJ0j7cSnsO/w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257216654873.8217034899346; Tue, 26 Aug 2025 18:13:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4f0-0002sW-1A; Tue, 26 Aug 2025 21:09:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4dt-0000i7-E5 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:08:01 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4dg-0007dT-Ii for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:08:01 -0400 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-7704799d798so2856561b3a.3 for ; Tue, 26 Aug 2025 18:07:46 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.07.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:07:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256863; x=1756861663; darn=nongnu.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=x38MLekZNEZjsShxH8cHbE+ym7HzClucSOu45aiR/ek=; b=N8jW6y00dCRQAWsOCJYtR7IH6tQG0jZZTHS0+kzDcwFR+zvlFBccvlYJ4N7FxxhaB0 jg5CThiQL3Fvukv17OAVNHvvRf0boRV+ZCKTYvCvHikRlNulqj9RVJPZ6QXC33lPcL3o pnX4dbnLzVA8E0p+zFDE6OgSWJmpNEgmo/TzysRvgqz/yVXiTNJjN0MzG6A8GxxhBK4u 8e6d5CHPTI26EKyXhj1kiUp5TKKFWfQP1bTelEr7MHy4ALj5+4BqiswpBQQKJIp7U7ta 9Ulc76mvdwzxEjBRCdeUgyQnPYlZI+Z6a75UxfVPELtnPtZWZyBm7VpTdcH6vD854pxc rA5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256863; x=1756861663; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=x38MLekZNEZjsShxH8cHbE+ym7HzClucSOu45aiR/ek=; b=VZNS1PF5Hv/wdvVmuZMYFsEW3G85AqqO0rz9JHBAJ4o/JVRZv3LJz47UrRuKB520B4 6gp049kC3r5bDsTjsyo/rnoBHU8EkMhGo2IK0Cm82ARFQOy83xPVB9w8/aGdpucRjptp LyHiR6MXicpSgkpmVagvrWbcCJtsCOG9TU8N+h9ELoVKou66WYeLrSRjN83rOqH/2ESa rR5T4lv7IErbv5TDITBGQeUaklHH3Texb/qGazrtq2c+ExuCyZT/8cCZnlHiDbfBlxJM cFmQhn+MaXvCvqLikHyLOnGzEDVPtd2w2mvsy/U7kJC7AC6x3HomGomm5SL6jcmW8KRA kyig== X-Gm-Message-State: AOJu0YwICySO/oOjYEagKwXQJhCFYE8kBcOU9ZLq3OPeEDvh8aZ7k6dK kY6Ptwb2OMdcOo2gF6bLBysmtrEiyF3LBVbdsvz5esJqNJz6jz4qTHW53MxDTJXCNro3v356XXs bcKpRPsE= X-Gm-Gg: ASbGncsqtb2bpqZKfAHRAdHvjSoyWkkVi3nOYVSH07gJiIEKsSisVB091Ahb07EqAhB Qpug4Eca28O8Tor3PDlBrhMy0c0zlgQQ6yr9Ud6GxLZoRvla8RnNpWPL+ctqEyANU1OfZoZOc8H mqFexSKEbN75a+xtCQOepsmey8V886kMths7nctEr5HrGr+IGsCzuJHEhfsbfmOLOW/E0hELt7a iGQlPU6wXGHphUiQdf6X7/NgLv9NwLhFNTJZNBhpZQL6lv0SIVzD8NojZldU4JZiV9Xw94f86Sq 2GdmZ9vpz4x+h6L284yzItdSLYG/Nm8GszZKMJ34JP49zNa+Sxk/g32uF0VFAt7vUr4Da2/qiYr n5//8xMbwOkL83VgaukCfjUADSqaOT5nj4SiW X-Google-Smtp-Source: AGHT+IGgKOvAv23b08ctn5rLyy68LHE+o0vS/RQA//ykRjQ+MH2h5EQDmxX/aOw+FJgu/BeEBHPJgw== X-Received: by 2002:a05:6a00:181e:b0:772:921:e32b with SMTP id d2e1a72fcca58-77209220d75mr447339b3a.25.1756256863279; Tue, 26 Aug 2025 18:07:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 31/61] target/arm: Rename TBFLAG_A64_NV2_MEM_E20 with *_E2H Date: Wed, 27 Aug 2025 11:04:22 +1000 Message-ID: <20250827010453.4059782-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.google.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257218190124100 Content-Type: text/plain; charset="utf-8" Install e2h in tbflags and compute nv2_mem_e20 from that in aarch64_tr_init_disas_context. Signed-off-by: Richard Henderson --- target/arm/cpu.h | 3 +-- target/arm/tcg/translate.h | 2 ++ target/arm/tcg/hflags.c | 8 +++++--- target/arm/tcg/translate-a64.c | 3 ++- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index dc9b6dce4c..919bd3d7eb 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -3076,8 +3076,7 @@ FIELD(TBFLAG_A64, ATA0, 31, 1) FIELD(TBFLAG_A64, NV, 32, 1) FIELD(TBFLAG_A64, NV1, 33, 1) FIELD(TBFLAG_A64, NV2, 34, 1) -/* Set if FEAT_NV2 RAM accesses use the EL2&0 translation regime */ -FIELD(TBFLAG_A64, NV2_MEM_E20, 35, 1) +FIELD(TBFLAG_A64, E2H, 35, 1) /* Set if FEAT_NV2 RAM accesses are big-endian */ FIELD(TBFLAG_A64, NV2_MEM_BE, 36, 1) FIELD(TBFLAG_A64, AH, 37, 1) /* FPCR.AH */ diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index f974996f3f..cd67c0ed07 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -150,6 +150,8 @@ typedef struct DisasContext { bool trap_eret; /* True if FEAT_LSE2 SCTLR_ELx.nAA is set */ bool naa; + /* True if HCR_EL2.E2H is set */ + bool e2h; /* True if FEAT_NV HCR_EL2.NV is enabled */ bool nv; /* True if NV enabled and HCR_EL2.NV1 is set */ diff --git a/target/arm/tcg/hflags.c b/target/arm/tcg/hflags.c index 59ab526375..6969d41ea0 100644 --- a/target/arm/tcg/hflags.c +++ b/target/arm/tcg/hflags.c @@ -258,6 +258,11 @@ static CPUARMTBFlags rebuild_hflags_a64(CPUARMState *e= nv, int el, int fp_el, DP_TBFLAG_A64(flags, TBII, tbii); DP_TBFLAG_A64(flags, TBID, tbid); =20 + /* E2H is used by both VHE and NV2. */ + if (hcr & HCR_E2H) { + DP_TBFLAG_A64(flags, E2H, 1); + } + if (cpu_isar_feature(aa64_sve, env_archcpu(env))) { int sve_el =3D sve_exception_el(env, el); =20 @@ -390,9 +395,6 @@ static CPUARMTBFlags rebuild_hflags_a64(CPUARMState *en= v, int el, int fp_el, } if (hcr & HCR_NV2) { DP_TBFLAG_A64(flags, NV2, 1); - if (hcr & HCR_E2H) { - DP_TBFLAG_A64(flags, NV2_MEM_E20, 1); - } if (env->cp15.sctlr_el[2] & SCTLR_EE) { DP_TBFLAG_A64(flags, NV2_MEM_BE, 1); } diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 58303c224f..648463f44a 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -10153,10 +10153,11 @@ static void aarch64_tr_init_disas_context(DisasCo= ntextBase *dcbase, dc->pstate_za =3D EX_TBFLAG_A64(tb_flags, PSTATE_ZA); dc->sme_trap_nonstreaming =3D EX_TBFLAG_A64(tb_flags, SME_TRAP_NONSTRE= AMING); dc->naa =3D EX_TBFLAG_A64(tb_flags, NAA); + dc->e2h =3D EX_TBFLAG_A64(tb_flags, E2H); dc->nv =3D EX_TBFLAG_A64(tb_flags, NV); dc->nv1 =3D EX_TBFLAG_A64(tb_flags, NV1); dc->nv2 =3D EX_TBFLAG_A64(tb_flags, NV2); - dc->nv2_mem_e20 =3D EX_TBFLAG_A64(tb_flags, NV2_MEM_E20); + dc->nv2_mem_e20 =3D dc->nv2 && dc->e2h; dc->nv2_mem_be =3D EX_TBFLAG_A64(tb_flags, NV2_MEM_BE); dc->fpcr_ah =3D EX_TBFLAG_A64(tb_flags, AH); dc->fpcr_nep =3D EX_TBFLAG_A64(tb_flags, NEP); --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257051; cv=none; d=zohomail.com; s=zohoarc; b=d9BN9bp55jvTPYT1ptWJ3Zwh5COjk4+mLIk8v+5kp171P5QYiD+qYehUaYCUWrLLFWda8Iwt2l1pOOQe+Kn2rf8aL4y3hNq44qHMLhOVcKY2sI1DCgwZEHV6k9LO4CZwaLHGtCEiur+bRzMc6dKFIZbJEkLvAnhcudjtcaXNhXY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257051; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qWwJXhspeKuxTriI/PhOD7a9dZ1dleThFKCakXmp7ro=; b=Twd4GR72A063fTob2qanK2qJp+tPNMjF7ONAj4U2uUMm4fEAf6t+yIB4R2YAJbM70HpTBzYHvDpYSTUPS6HlZsYZKQNERghT7/veNM2L+u1u5jA60bRvzkkCs+oZxko+YslvkEsylmiewVCta39NeWJcu31rbIKmIdE48lQh6qA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257051405700.699964916003; Tue, 26 Aug 2025 18:10:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4e0-0001GV-6Q; Tue, 26 Aug 2025 21:08:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4do-0000Ez-2X for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:56 -0400 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4di-0007dy-Ag for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:07:55 -0400 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-32597b88f0dso2563706a91.3 for ; Tue, 26 Aug 2025 18:07:48 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.07.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:07:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256866; x=1756861666; darn=nongnu.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=qWwJXhspeKuxTriI/PhOD7a9dZ1dleThFKCakXmp7ro=; b=byVT5PDjqlNacq9YrXJfXQ9XI492RacOYwZcxN4kM3d4V4Tws4qS5551E48EM/ZX63 3DoaijiiPB6Dd3ybncTWRNpwnd8v92Cv2eyDHwbh3VioGuceqCc5/sIOPvCEeMc1wDZl 8aJVL5HpBhbv+xN32UaH5W8i88veT/jlLwX3SIKGQvkJH1P2T9nPxDD+Bi6NVLya9nIS rlHbvaBc7xaGwvIt0kX6XjYbOpWgAllES06VTVeoezA8SvN7bvPu2rQiBkbkozxd3ygZ SWdppyKBjftqKOKurqjyEAfyoeIdC8EyUxpPBKeDTKWunGq1ZauqpgrfRmgWMOpsiliE 2OVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256866; x=1756861666; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qWwJXhspeKuxTriI/PhOD7a9dZ1dleThFKCakXmp7ro=; b=KTYVjTm4vIDFNgQtWC7MrxHPjaP08Onvl94SSlYCpo7/3CiHOeBACY1gGMHdx6u6Uq kf4YG8IPsk/M9i9JhlLN93LTzKbA0bZYOAy8Lxrmir1F7cjisebypQs7okyzKpkOrYYx GwYoAxO8W4FK2ngdc5WoWd1FtgSfZEuJyahMxLYcNJj5q0vi5/Ds04ncIL0YXNDdBZWu QisEyo8RbdF5bKsK62af6sRLNtyVvS0lCX3Zaa7r6//PKH1dMgA/9MecxvFUg7UyGSei XGOlysQhW/H2wHyAPx5ICuLl25YQ58Ke+UQMjNCuOo67Bj24sEpW/T0AkWUSZDRPCjYE rOYQ== X-Gm-Message-State: AOJu0Yy7/oDNUS+mxGsBxmpfHPLi7UENu0NppsQ1XBjfcfLDVyn7Q/Zz PuN9v1y8UVRQXCOS7ODABxB8qqIJVCLqQeAP/vRhVylYzsXsehhh1YZpp+JM9iMjc3hbkECUzb8 4Zpn5M34= X-Gm-Gg: ASbGncs/BCsQzz8Z8g09c3djEPrkKa/8LsuhaZ7N9wAOfGyCsR7yMpp3pSuUz8fqf0U X1MBmamtnO7HJB95pqHQdzDyvgpKJSWRcxnFwqM11xMlkYbTIShPvHV6WtzgV1kM54TnRU13LJ7 Iyl1lP1YrwfmLA9eo8N9+ZLFKYAvYFZEBt2yubwQA2QhBuGNUcDErTJV1eNwPGVZXy7tyi3Wtba USHJ20lqIy7iCAy3vHQQKZhSiCFPRHGDnN4lxKrkgpHUABhP6YiehMwWNsVPt/vpAl0E6u+SDjB cHunbMBDZP2WE1jxyZSv0S+7JTVV39sRphD9p4iFFpBuxsjWMCF8TC4VtvJ2ItjwGfhddanLHXc ZECRDLQsN+33dRKKHWCHc0lnsQuJtyZVGA9ok X-Google-Smtp-Source: AGHT+IHGnflg6ro0hYLty/fZGol0Lo78iQm3YJ4VpNnKKop0imUGN/zrXAFTav4asa/EaOeVmjsuzg== X-Received: by 2002:a17:90b:53c8:b0:323:7e82:fcd with SMTP id 98e67ed59e1d1-32517b2bba5mr24358351a91.37.1756256865662; Tue, 26 Aug 2025 18:07:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 32/61] target/arm: Split out redirect_cpreg Date: Wed, 27 Aug 2025 11:04:23 +1000 Message-ID: <20250827010453.4059782-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1034; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1034.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257051653116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/translate-a64.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 648463f44a..8303f0dac2 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2455,6 +2455,19 @@ static void gen_sysreg_undef(DisasContext *s, bool i= sread, gen_exception_insn(s, 0, EXCP_UDEF, syndrome); } =20 +/* + * Look up @key, returning the cpreg, which must exist. + * Additionally, the new cpreg must also be accessible. + */ +static const ARMCPRegInfo * +redirect_cpreg(DisasContext *s, uint32_t key, bool isread) +{ + const ARMCPRegInfo *ri =3D get_arm_cp_reginfo(s->cp_regs, key); + assert(ri); + assert(cp_access_ok(s->current_el, ri, isread)); + return ri; +} + /* MRS - move from system register * MSR (register) - move to system register * SYS @@ -2603,9 +2616,7 @@ static void handle_sys(DisasContext *s, bool isread, * fine-grained-traps on EL1 also do not apply here. */ key =3D ENCODE_AA64_CP_REG(op0, 0, crn, crm, op2); - ri =3D get_arm_cp_reginfo(s->cp_regs, key); - assert(ri); - assert(cp_access_ok(s->current_el, ri, isread)); + ri =3D redirect_cpreg(s, key, isread); /* * We might not have done an update_pc earlier, so check we don't * need it. We could support this in future if necessary. --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257114; cv=none; d=zohomail.com; s=zohoarc; b=SRBA2yo/F6tSkbUGZ7Udz4bnpHKMePLTpgd7IwQIOfqY1WOQWfFlOxt2Ltf3E5jqDnbgMnN5VRpl8sKHj0tXI7FNiO6w84TSfOU0G4Hx2HP7YUfoYXncWCJsojNafc7srMCaMl6pmPQrwikiO/x8/A3mV9LaA6iChutZR7gfcvU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257114; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8b32+ACK8cGml6u7LT+qVkPNEr56NeXpZfW7bYxN9l0=; b=hxP6ntA3WAJZ8gXzH1RgYdyTO7t44rBFluqdBnoKPwLFO7+gVytHv4p6OD7yqxjFqbFIFAawiTYZ0MinbLyX3uOgoHBsZefgbHpS1HC/X5rMv06WcKOvh83R4dTVe0IsAeGFGW0JcU2NzJ2+keCLnFdCEZRYZht/sjndG6OuA+Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257114464388.0361327089503; Tue, 26 Aug 2025 18:11:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4f3-00038f-C8; Tue, 26 Aug 2025 21:09:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4dv-0000xa-Dh for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:08:03 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4dl-0007eM-7B for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:08:03 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-771fa65b0e1so659464b3a.0 for ; Tue, 26 Aug 2025 18:07:51 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.07.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:07:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256868; x=1756861668; darn=nongnu.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=8b32+ACK8cGml6u7LT+qVkPNEr56NeXpZfW7bYxN9l0=; b=yel0F8ZIJJAMgzOpRywrUvvjv/JjOYfYDRndPs+p754jw3PEgwei6IZGARVLxmAV0r eqZ9zzZL5xahjwpaeUbIRvtSoE+08mUkhC7WE0UXxCogvGiUkj3jKi/B5pciMtjMk+4Z a33TaZwQVLIDbFqShD9IYqH3XnUg6fxUuRC7Efbsm2Fhw7mpN88TMzkrEsRMi7JC3B7D YfyWRcWnRHDv+JikUmu+lCMWzYNAU+gR0hVZYIFFl9Ro6EM0jcPceiVrvgeQchoO2f3N KkgO8KZtik2WNatQIgKosWTvInf2s0tLF5VVeTOvgAAOMhdli7gjQ2B6+w2MsjOIZ1lj 3kzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256868; x=1756861668; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8b32+ACK8cGml6u7LT+qVkPNEr56NeXpZfW7bYxN9l0=; b=qZa+Ha0XQ5vCTWw9Ksk2atJfoqVjnmLTyJv+Sw9rmQnuYVpN1FetFEn+479kzkdA30 lrMET0SJm6Iuxd2xAo/KFW3B12Ng5wAEsSaSqOrO/VNPab29SQv0y5HqHkC77OyrArnv PNSuWZbHMzjVh5JYayq1eAh8eBL1D83gm5l+bcAyTvJOn9gq2WcLfAn9E1z/t5tLrRmX PSSfNlehnPiunx9rLVe09eriCcrtOqPMSmw8AEi2Q7Ux4rNGMrZ95ohqAX0yjXpm9fAc Gu8c8iZJ2JT0SnhdbJH3UYOEQr5N8PeRHthskwToVbzstUbjIx3BEEWpKr79JGFNkkB+ KVPw== X-Gm-Message-State: AOJu0YxLGUW7V++zcDOLC6OZL0+3So9oTrp2xxYJEo4pXhniDUa8baXO 1MYuBYGN5ImBAmHh9hTa6a2ewRXEPdBNKSljOjCBSBgjXBaMlSrmtrMqVbGqD0R59Wv76IXOOzO Zkeh1neo= X-Gm-Gg: ASbGncuSZ+6PqkpRE+CfNVy5o4AzrUMAwkr3tseFzaJVqyvi3IpWhnjxFxCot8W+N11 ZqT0sni/2MTRM8MNK+us+rgJjCEv3rSLW0Amj+4Qtbj+0Jlolca92EL6JxGFbkupUOMvuiizQkn Wk+LctUtLG8WRtFrUac32pSUeSrA1ropGUM2REkIFKbDLDLgCVqurH+z4gvijimDbFtctXZNMQv ufqv81kdhbl5OpLS2SYemMchUwFg6gkjatkn2Q3Z+kTPxHOoI1NkJI/b/N9YsERwhJjJvmvs9oq 0/IDMxKgFgcXjzBn3HCT0h5v9LiG7as/cn6v8PZ2va+OaqpO8m4/llMrkowuJyWg3/O9TReLB9a TDPQoLrxXnCMvQJL4QWsPp0knTg== X-Google-Smtp-Source: AGHT+IEFhL7MXrrPDWVTHE3MmROJ4GKP+Aq+zYE1r1UcCG5KY+pM4KZ4gtZw6feimZhDhKQERBDcmQ== X-Received: by 2002:a05:6a00:bd11:b0:771:f951:16c6 with SMTP id d2e1a72fcca58-771f9511920mr5526192b3a.15.1756256868147; Tue, 26 Aug 2025 18:07:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 33/61] target/arm: Redirect VHE FOO_EL1 -> FOO_EL2 during translation Date: Wed, 27 Aug 2025 11:04:24 +1000 Message-ID: <20250827010453.4059782-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257116578116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/cpregs.h | 6 ++++ target/arm/gdbstub.c | 5 ++++ target/arm/helper.c | 53 +--------------------------------- target/arm/tcg/translate-a64.c | 9 ++++++ 4 files changed, 21 insertions(+), 52 deletions(-) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index 7bdf6cf847..d34ed0d40b 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -911,6 +911,12 @@ struct ARMCPRegInfo { */ uint32_t nv2_redirect_offset; =20 + /* + * With VHE, with E2H, at EL2, access to this EL0/EL1 reg redirects + * to the EL2 reg with the specified key. + */ + uint32_t vhe_redir_to_el2; + /* This is used only by VHE. */ void *opaque; /* diff --git a/target/arm/gdbstub.c b/target/arm/gdbstub.c index e2fc389170..3727dc01af 100644 --- a/target/arm/gdbstub.c +++ b/target/arm/gdbstub.c @@ -249,6 +249,11 @@ static int arm_gdb_get_sysreg(CPUState *cs, GByteArray= *buf, int reg) if (ri) { switch (cpreg_field_type(ri)) { case MO_64: + if (ri->vhe_redir_to_el2 && + (arm_hcr_el2_eff(env) & HCR_E2H) && + arm_current_el(env) =3D=3D 2) { + ri =3D get_arm_cp_reginfo(cpu->cp_regs, ri->vhe_redir_to_e= l2); + } return gdb_get_reg64(buf, (uint64_t)read_raw_cp_reg(env, ri)); case MO_32: return gdb_get_reg32(buf, (uint32_t)read_raw_cp_reg(env, ri)); diff --git a/target/arm/helper.c b/target/arm/helper.c index d0ccc23811..3f69ce6cb5 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -4441,47 +4441,6 @@ static CPAccessResult access_el1nvvct(CPUARMState *e= nv, const ARMCPRegInfo *ri, return e2h_access(env, ri, isread); } =20 -/* Test if system register redirection is to occur in the current state. = */ -static bool redirect_for_e2h(CPUARMState *env) -{ - return arm_current_el(env) =3D=3D 2 && (arm_hcr_el2_eff(env) & HCR_E2H= ); -} - -static uint64_t el2_e2h_read(CPUARMState *env, const ARMCPRegInfo *ri) -{ - CPReadFn *readfn; - - if (redirect_for_e2h(env)) { - /* Switch to the saved EL2 version of the register. */ - ri =3D ri->opaque; - readfn =3D ri->readfn; - } else { - readfn =3D ri->orig_readfn; - } - if (readfn =3D=3D NULL) { - readfn =3D raw_read; - } - return readfn(env, ri); -} - -static void el2_e2h_write(CPUARMState *env, const ARMCPRegInfo *ri, - uint64_t value) -{ - CPWriteFn *writefn; - - if (redirect_for_e2h(env)) { - /* Switch to the saved EL2 version of the register. */ - ri =3D ri->opaque; - writefn =3D ri->writefn; - } else { - writefn =3D ri->orig_writefn; - } - if (writefn =3D=3D NULL) { - writefn =3D raw_write; - } - writefn(env, ri, value); -} - static uint64_t el2_e2h_e12_read(CPUARMState *env, const ARMCPRegInfo *ri) { /* Pass the EL1 register accessor its ri, not the EL12 alias ri */ @@ -4657,17 +4616,7 @@ static void define_arm_vh_e2h_redirects_aliases(ARMC= PU *cpu) (gpointer)(uintptr_t)a->new_key, new_reg); g_assert(ok); =20 - src_reg->opaque =3D dst_reg; - src_reg->orig_readfn =3D src_reg->readfn ?: raw_read; - src_reg->orig_writefn =3D src_reg->writefn ?: raw_write; - if (!src_reg->raw_readfn) { - src_reg->raw_readfn =3D raw_read; - } - if (!src_reg->raw_writefn) { - src_reg->raw_writefn =3D raw_write; - } - src_reg->readfn =3D el2_e2h_read; - src_reg->writefn =3D el2_e2h_write; + src_reg->vhe_redir_to_el2 =3D a->dst_key; } } #endif diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 8303f0dac2..8fcc74d151 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2573,6 +2573,15 @@ static void handle_sys(DisasContext *s, bool isread, } } =20 + if (ri->vhe_redir_to_el2 && s->current_el =3D=3D 2 && s->e2h) { + /* + * This one of the FOO_EL1 registers which redirect to FOO_EL2 + * from EL2 when HCR_EL2.E2H is set. + */ + key =3D ri->vhe_redir_to_el2; + ri =3D redirect_cpreg(s, key, isread); + } + if (ri->accessfn || (ri->fgt && s->fgt_active)) { /* Emit code to perform further access permissions checks at * runtime; this may result in an exception. --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257032; cv=none; d=zohomail.com; s=zohoarc; b=c9G9nmhAzDe+jqOc9FeWw4djTI7hPOzjvRiqeRId9bk4F99YRgxDd7qGnZJ9YNnl+Uag9dZLKukGagA9GSrH5wDBEExXnsm0nlPm9kmaMPE3UUfarZhOHVUSwC7N6fkoXYR51PBWUTC3XhCSOn2yzjGuuZMI57744Xi0EyXN5aw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257032; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=p5ghDBN8QlbhbdkALth1ufxnSXLIXRFpEbZ7zrY4wQo=; b=JZNzka91qIdwO0uGGA/T7gFNGLsW6XEYpVD3H6ZlcEtIkdGsDVT00hjht4kTF/GExtZew5LEFNe4fBGSoZycIkmQBrc5Fd0hIwESjydVI7SSehi89+NFar2WkIbOWfn8SHqbH5KQJoZHbu6stWQQbZEsJxsFf8powz8whGEFvsA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257032245268.18824444818745; Tue, 26 Aug 2025 18:10:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4fA-0003bR-0h; Tue, 26 Aug 2025 21:09:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4dz-0001Gr-HO for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:08:08 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4dm-0007ed-Lp for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:08:07 -0400 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-771ed4a8124so2426284b3a.2 for ; Tue, 26 Aug 2025 18:07:52 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.07.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:07:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256871; x=1756861671; darn=nongnu.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=p5ghDBN8QlbhbdkALth1ufxnSXLIXRFpEbZ7zrY4wQo=; b=gwd3JexAZ0P0GzkdDEKWWeT5Q2hpyibQsahJ1KcWb6CVHBldwRlEkLyPpw2N3hEaSp g5AG4nsAZs4hH+/1ibyeuBw2b9YK2SoURB4NFLG6poNgNjLXa4+a+MK3eDuI2bBOUTyY UUKSg1qtiMDcUfbdLpC6wytNtLQnHQM8lYfRTof/tB4ESQw4flhTLcrYtbR5UO5E/EH5 J6Fgq4pgjERDgx51HPj/hT+9ZuCy2b8uU6O4dGghIYFwuTeMrnIF2kMY3Vhmdz+QZPnW de1t3OmNzjwk6LPhgfyuNTdTyIvZcJRFGDW6YMD+Bk2alfhmoSXZK0JDGi4JY1ejIYCq eePA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256871; x=1756861671; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=p5ghDBN8QlbhbdkALth1ufxnSXLIXRFpEbZ7zrY4wQo=; b=TCkze3fcd6VXpJHG89LPhWhQDeVjOTr7eRyeGJnFIoGeIaSy3i5H2YBuwSidffRfyb 87IiVgmqzqu3/+rEL2TBgnk1OLkxVaBxvFpBBZ9wwAzKQ6pbV8gRbkMgCUmgPOO5em4e OEOEv6PmVaoA6ASEkL4Yira1H0yQ1/HzWdsQfpq9tHf1PEZqIaqjFVNey8bjdIokrMu+ EbxTTiJtgCmfYN7HhEsplJ34lO/Fz4sB84Esnh9sUUbx1SGLdznWYA9OagYexdX1TRYn gZiJrAnH6cBWxvuzf01rOqN43ZkdGEgxGIfYNu3HNBbpMlK5vAyh3v0HFToqYXSMNvJu j0vg== X-Gm-Message-State: AOJu0YxlhpKB3sA48nHd1dTyheO6lgijskOw1lgS1KzwHMCnRU0/kZDz vJKZAvkY3xKYIuumUOUsSBJMVOdeVMOJHduLLkXxn9tXGE7pVlQXvC8zMwuNtEr6qHUYfmD7EFu bdf37S34= X-Gm-Gg: ASbGncu3Rr4YVRM4Hp2d/b+9Mo0GQAv7/CKKwPHZ1TNbfghzmpxzcMkTnmm0qU6M9zl Rz9ekxc1ijrS3tHzfoxI7DJt2dJAWr2UQw5IXFnuAWO9N6ZB61ebgQ9sSNQezu4THIVcdKSa2e+ f3151OgOz4GeygSvDfoQOgmZJjvZ/OW3zVF97Eh44ucdoI6JMtZMfAF8aYZfvYeIomaNsBI9t64 OYLNoYP/cwjfauo4hCzeHkKaY+ki+N6OyWVW77AuCqXL/QLsWj4yBr1NLE7qIxRfKqQRZMfu8SL o56lIw8JabLontL+VsEEjtuIPE0GFzH1h1C5faxgifIsgnPZR6xPxNIC6Ylh2XUryEDbQnQAV5S YHacFaScg9cv7W5wHL+r8vdsbvIY/7gsY4qDZ X-Google-Smtp-Source: AGHT+IHkd0SYEr4KzvoM4W4HNrAX6dw4EFImaUwgu9yAQBGXNpFt5XIL96Dxr0632DMOh7vdyMl82w== X-Received: by 2002:a05:6a00:2441:b0:771:ead8:dcdb with SMTP id d2e1a72fcca58-771ead8f33amr9903414b3a.8.1756256870597; Tue, 26 Aug 2025 18:07:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 34/61] target/arm: Redirect VHE FOO_EL12 to FOO_EL1 during translation Date: Wed, 27 Aug 2025 11:04:25 +1000 Message-ID: <20250827010453.4059782-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::431; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x431.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257033702116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpregs.h | 22 ++++--------- target/arm/gdbstub.c | 2 ++ target/arm/helper.c | 57 +++------------------------------- target/arm/tcg/translate-a64.c | 12 +++++++ 4 files changed, 25 insertions(+), 68 deletions(-) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index d34ed0d40b..f5d6a1c386 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -917,8 +917,12 @@ struct ARMCPRegInfo { */ uint32_t vhe_redir_to_el2; =20 - /* This is used only by VHE. */ - void *opaque; + /* + * With VHE, with E2H, at EL2+, access to this EL02/EL12 reg + * redirects to the EL0/EL1 reg with the specified key. + */ + uint32_t vhe_redir_to_el01; + /* * Value of this register, if it is ARM_CP_CONST. Otherwise, if * fieldoffset is non-zero, the reset value of the register. @@ -986,20 +990,6 @@ struct ARMCPRegInfo { * fieldoffset is 0 then no reset will be done. */ CPResetFn *resetfn; - - /* - * "Original" readfn, writefn, accessfn. - * For ARMv8.1-VHE register aliases, we overwrite the read/write - * accessor functions of various EL1/EL0 to perform the runtime - * check for which sysreg should actually be modified, and then - * forwards the operation. Before overwriting the accessors, - * the original function is copied here, so that accesses that - * really do go to the EL1/EL0 version proceed normally. - * (The corresponding EL2 register is linked via opaque.) - */ - CPReadFn *orig_readfn; - CPWriteFn *orig_writefn; - CPAccessFn *orig_accessfn; }; =20 void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRegInfo *regs); diff --git a/target/arm/gdbstub.c b/target/arm/gdbstub.c index 3727dc01af..269bc6c132 100644 --- a/target/arm/gdbstub.c +++ b/target/arm/gdbstub.c @@ -253,6 +253,8 @@ static int arm_gdb_get_sysreg(CPUState *cs, GByteArray = *buf, int reg) (arm_hcr_el2_eff(env) & HCR_E2H) && arm_current_el(env) =3D=3D 2) { ri =3D get_arm_cp_reginfo(cpu->cp_regs, ri->vhe_redir_to_e= l2); + } else if (ri->vhe_redir_to_el01) { + ri =3D get_arm_cp_reginfo(cpu->cp_regs, ri->vhe_redir_to_e= l01); } return gdb_get_reg64(buf, (uint64_t)read_raw_cp_reg(env, ri)); case MO_32: diff --git a/target/arm/helper.c b/target/arm/helper.c index 3f69ce6cb5..a19406e136 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -4441,42 +4441,6 @@ static CPAccessResult access_el1nvvct(CPUARMState *e= nv, const ARMCPRegInfo *ri, return e2h_access(env, ri, isread); } =20 -static uint64_t el2_e2h_e12_read(CPUARMState *env, const ARMCPRegInfo *ri) -{ - /* Pass the EL1 register accessor its ri, not the EL12 alias ri */ - return ri->orig_readfn(env, ri->opaque); -} - -static void el2_e2h_e12_write(CPUARMState *env, const ARMCPRegInfo *ri, - uint64_t value) -{ - /* Pass the EL1 register accessor its ri, not the EL12 alias ri */ - return ri->orig_writefn(env, ri->opaque, value); -} - -static CPAccessResult el2_e2h_e12_access(CPUARMState *env, - const ARMCPRegInfo *ri, - bool isread) -{ - if (arm_current_el(env) =3D=3D 1) { - /* - * This must be a FEAT_NV access (will either trap or redirect - * to memory). None of the registers with _EL12 aliases want to - * apply their trap controls for this kind of access, so don't - * call the orig_accessfn or do the "UNDEF when E2H is 0" check. - */ - return CP_ACCESS_OK; - } - /* FOO_EL12 aliases only exist when E2H is 1; otherwise they UNDEF */ - if (!(arm_hcr_el2_eff(env) & HCR_E2H)) { - return CP_ACCESS_UNDEFINED; - } - if (ri->orig_accessfn) { - return ri->orig_accessfn(env, ri->opaque, isread); - } - return CP_ACCESS_OK; -} - static void define_arm_vh_e2h_redirects_aliases(ARMCPU *cpu) { struct E2HAlias { @@ -4566,9 +4530,6 @@ static void define_arm_vh_e2h_redirects_aliases(ARMCP= U *cpu) g_assert(strcmp(src_reg->name, a->src_name) =3D=3D 0); g_assert(strcmp(dst_reg->name, a->dst_name) =3D=3D 0); =20 - /* None of the core system registers use opaque; we will. */ - g_assert(src_reg->opaque =3D=3D NULL); - /* Create alias before redirection so we dup the right data. */ new_reg =3D g_memdup(src_reg, sizeof(ARMCPRegInfo)); =20 @@ -4587,19 +4548,11 @@ static void define_arm_vh_e2h_redirects_aliases(ARM= CPU *cpu) >> CP_REG_ARM64_SYSREG_OP1_SHIFT; new_reg->opc2 =3D (a->new_key & CP_REG_ARM64_SYSREG_OP2_MASK) >> CP_REG_ARM64_SYSREG_OP2_SHIFT; - new_reg->opaque =3D src_reg; - new_reg->orig_readfn =3D src_reg->readfn ?: raw_read; - new_reg->orig_writefn =3D src_reg->writefn ?: raw_write; - new_reg->orig_accessfn =3D src_reg->accessfn; - if (!new_reg->raw_readfn) { - new_reg->raw_readfn =3D raw_read; - } - if (!new_reg->raw_writefn) { - new_reg->raw_writefn =3D raw_write; - } - new_reg->readfn =3D el2_e2h_e12_read; - new_reg->writefn =3D el2_e2h_e12_write; - new_reg->accessfn =3D el2_e2h_e12_access; + new_reg->vhe_redir_to_el01 =3D a->src_key; + new_reg->readfn =3D NULL; + new_reg->writefn =3D NULL; + new_reg->accessfn =3D NULL; + new_reg->fieldoffset =3D 0; =20 /* * If the _EL1 register is redirected to memory by FEAT_NV2, diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 8fcc74d151..7de8717056 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2580,6 +2580,18 @@ static void handle_sys(DisasContext *s, bool isread, */ key =3D ri->vhe_redir_to_el2; ri =3D redirect_cpreg(s, key, isread); + } else if (ri->vhe_redir_to_el01 && s->current_el >=3D 2) { + /* + * This is one of the FOO_EL12 registers. + * With !E2H, they all UNDEF. + * With E2H, from EL2 or EL3, they redirect to FOO_EL1. + */ + if (!s->e2h) { + gen_sysreg_undef(s, isread, op0, op1, op2, crn, crm, rt); + return; + } + key =3D ri->vhe_redir_to_el01; + ri =3D redirect_cpreg(s, key, isread); } =20 if (ri->accessfn || (ri->fgt && s->fgt_active)) { --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756256982; cv=none; d=zohomail.com; s=zohoarc; b=Uz3kdFw1Sce+Ke8dYt5lh8k0UR8eyfgnUDa3crfI5Rt94IdWz/93ub+Ev7/swbcwcLnzcyUawqDUKRQ9JSsFHZ4h22BNEwjEd/aWhyrV9caw+bZzIrA9IMfr8+U0ZGNMmrOW1FJGDhcOCoRbYJUeErmUEsdin/PdiOJvgEcTGZM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756256982; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=TowZvxXtxZjJfk7AhSGFsKVBwgHa31A30qkqkUEgZQ8=; b=ON25aAFcHME7K3BCjOLlDnx9O6mAo7iODgLnduE39VEMmFBnpYeLeCLPQOVTo40C7lje8UPI+xZrOrSJfbSDGdtxAB6OPtQzH4MhjM3guqVoNbzJn7RagzV1xC4hpDgYCx9CRLm3O4jtbIGieLs0pv08HjkUjSYc7384O1ODL0I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756256982792966.0794811383817; Tue, 26 Aug 2025 18:09:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4eD-0001n7-Va; Tue, 26 Aug 2025 21:08:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4e0-0001Kl-Bv for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:08:08 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4dp-0007fD-2F for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:08:08 -0400 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-76e434a0118so7243993b3a.0 for ; Tue, 26 Aug 2025 18:07:54 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7720274534esm1419241b3a.47.2025.08.26.18.07.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:07:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756256873; x=1756861673; darn=nongnu.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=TowZvxXtxZjJfk7AhSGFsKVBwgHa31A30qkqkUEgZQ8=; b=JBm2cOHmWENJ91eaIIn/sTSVOKdmi1TBCMlLNQQ5BPuhkE/yA/7ZlPpFQRo0uJBAEN /X7ncF1xnBaDa1kmLexNed9Wqv2r+QNeHKZdKp1p8nxYRjGMkpXzH3wRkRSgl2P4p/ve LSlCgwwC6jz/Xu9Mw0fzI+6FA69wtlIZ2fpIxUIFBQFdWADm0mgLw8knoWDbse1hg2bb O9sczum4vkmsGNUjdttivWqFiDFhNGcCv4O8XMGwBw1RPaLaeVLfg3Hs/wu/K+ef21ld hWJC3a7yZlDeYUFk6YlpsFDzxGV7lt9wl+w3AkJyv6sIei5dLNqEZADzfniAgqjdGbpW DMYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756256873; x=1756861673; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TowZvxXtxZjJfk7AhSGFsKVBwgHa31A30qkqkUEgZQ8=; b=BNUX4OCnSVYxWNtJ2CBKffjXpuY+bRydVoDBl4fVz7QmSwrnutOYABq+TJSGecaM2L KlOlV+QaPPOds5VJzNVN5tdkpFpVMdeLEokqiGhuoO6KyeglXOlrHOO/SUPJ95ixEkYh 2LGNB+K4juKmisUiNUS50fJFzyJRqeALayhYjVy6EiAaKWQinqT/lZgqv7JQ1x+9Pe5m hsVEuvKvvp3kVhznbwSdiQgDPBQrjCYcIlqQJrUiY7ACQMdzswTglLlLVPxM3NdflEvM pf+0U5pBz0b7OYqFvQ/EU0V9UCF8bXYAOObPZKnfhDVR/cXxZEI6ueCgfubmR8T7/nPf 2ciw== X-Gm-Message-State: AOJu0YwO0X0YF7uSTl/ZUHMpCqiNCaxbXr5zBrTK8nEhaeA09LIVIEwR AlLdLKG7SGHxj6u7xfd6AtVwhjCiradqLLgx7B9kS6/MLoTeLkIyz3xekRwaKY/Zlzv0eKGRkEg YNeBibcc= X-Gm-Gg: ASbGnctHhQiSrn0PA13ur0sOoujj/Wuuilg7/jtvEzJ61Jyxa77kOh1HXrXS8hUz7m1 +Mhzw4kHeDkwGQl1H/06bwfEMhmBxD2fNHkDLV4HISg3wPCnv3DRXtMoG8e8aLkupo4cCPTO/C4 +aRlqCQkgwbCJzm0o635d11yH4eGeG7AIi2XmSfbgCRHOxLYSUjmlMxeGfw94i8CoQV4uig8Xg6 f79s2+wDb8HsqkuqluqYyyCVtr6ujA9ZU0F90Twjt8F+TdSMnYmtR05G38M1gHVza91oLSDRxGB nfn9W+yYaASwGqPnLQX2J+bftPv1c/W40LW70ART0s/l3V25IwIzbzLoVDrV0zHKSe1+cnfrvYH YY95Gpdw/sxFIeNf77EzptMgywA== X-Google-Smtp-Source: AGHT+IGMgFyfhOib6TDUyBOZ2rkB0c2/uXZeqm5CZ/CYsjEDdCe68Ib4dztMCGzn1gAVWBrkdRBlOw== X-Received: by 2002:a05:6a00:a94:b0:749:bb6:3a8e with SMTP id d2e1a72fcca58-7702f9df069mr20288205b3a.1.1756256873079; Tue, 26 Aug 2025 18:07:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 35/61] target/arm: Rename some cpreg to their aarch64 names Date: Wed, 27 Aug 2025 11:04:26 +1000 Message-ID: <20250827010453.4059782-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756256984935116601 Content-Type: text/plain; charset="utf-8" Rename those registers which will have FOO_EL12 aliases. Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/helper.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index a19406e136..255ca6fdcb 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -671,7 +671,7 @@ static const ARMCPRegInfo v6_cp_reginfo[] =3D { */ { .name =3D "WFAR", .cp =3D 15, .crn =3D 6, .crm =3D 0, .opc1 =3D 0, .= opc2 =3D 1, .access =3D PL1_RW, .type =3D ARM_CP_CONST, .resetvalue =3D 0, }, - { .name =3D "CPACR", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, + { .name =3D "CPACR_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .crn =3D 1, .crm =3D 0, .opc1 =3D 0, .opc2 =3D 2, .accessfn =3D cpac= r_access, .fgt =3D FGT_CPACR_EL1, .nv2_redirect_offset =3D 0x100 | NV2_REDIR_NV1, @@ -2012,7 +2012,7 @@ static const ARMCPRegInfo generic_timer_cp_reginfo[] = =3D { .resetfn =3D arm_gt_cntfrq_reset, }, /* overall control: mostly access permissions */ - { .name =3D "CNTKCTL", .state =3D ARM_CP_STATE_BOTH, + { .name =3D "CNTKCTL_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 14, .crm =3D 1, .opc2 =3D 0, .access =3D PL1_RW, .fieldoffset =3D offsetof(CPUARMState, cp15.c14_cntkctl), @@ -3071,8 +3071,8 @@ static uint64_t mpidr_read(CPUARMState *env, const AR= MCPRegInfo *ri) } =20 static const ARMCPRegInfo lpae_cp_reginfo[] =3D { - /* NOP AMAIR0/1 */ - { .name =3D "AMAIR0", .state =3D ARM_CP_STATE_BOTH, + /* AMAIR0 is mapped to AMAIR_EL1[31:0] */ + { .name =3D "AMAIR_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .crn =3D 10, .crm =3D 3, .opc1 =3D 0, .opc2 =3D 0, .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .fgt =3D FGT_AMAIR_EL1, @@ -4454,9 +4454,9 @@ static void define_arm_vh_e2h_redirects_aliases(ARMCP= U *cpu) =20 static const struct E2HAlias aliases[] =3D { { K(3, 0, 1, 0, 0), K(3, 4, 1, 0, 0), K(3, 5, 1, 0, 0), - "SCTLR", "SCTLR_EL2", "SCTLR_EL12" }, + "SCTLR_EL1", "SCTLR_EL2", "SCTLR_EL12" }, { K(3, 0, 1, 0, 2), K(3, 4, 1, 1, 2), K(3, 5, 1, 0, 2), - "CPACR", "CPTR_EL2", "CPACR_EL12" }, + "CPACR_EL1", "CPTR_EL2", "CPACR_EL12" }, { K(3, 0, 2, 0, 0), K(3, 4, 2, 0, 0), K(3, 5, 2, 0, 0), "TTBR0_EL1", "TTBR0_EL2", "TTBR0_EL12" }, { K(3, 0, 2, 0, 1), K(3, 4, 2, 0, 1), K(3, 5, 2, 0, 1), @@ -4478,13 +4478,13 @@ static void define_arm_vh_e2h_redirects_aliases(ARM= CPU *cpu) { K(3, 0, 10, 2, 0), K(3, 4, 10, 2, 0), K(3, 5, 10, 2, 0), "MAIR_EL1", "MAIR_EL2", "MAIR_EL12" }, { K(3, 0, 10, 3, 0), K(3, 4, 10, 3, 0), K(3, 5, 10, 3, 0), - "AMAIR0", "AMAIR_EL2", "AMAIR_EL12" }, + "AMAIR_EL1", "AMAIR_EL2", "AMAIR_EL12" }, { K(3, 0, 12, 0, 0), K(3, 4, 12, 0, 0), K(3, 5, 12, 0, 0), - "VBAR", "VBAR_EL2", "VBAR_EL12" }, + "VBAR_EL1", "VBAR_EL2", "VBAR_EL12" }, { K(3, 0, 13, 0, 1), K(3, 4, 13, 0, 1), K(3, 5, 13, 0, 1), "CONTEXTIDR_EL1", "CONTEXTIDR_EL2", "CONTEXTIDR_EL12" }, { K(3, 0, 14, 1, 0), K(3, 4, 14, 1, 0), K(3, 5, 14, 1, 0), - "CNTKCTL", "CNTHCTL_EL2", "CNTKCTL_EL12" }, + "CNTKCTL_EL1", "CNTHCTL_EL2", "CNTKCTL_EL12" }, =20 /* * Note that redirection of ZCR is mentioned in the description @@ -6999,7 +6999,7 @@ void register_cp_regs_for_features(ARMCPU *cpu) =20 if (arm_feature(env, ARM_FEATURE_VBAR)) { static const ARMCPRegInfo vbar_cp_reginfo[] =3D { - { .name =3D "VBAR", .state =3D ARM_CP_STATE_BOTH, + { .name =3D "VBAR_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .crn =3D 12, .crm =3D 0, .opc1 =3D 0, .opc2 =3D= 0, .access =3D PL1_RW, .writefn =3D vbar_write, .accessfn =3D access_nv1, @@ -7015,7 +7015,7 @@ void register_cp_regs_for_features(ARMCPU *cpu) /* Generic registers whose values depend on the implementation */ { ARMCPRegInfo sctlr =3D { - .name =3D "SCTLR", .state =3D ARM_CP_STATE_BOTH, + .name =3D "SCTLR_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 1, .crm =3D 0, .opc2 =3D 0, .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .fgt =3D FGT_SCTLR_EL1, --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257267; cv=none; d=zohomail.com; s=zohoarc; b=IxgF9saAhycZqTQPnpWA2OGvAOsUZYJA6zyV6VdsHY6tV4R9LOcjQemjLmayBQIbtAyFvxtzw3rt8QKGu+US5cP0fAe9F8aM0nKvXcn5LMqr3t81CTpjXuR6FYagsPjE/0o/N8bSCY6PWG46EHzx+30B1zpkGDAORHfKYdnXsb8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257267; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=iynj+Uav7fMWQjykeRPxAArVg2FAhKp3cqYsYXzAABg=; b=g+nq1Tqtr5a126jm68gLpDhBYaSoQtNodeGt2V8hzPpdc8r+g0FhguiT3KPcrUW6aHfXcMzBOXPSI4ySRl/fbzDrSn7Mz+LyGOBDgkMCJwxVYCZPb1gqcW5H6Nx7fFVFOwZmFrU1kVfi2Mrbg5Dp9IamW1sDVXUuUuUqDA9oyeg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257267713218.22198960997912; Tue, 26 Aug 2025 18:14:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4h4-0008Ab-H2; Tue, 26 Aug 2025 21:11:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4gy-00083q-Mj for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:12 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4gq-0008Rg-67 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:12 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-76e39ec6f30so6055456b3a.2 for ; Tue, 26 Aug 2025 18:11:02 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.10.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:10:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257060; x=1756861860; darn=nongnu.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=iynj+Uav7fMWQjykeRPxAArVg2FAhKp3cqYsYXzAABg=; b=zf1etsIe/r/fOeqZsAEVNiL6tXFOK//ZMIrA/XCVxRsPCwlRHaob/kFG4KCDVREMsZ 47Jocpytor8TOhoZzhqM/r3NNQMGIkiAPGtxGnny43gi+6oxfthbSQJUcSssc3/npVCs FfU4BL1N5VXczJPC+qxQoGs4WVCcX6Yp6eKuNvochntxFK8ZoWv6wISsEV3i+LBzy48E rbxtpVFR7XnG7itInQA+IQF+kzdJpnNz6PlMU7kYYe7tcY9DG4/nHjgVc92AwFM1ZN9z Xi4noXEPdMSEWgqRrKtcNOOpwFwWxZWFL9UUi4Q5ySoNS9ZvQUOi6xP9QdteSga8ADgw S+Gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257060; x=1756861860; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iynj+Uav7fMWQjykeRPxAArVg2FAhKp3cqYsYXzAABg=; b=vWyRv4Bz6kgUvRq0q8Vvcv9JKJGtanhDfuZBMzol17AZWzRnhVTpqWhHQUbJ4DdhgU Vlzn4C1ZLCZHG4+BUcD53QnwFthdGE3IfE5suU1YaaVNHJXw6IZdvG7O1xNS1VpLH9TS udrNmE9q7AAg+p8dliEbRZK3ESerpp2sNeOxqFk8LIsz/xdN0ueR1WBtW3j5kH/EJk12 Vz2NxFbEe6KeBZmKGB8FgSsFXxPkdI0r0XPYrL8tThfLJW0UOB0TqEAkKRkJERLJjShV +qA/60K8gggOGEq9cWU+z2mBTsXbAZ9/IulK3ciPaPGpQ0QTlAqAV198ecye1YesJGmE Aafw== X-Gm-Message-State: AOJu0YwTxb40ekdmZ9tIC3mTyUZZOlLjzXjNE7N8s69Le6vmCceY/Ipi W6+jRTtDqOOfmPG4HL4vufZmLe4Jrdk00LDFDon25PYuY+JIyhZye08Ovxrupi0yhX95F5u9D2t udZ4/f+k= X-Gm-Gg: ASbGncv/qwIJZvIFjpgwtps4E1S82bMU917XSyKLqj4yn3TQnkbknykzWe0QT6bFVeW AHXygixzI7ak5OWff137BH7dAe7bLhys0kubzOe1d5UQus/XGwbIrpqspps+T04DgBlDLcQZIZ3 kp9jDyICU7/w7j8kZynhhbYQadWXfe9LPRAiqt0UxtCE7jFQ9S/yN9ro036xlOsFw0XYJv6wjea pLp6ww3YP9Up7ll5X6yUDKl6fkx7S7LuCjj4I0npfRWo+qOet6MBBjvjlKR0ZHOoMMmHThSkQnv CY0boxCW6uljgBr6b/abFecvZEV0ZH0O6FXOcreLKfNMg/YdKPwQoOwl0r8qmf91ER10rOvSktv /kclFMWgzWK5JJubuxrcWrkbFo6v1g/cHOS6ohSR1RXYKFpQ= X-Google-Smtp-Source: AGHT+IEket35jXYecjKbZT6SOfXkMK9otGNEk1hIMZE2kxadVXB/G3/wU+dMGThAZ/hxFoq+6YU9lA== X-Received: by 2002:a05:6a00:1896:b0:771:e7e0:5fa1 with SMTP id d2e1a72fcca58-771e7e065demr8649967b3a.26.1756257060272; Tue, 26 Aug 2025 18:11:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 36/61] target/arm: Remove define_arm_vh_e2h_redirects_aliases Date: Wed, 27 Aug 2025 11:04:27 +1000 Message-ID: <20250827010453.4059782-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=0.01 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257268490116600 Content-Type: text/plain; charset="utf-8" Populate vhe_redir_to_{el2,el01} on each ARMCPRegInfo. Clear the fields within add_cpreg_to_hashtable_aa32. Create the FOO_EL12 cpreg within add_cpreg_to_hashtable_aa64; add ARM_CP_NO_RAW. Signed-off-by: Richard Henderson --- target/arm/cpregs.h | 6 +- target/arm/helper.c | 241 ++++++++++++++++++-------------------------- 2 files changed, 103 insertions(+), 144 deletions(-) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index f5d6a1c386..9818be4429 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -918,8 +918,10 @@ struct ARMCPRegInfo { uint32_t vhe_redir_to_el2; =20 /* - * With VHE, with E2H, at EL2+, access to this EL02/EL12 reg - * redirects to the EL0/EL1 reg with the specified key. + * For VHE. Before registration, this field holds the key for an + * EL02/EL12 reg to be created to point back to this EL0/EL1 reg. + * After registration, this field is set only on the EL02/EL12 reg + * and points back to the EL02/EL12 reg for redirection with E2H. */ uint32_t vhe_redir_to_el01; =20 diff --git a/target/arm/helper.c b/target/arm/helper.c index 255ca6fdcb..64a987d143 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -454,6 +454,8 @@ static const ARMCPRegInfo cp_reginfo[] =3D { .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .fgt =3D FGT_CONTEXTIDR_EL1, .nv2_redirect_offset =3D 0x108 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 13, 0, 1), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 13, 0, 1), .secure =3D ARM_CP_SECSTATE_NS, .fieldoffset =3D offsetof(CPUARMState, cp15.contextidr_el[1]), .resetvalue =3D 0, .writefn =3D contextidr_write, .raw_writefn =3D r= aw_write, }, @@ -674,6 +676,8 @@ static const ARMCPRegInfo v6_cp_reginfo[] =3D { { .name =3D "CPACR_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .crn =3D 1, .crm =3D 0, .opc1 =3D 0, .opc2 =3D 2, .accessfn =3D cpac= r_access, .fgt =3D FGT_CPACR_EL1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 1, 1, 2), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 1, 0, 2), .nv2_redirect_offset =3D 0x100 | NV2_REDIR_NV1, .access =3D PL1_RW, .fieldoffset =3D offsetof(CPUARMState, cp15.cpac= r_el1), .resetfn =3D cpacr_reset, .writefn =3D cpacr_write, .readfn =3D cpac= r_read }, @@ -950,12 +954,16 @@ static const ARMCPRegInfo v7_cp_reginfo[] =3D { .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .fgt =3D FGT_AFSR0_EL1, .nv2_redirect_offset =3D 0x128 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 5, 1, 0), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 5, 1, 0), .type =3D ARM_CP_CONST, .resetvalue =3D 0 }, { .name =3D "AFSR1_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 5, .crm =3D 1, .opc2 =3D 1, .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .fgt =3D FGT_AFSR1_EL1, .nv2_redirect_offset =3D 0x130 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 5, 1, 1), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 5, 1, 1), .type =3D ARM_CP_CONST, .resetvalue =3D 0 }, /* * MAIR can just read-as-written because we don't implement caches @@ -966,6 +974,8 @@ static const ARMCPRegInfo v7_cp_reginfo[] =3D { .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .fgt =3D FGT_MAIR_EL1, .nv2_redirect_offset =3D 0x140 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 10, 2, 0), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 10, 2, 0), .fieldoffset =3D offsetof(CPUARMState, cp15.mair_el[1]), .resetvalue =3D 0 }, { .name =3D "MAIR_EL3", .state =3D ARM_CP_STATE_AA64, @@ -2015,6 +2025,8 @@ static const ARMCPRegInfo generic_timer_cp_reginfo[] = =3D { { .name =3D "CNTKCTL_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 14, .crm =3D 1, .opc2 =3D 0, .access =3D PL1_RW, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 14, 1, 0), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 14, 1, 0), .fieldoffset =3D offsetof(CPUARMState, cp15.c14_cntkctl), .resetvalue =3D 0, }, @@ -2805,6 +2817,8 @@ static const ARMCPRegInfo vmsa_pmsa_cp_reginfo[] =3D { .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .fgt =3D FGT_FAR_EL1, .nv2_redirect_offset =3D 0x220 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 6, 0, 0), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 6, 0, 0), .fieldoffset =3D offsetof(CPUARMState, cp15.far_el[1]), .resetvalue =3D 0, }, }; @@ -2815,12 +2829,16 @@ static const ARMCPRegInfo vmsa_cp_reginfo[] =3D { .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .fgt =3D FGT_ESR_EL1, .nv2_redirect_offset =3D 0x138 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 5, 2, 0), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 5, 2, 0), .fieldoffset =3D offsetof(CPUARMState, cp15.esr_el[1]), .resetvalue = =3D 0, }, { .name =3D "TTBR0_EL1", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 0, .opc2 =3D 0, .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .fgt =3D FGT_TTBR0_EL1, .nv2_redirect_offset =3D 0x200 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 2, 0, 0), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 2, 0, 0), .writefn =3D vmsa_ttbr_write, .resetvalue =3D 0, .raw_writefn =3D ra= w_write, .bank_fieldoffsets =3D { offsetof(CPUARMState, cp15.ttbr0_s), offsetof(CPUARMState, cp15.ttbr0_ns) } }, @@ -2829,6 +2847,8 @@ static const ARMCPRegInfo vmsa_cp_reginfo[] =3D { .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .fgt =3D FGT_TTBR1_EL1, .nv2_redirect_offset =3D 0x210 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 2, 0, 1), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 2, 0, 1), .writefn =3D vmsa_ttbr_write, .resetvalue =3D 0, .raw_writefn =3D ra= w_write, .bank_fieldoffsets =3D { offsetof(CPUARMState, cp15.ttbr1_s), offsetof(CPUARMState, cp15.ttbr1_ns) } }, @@ -2837,6 +2857,8 @@ static const ARMCPRegInfo vmsa_cp_reginfo[] =3D { .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .fgt =3D FGT_TCR_EL1, .nv2_redirect_offset =3D 0x120 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 2, 0, 2), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 2, 0, 2), .writefn =3D vmsa_tcr_el12_write, .raw_writefn =3D raw_write, .resetvalue =3D 0, @@ -3077,6 +3099,8 @@ static const ARMCPRegInfo lpae_cp_reginfo[] =3D { .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .fgt =3D FGT_AMAIR_EL1, .nv2_redirect_offset =3D 0x148 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 10, 3, 0), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 10, 3, 0), .type =3D ARM_CP_CONST, .resetvalue =3D 0 }, /* AMAIR1 is mapped to AMAIR_EL1[63:32] */ { .name =3D "AMAIR1", .cp =3D 15, .crn =3D 10, .crm =3D 3, .opc1 =3D 0= , .opc2 =3D 1, @@ -3602,12 +3626,16 @@ static const ARMCPRegInfo v8_cp_reginfo[] =3D { .opc0 =3D 3, .opc1 =3D 0, .crn =3D 4, .crm =3D 0, .opc2 =3D 1, .access =3D PL1_RW, .accessfn =3D access_nv1, .nv2_redirect_offset =3D 0x230 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 4, 0, 1), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 4, 0, 1), .fieldoffset =3D offsetof(CPUARMState, elr_el[1]) }, { .name =3D "SPSR_EL1", .state =3D ARM_CP_STATE_AA64, .type =3D ARM_CP_ALIAS, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 4, .crm =3D 0, .opc2 =3D 0, .access =3D PL1_RW, .accessfn =3D access_nv1, .nv2_redirect_offset =3D 0x160 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 4, 0, 0), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 4, 0, 0), .fieldoffset =3D offsetof(CPUARMState, banked_spsr[BANK_SVC]) }, /* * We rely on the access checks not allowing the guest to write to the @@ -4440,138 +4468,6 @@ static CPAccessResult access_el1nvvct(CPUARMState *= env, const ARMCPRegInfo *ri, } return e2h_access(env, ri, isread); } - -static void define_arm_vh_e2h_redirects_aliases(ARMCPU *cpu) -{ - struct E2HAlias { - uint32_t src_key, dst_key, new_key; - const char *src_name, *dst_name, *new_name; - bool (*feature)(const ARMISARegisters *id); - }; - -#define K(op0, op1, crn, crm, op2) \ - ENCODE_AA64_CP_REG(op0, op1, crn, crm, op2) - - static const struct E2HAlias aliases[] =3D { - { K(3, 0, 1, 0, 0), K(3, 4, 1, 0, 0), K(3, 5, 1, 0, 0), - "SCTLR_EL1", "SCTLR_EL2", "SCTLR_EL12" }, - { K(3, 0, 1, 0, 2), K(3, 4, 1, 1, 2), K(3, 5, 1, 0, 2), - "CPACR_EL1", "CPTR_EL2", "CPACR_EL12" }, - { K(3, 0, 2, 0, 0), K(3, 4, 2, 0, 0), K(3, 5, 2, 0, 0), - "TTBR0_EL1", "TTBR0_EL2", "TTBR0_EL12" }, - { K(3, 0, 2, 0, 1), K(3, 4, 2, 0, 1), K(3, 5, 2, 0, 1), - "TTBR1_EL1", "TTBR1_EL2", "TTBR1_EL12" }, - { K(3, 0, 2, 0, 2), K(3, 4, 2, 0, 2), K(3, 5, 2, 0, 2), - "TCR_EL1", "TCR_EL2", "TCR_EL12" }, - { K(3, 0, 4, 0, 0), K(3, 4, 4, 0, 0), K(3, 5, 4, 0, 0), - "SPSR_EL1", "SPSR_EL2", "SPSR_EL12" }, - { K(3, 0, 4, 0, 1), K(3, 4, 4, 0, 1), K(3, 5, 4, 0, 1), - "ELR_EL1", "ELR_EL2", "ELR_EL12" }, - { K(3, 0, 5, 1, 0), K(3, 4, 5, 1, 0), K(3, 5, 5, 1, 0), - "AFSR0_EL1", "AFSR0_EL2", "AFSR0_EL12" }, - { K(3, 0, 5, 1, 1), K(3, 4, 5, 1, 1), K(3, 5, 5, 1, 1), - "AFSR1_EL1", "AFSR1_EL2", "AFSR1_EL12" }, - { K(3, 0, 5, 2, 0), K(3, 4, 5, 2, 0), K(3, 5, 5, 2, 0), - "ESR_EL1", "ESR_EL2", "ESR_EL12" }, - { K(3, 0, 6, 0, 0), K(3, 4, 6, 0, 0), K(3, 5, 6, 0, 0), - "FAR_EL1", "FAR_EL2", "FAR_EL12" }, - { K(3, 0, 10, 2, 0), K(3, 4, 10, 2, 0), K(3, 5, 10, 2, 0), - "MAIR_EL1", "MAIR_EL2", "MAIR_EL12" }, - { K(3, 0, 10, 3, 0), K(3, 4, 10, 3, 0), K(3, 5, 10, 3, 0), - "AMAIR_EL1", "AMAIR_EL2", "AMAIR_EL12" }, - { K(3, 0, 12, 0, 0), K(3, 4, 12, 0, 0), K(3, 5, 12, 0, 0), - "VBAR_EL1", "VBAR_EL2", "VBAR_EL12" }, - { K(3, 0, 13, 0, 1), K(3, 4, 13, 0, 1), K(3, 5, 13, 0, 1), - "CONTEXTIDR_EL1", "CONTEXTIDR_EL2", "CONTEXTIDR_EL12" }, - { K(3, 0, 14, 1, 0), K(3, 4, 14, 1, 0), K(3, 5, 14, 1, 0), - "CNTKCTL_EL1", "CNTHCTL_EL2", "CNTKCTL_EL12" }, - - /* - * Note that redirection of ZCR is mentioned in the description - * of ZCR_EL2, and aliasing in the description of ZCR_EL1, but - * not in the summary table. - */ - { K(3, 0, 1, 2, 0), K(3, 4, 1, 2, 0), K(3, 5, 1, 2, 0), - "ZCR_EL1", "ZCR_EL2", "ZCR_EL12", isar_feature_aa64_sve }, - { K(3, 0, 1, 2, 6), K(3, 4, 1, 2, 6), K(3, 5, 1, 2, 6), - "SMCR_EL1", "SMCR_EL2", "SMCR_EL12", isar_feature_aa64_sme }, - - { K(3, 0, 5, 6, 0), K(3, 4, 5, 6, 0), K(3, 5, 5, 6, 0), - "TFSR_EL1", "TFSR_EL2", "TFSR_EL12", isar_feature_aa64_mte }, - - { K(3, 0, 13, 0, 7), K(3, 4, 13, 0, 7), K(3, 5, 13, 0, 7), - "SCXTNUM_EL1", "SCXTNUM_EL2", "SCXTNUM_EL12", - isar_feature_aa64_scxtnum }, - - /* TODO: ARMv8.2-SPE -- PMSCR_EL2 */ - /* TODO: ARMv8.4-Trace -- TRFCR_EL2 */ - }; -#undef K - - size_t i; - - for (i =3D 0; i < ARRAY_SIZE(aliases); i++) { - const struct E2HAlias *a =3D &aliases[i]; - ARMCPRegInfo *src_reg, *dst_reg, *new_reg; - bool ok; - - if (a->feature && !a->feature(&cpu->isar)) { - continue; - } - - src_reg =3D g_hash_table_lookup(cpu->cp_regs, - (gpointer)(uintptr_t)a->src_key); - dst_reg =3D g_hash_table_lookup(cpu->cp_regs, - (gpointer)(uintptr_t)a->dst_key); - g_assert(src_reg !=3D NULL); - g_assert(dst_reg !=3D NULL); - - /* Cross-compare names to detect typos in the keys. */ - g_assert(strcmp(src_reg->name, a->src_name) =3D=3D 0); - g_assert(strcmp(dst_reg->name, a->dst_name) =3D=3D 0); - - /* Create alias before redirection so we dup the right data. */ - new_reg =3D g_memdup(src_reg, sizeof(ARMCPRegInfo)); - - new_reg->name =3D a->new_name; - new_reg->type |=3D ARM_CP_ALIAS; - /* Remove PL1/PL0 access, leaving PL2/PL3 R/W in place. */ - new_reg->access &=3D PL2_RW | PL3_RW; - /* The new_reg op fields are as per new_key, not the target reg */ - new_reg->crn =3D (a->new_key & CP_REG_ARM64_SYSREG_CRN_MASK) - >> CP_REG_ARM64_SYSREG_CRN_SHIFT; - new_reg->crm =3D (a->new_key & CP_REG_ARM64_SYSREG_CRM_MASK) - >> CP_REG_ARM64_SYSREG_CRM_SHIFT; - new_reg->opc0 =3D (a->new_key & CP_REG_ARM64_SYSREG_OP0_MASK) - >> CP_REG_ARM64_SYSREG_OP0_SHIFT; - new_reg->opc1 =3D (a->new_key & CP_REG_ARM64_SYSREG_OP1_MASK) - >> CP_REG_ARM64_SYSREG_OP1_SHIFT; - new_reg->opc2 =3D (a->new_key & CP_REG_ARM64_SYSREG_OP2_MASK) - >> CP_REG_ARM64_SYSREG_OP2_SHIFT; - new_reg->vhe_redir_to_el01 =3D a->src_key; - new_reg->readfn =3D NULL; - new_reg->writefn =3D NULL; - new_reg->accessfn =3D NULL; - new_reg->fieldoffset =3D 0; - - /* - * If the _EL1 register is redirected to memory by FEAT_NV2, - * then it shares the offset with the _EL12 register, - * and which one is redirected depends on HCR_EL2.NV1. - */ - if (new_reg->nv2_redirect_offset) { - assert(new_reg->nv2_redirect_offset & NV2_REDIR_NV1); - new_reg->nv2_redirect_offset &=3D ~NV2_REDIR_NV1; - new_reg->nv2_redirect_offset |=3D NV2_REDIR_NO_NV1; - } - - ok =3D g_hash_table_insert(cpu->cp_regs, - (gpointer)(uintptr_t)a->new_key, new_reg); - g_assert(ok); - - src_reg->vhe_redir_to_el2 =3D a->dst_key; - } -} #endif =20 static CPAccessResult ctr_el0_access(CPUARMState *env, const ARMCPRegInfo = *ri, @@ -4864,6 +4760,8 @@ static const ARMCPRegInfo zcr_reginfo[] =3D { { .name =3D "ZCR_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 1, .crm =3D 2, .opc2 =3D 0, .nv2_redirect_offset =3D 0x1e0 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 1, 2, 0), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 1, 2, 0), .access =3D PL1_RW, .type =3D ARM_CP_SVE, .fieldoffset =3D offsetof(CPUARMState, vfp.zcr_el[1]), .writefn =3D zcr_write, .raw_writefn =3D raw_write }, @@ -5009,6 +4907,8 @@ static const ARMCPRegInfo sme_reginfo[] =3D { { .name =3D "SMCR_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 1, .crm =3D 2, .opc2 =3D 6, .nv2_redirect_offset =3D 0x1f0 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 1, 2, 6), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 1, 2, 6), .access =3D PL1_RW, .type =3D ARM_CP_SME, .fieldoffset =3D offsetof(CPUARMState, vfp.smcr_el[1]), .writefn =3D smcr_write, .raw_writefn =3D raw_write }, @@ -5454,6 +5354,8 @@ static const ARMCPRegInfo mte_reginfo[] =3D { .opc0 =3D 3, .opc1 =3D 0, .crn =3D 5, .crm =3D 6, .opc2 =3D 0, .access =3D PL1_RW, .accessfn =3D access_tfsr_el1, .nv2_redirect_offset =3D 0x190 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 5, 6, 0), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 5, 6, 0), .fieldoffset =3D offsetof(CPUARMState, cp15.tfsr_el[1]) }, { .name =3D "TFSR_EL2", .state =3D ARM_CP_STATE_AA64, .type =3D ARM_CP_NV2_REDIRECT, @@ -5629,6 +5531,8 @@ static const ARMCPRegInfo scxtnum_reginfo[] =3D { .access =3D PL1_RW, .accessfn =3D access_scxtnum_el1, .fgt =3D FGT_SCXTNUM_EL1, .nv2_redirect_offset =3D 0x188 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 13, 0, 7), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 13, 0, 7), .fieldoffset =3D offsetof(CPUARMState, scxtnum_el[1]) }, { .name =3D "SCXTNUM_EL2", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 13, .crm =3D 0, .opc2 =3D 7, @@ -7005,6 +6909,8 @@ void register_cp_regs_for_features(ARMCPU *cpu) .accessfn =3D access_nv1, .fgt =3D FGT_VBAR_EL1, .nv2_redirect_offset =3D 0x250 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 12, 0, 0), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 12, 0, 0), .bank_fieldoffsets =3D { offsetof(CPUARMState, cp15.vbar_s), offsetof(CPUARMState, cp15.vbar_ns) }, .resetvalue =3D 0 }, @@ -7019,6 +6925,8 @@ void register_cp_regs_for_features(ARMCPU *cpu) .opc0 =3D 3, .opc1 =3D 0, .crn =3D 1, .crm =3D 0, .opc2 =3D 0, .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .fgt =3D FGT_SCTLR_EL1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 1, 0, 0), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 1, 0, 0), .nv2_redirect_offset =3D 0x110 | NV2_REDIR_NV1, .bank_fieldoffsets =3D { offsetof(CPUARMState, cp15.sctlr_s), offsetof(CPUARMState, cp15.sctlr_ns) }, @@ -7153,16 +7061,6 @@ void register_cp_regs_for_features(ARMCPU *cpu) } =20 define_pm_cpregs(cpu); - -#ifndef CONFIG_USER_ONLY - /* - * Register redirections and aliases must be done last, - * after the registers from the other extensions have been defined. - */ - if (arm_feature(env, ARM_FEATURE_EL2) && cpu_isar_feature(aa64_vh, cpu= )) { - define_arm_vh_e2h_redirects_aliases(cpu); - } -#endif } =20 /* @@ -7295,6 +7193,8 @@ static void add_cpreg_to_hashtable_aa32(ARMCPU *cpu, = ARMCPRegInfo *r) r->crm, r->opc1, r->opc2); =20 assert(!(r->type & ARM_CP_ADD_TLBI_NXS)); /* aa64 only */ + r->vhe_redir_to_el2 =3D 0; + r->vhe_redir_to_el01 =3D 0; =20 switch (r->secure) { case ARM_CP_SECSTATE_NS: @@ -7348,6 +7248,63 @@ static void add_cpreg_to_hashtable_aa64(ARMCPU *cpu,= ARMCPRegInfo *r) ARM_CP_SECSTATE_NS, nxs_key); } =20 + if (!r->vhe_redir_to_el01) { + assert(!r->vhe_redir_to_el2); + } else if (!arm_feature(&cpu->env, ARM_FEATURE_EL2) || + !cpu_isar_feature(aa64_vh, cpu)) { + r->vhe_redir_to_el2 =3D 0; + r->vhe_redir_to_el01 =3D 0; + } else { + /* Create the FOO_EL12 alias. */ + ARMCPRegInfo *r2 =3D alloc_cpreg(r, "2"); + uint32_t key2 =3D r->vhe_redir_to_el01; + + /* + * Clear EL1 redirection on the FOO_EL1 reg; + * Clear EL2 redirection on the FOO_EL12 reg; + * Install redirection from FOO_EL12 back to FOO_EL1. + */ + r->vhe_redir_to_el01 =3D 0; + r2->vhe_redir_to_el2 =3D 0; + r2->vhe_redir_to_el01 =3D key; + + r2->type |=3D ARM_CP_ALIAS | ARM_CP_NO_RAW; + /* Remove PL1/PL0 access, leaving PL2/PL3 R/W in place. */ + r2->access &=3D PL2_RW | PL3_RW; + /* The new_reg op fields are as per new_key, not the target reg */ + r2->crn =3D (key2 & CP_REG_ARM64_SYSREG_CRN_MASK) + >> CP_REG_ARM64_SYSREG_CRN_SHIFT; + r2->crm =3D (key2 & CP_REG_ARM64_SYSREG_CRM_MASK) + >> CP_REG_ARM64_SYSREG_CRM_SHIFT; + r2->opc0 =3D (key2 & CP_REG_ARM64_SYSREG_OP0_MASK) + >> CP_REG_ARM64_SYSREG_OP0_SHIFT; + r2->opc1 =3D (key2 & CP_REG_ARM64_SYSREG_OP1_MASK) + >> CP_REG_ARM64_SYSREG_OP1_SHIFT; + r2->opc2 =3D (key2 & CP_REG_ARM64_SYSREG_OP2_MASK) + >> CP_REG_ARM64_SYSREG_OP2_SHIFT; + + /* Non-redirected access to this register will abort. */ + r2->readfn =3D NULL; + r2->writefn =3D NULL; + r2->raw_readfn =3D NULL; + r2->raw_writefn =3D NULL; + r2->accessfn =3D NULL; + r2->fieldoffset =3D 0; + + /* + * If the _EL1 register is redirected to memory by FEAT_NV2, + * then it shares the offset with the _EL12 register, + * and which one is redirected depends on HCR_EL2.NV1. + */ + if (r2->nv2_redirect_offset) { + assert(r2->nv2_redirect_offset & NV2_REDIR_NV1); + r2->nv2_redirect_offset &=3D ~NV2_REDIR_NV1; + r2->nv2_redirect_offset |=3D NV2_REDIR_NO_NV1; + } + add_cpreg_to_hashtable(cpu, r2, ARM_CP_STATE_AA64, + ARM_CP_SECSTATE_NS, key2); + } + add_cpreg_to_hashtable(cpu, r, ARM_CP_STATE_AA64, ARM_CP_SECSTATE_NS, key); } --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257632; cv=none; d=zohomail.com; s=zohoarc; b=IK5Hx6MA9KMSpfeASGWCarBCukj5iFGNlW92HDXkCWeg+flI2vUC/XLVqeNQ58eTHtNSFi7tihSFzT4aUIrvXsIhD9JJMZ1BNhzzdeMUGyvlumShm5Y5R+NWUdrcDPn2DAUj7z3AtIT3q3u1I2HXoh+oYQtoGqbg0OOAJT8eEps= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257632; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=HYdBuYvsIPMlk0kxekxMRYHsj1oPaTkk54lWPS2yoN4=; b=UIC+p157ryGJQcs1hdnpz4fYtG8wyaHCwBZ5MNzw8a6lv2z/xXT24YfCr+Tg/EIvn8GUpU96VoZg1uvKINhQtMpkjMNKNRYZypyyZPIDaG1OOmasw/qPwoUUjWX04zFvvTiCjmdzzsE8kugnKKeEaK/SxaSIOGe1v4ubeaRRUVw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257632466640.5918934872105; Tue, 26 Aug 2025 18:20:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4h7-0008Od-Ts; Tue, 26 Aug 2025 21:11:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4h1-000860-CT for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:15 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4gt-0008TB-O3 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:14 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-771f3f89952so407989b3a.0 for ; Tue, 26 Aug 2025 18:11:06 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257064; x=1756861864; darn=nongnu.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=HYdBuYvsIPMlk0kxekxMRYHsj1oPaTkk54lWPS2yoN4=; b=i7vzb6724Q2Ej48OEqwKDSDeiuXFms7j1QDK+QFLsomD6Xd0AuaOG7H4IvEevoUmWp GSE0W5rdFHPCGpRzFRqZXcjYoATZI/VE9UzGzd6dVHr8KUWCvnhw2mBeRT3acuVqb16k LkRvC58k5zaALINAOUaOPFytFGq11AD2sgEd/rB1hXuKb7QiVAlQJ+TLxN90a30WJCGL FGqpa6FAJ88XSdcaqHeMwp0CmepfNQGttz2O5VYrkNqg6F1qhRcLdbYpNQA/3O3yviJj pbMr740GmLZlvPysWtuB9D5prwWoopqvgjtgbhoeQ3u8cBk8PmLGIdPdBdEkCdUe1IyX vh3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257064; x=1756861864; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HYdBuYvsIPMlk0kxekxMRYHsj1oPaTkk54lWPS2yoN4=; b=tFEXSmcV6xnhkEZcJFZDj6gvasPvrKjz3YxTPSkf9bbJGlUc2TkvXdJ09l+lxM4k4X TFTAT9/Ko5bFYwm8lM01ZTd7/r9yhuGRRKIpzcy1+oZYvcW1CLrmfP+jYgMbmOzPInas XTrV65Zk4AsVq/mfCVjJFTti8kwLTz2GOdgXYG7bEuusiz9xWQrcTewMYrRoZXtp16TC tXCJwRyGvNndmvLpEo1/bBatKhBRdyIeMikcqM0HLfFRLYeVz/K7/S1uZnoOYTpngBA8 n3Z3bCJc822okpmMJ4acj2HuqZZDWau7Kp1+tyVB6bGc+yeYiBhUa+903Ok/mq9zAVis byjA== X-Gm-Message-State: AOJu0YzAlH869jrA67j1IfBEOfNNbAANKMna6lFMM9Qh/2tQrQIFD0Ic MVMA4MIOnxMOUiHgv2WOkvaGic3SaVaAl8IaIur0t3UPv4HEjtWxOG/lOa1CWrwy5RQeyIOqSD4 50YfsYdQ= X-Gm-Gg: ASbGncvQ3aHgQHrVgKRecHPAIT2ksf4oWVPg4ztnz+hkwA7mlBFDif9Ck13AEu6Sakc jtQsiRh3WFYpn3zRm7j11g7ch1QfR2WgElQpTKXBonDKzENvjp2b/L4qbSS4R2w4JuKHyQEihha DAHidEOzba0HuZg9mIZ8g87RmrmnRLtU3CC4k7V4GFf9527niQ3No6t5+d4vYzHQrTIFf/N6Vhv tUKYbFwVmYHdDfYrMy0RBiF0BVhW2jFHflBKaib5ecdg2TkC+Evi00kL3xtX0NWPTC7CvX7tN79 8FooITZL1Yt6PincPZ2njShItRi6nj5KT1eaE17XYHx0cqwA/vwLoF7F9X2H4nqWqsYvikcZrzC h4v7ofIYAvAODZAQKsklrQt3kGrLLWRjqQ3VV X-Google-Smtp-Source: AGHT+IFT+5lrvtZLewMFE8TaSH9r6KTFZKCENWbNIUByMhcFD7EvGPi5G1LVFCkEJdUNAzRRMyCmPg== X-Received: by 2002:a05:6a00:14c5:b0:771:e5f3:8840 with SMTP id d2e1a72fcca58-771fc293139mr4834209b3a.13.1756257063977; Tue, 26 Aug 2025 18:11:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 37/61] target/arm: Implement isar tests for FEAT_SYSREG128, FEAT_SYSINSTR128 Date: Wed, 27 Aug 2025 11:04:28 +1000 Message-ID: <20250827010453.4059782-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42e.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257634628116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/cpu-features.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 5876162428..7a0e515aeb 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -599,6 +599,16 @@ static inline bool isar_feature_aa64_mops(const ARMISA= Registers *id) return FIELD_EX64_IDREG(id, ID_AA64ISAR2, MOPS); } =20 +static inline bool isar_feature_aa64_sysreg128(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64ISAR2, SYSREG_128) !=3D 0; +} + +static inline bool isar_feature_aa64_sysinstr128(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64ISAR2, SYSINSTR_128) !=3D 0; +} + static inline bool isar_feature_aa64_rpres(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64ISAR2, RPRES); --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257517; cv=none; d=zohomail.com; s=zohoarc; b=FCE/fOdr6z1V9JNO2MOVWjoPwMhQl1JYhBW2lwELcLzbcOwvss2X/6wfyOTs9y79fizxgSug59Hgu/xaPYQmHC9/FuOQZKz/pbEYbfXVlNqFadqysY62WhfdNv0cKrl/s5GF7I+oxDzz7nH9bqRT0oElWy/MlMTDsAesdz2/29U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257517; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9qlTssT5E1ksTdQhxmBteT9fyMAl300iOHwye3qziuI=; b=e7EpU0IT8JcjcurGkintGQpaw4URGsC20xuXTM0gfkJT6amDhJKeN0KrjlNd3N5Yd3a+59lUSUJb/hXN01QwfoZwCk+qD6DQpmdj1MjFUhvJdgZUioUNXJpQ7TojCcshszZecqBzDBSSvDMThD2f53Z/aYPFi6f7ZdYQlJtDsYM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175625751719349.94288678263922; Tue, 26 Aug 2025 18:18:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4h9-00009H-5l; Tue, 26 Aug 2025 21:11:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4h3-0008DA-CG for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:18 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4gv-0008Ts-Id for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:16 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-770530175a6so2135122b3a.3 for ; Tue, 26 Aug 2025 18:11:08 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257067; x=1756861867; darn=nongnu.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=9qlTssT5E1ksTdQhxmBteT9fyMAl300iOHwye3qziuI=; b=VhuQq34EiPlRGIkWVEgr2PZ/8owegkQ96UyA9cblLfkEc1iH38XQn7bHY4b7qNQPF+ shi8dT9eJ7FJQTRH/hX020w7kfjOIAegBtu0tjtRRhQkBAlAoOFBaimxJirdN8rE5GHH 6VXhSFRIWZdGbAseZuzOdXcC/Ozgv+7EP9b+3WzPIqcJnvDcSqJxtVJw9VwoSDe55m/y j9AYtkL2fndd1EyX1UreAugcPX6pAxi+kHfuzn0r2Jql1isjy3wpmKcTaSPlPyTiIgD7 hQZDIj1KUP84nA7+G2BN+DN74S/rxTjI1Fssi3DEV7cCkT9SWoEoseCDl4QpEvwcCUYl aVSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257067; x=1756861867; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9qlTssT5E1ksTdQhxmBteT9fyMAl300iOHwye3qziuI=; b=iNNVu918EzVeO6M+Z1FREyRI5ri5asyoFh/jBH7fzhn0naLqNuTv9wfTrJ9TcBE32t NyGs+jvxwx6on9udvOC0+ZuPlWEj8a8NsSp+1T6eRWX/U15yKAfSYvS+n7aIzaRnfHjq cc5iGo2poRwaxpZqr2mD9VYsI/ZoD4DakJij+wSwH4sWXIPFn8sRV4vQIL1RAQb1oCAP RSlA+TMiKnByWeVTjlMvbUSUlsbp4/sp2MEtk9aqLWQSTXB9TOEEDrLkcsen8cgN4720 Ld1jAZQFz9l8jL3Ks8g8bF1t2ZzleEertXzC9LKLR3mky7JstJeKWBAaA8O2rrFp6WdM 8zVw== X-Gm-Message-State: AOJu0Yz0E6qXlPUNht0sOW3OoCAFw3oUcGZ5IR2D4jq+D35N1xXYG86X nD9q6uO7hLLwkfO9MlcMJ9+wlMSnTsBKNdhIoamNlZqIgJDsVUbDj1QtfTTmvaEsG+pWMA79YNR dxA+5Kjc= X-Gm-Gg: ASbGncvRdp0sRL3uiIrTKx1mJLvcDrIRezp8FSvG8KVUHIdR86Modo8l/rdjssk/ViN JtLaYbQUXZH/xUeblCJVC/l9LtT1g4CEPdg9qjc8wpnxUffSssbRmWMnTaHFqbMXx/mBMCK1AUn XQyu6ttwD2aubgBCETOrpszIvIs5aqJjODN1oOD7YN8Uki9skpHCsvSmLzeEDKt+0e2vhxHWTOP FjC13ji2vc6zWdUpc/EOuI6OqnOk6VNVcpHQmeRT69sfe5H11ETFgdE0/W0JESpkrnEVnDo3aGe EahIN6EahVtipJMPlqIzwURmkuYNItK2IsTKCFESEf7NjyquiUr8OUQqG9YhF0jeY2cLNp+31IX 7yN/u1UJJrvgEhYzNg4jrQGwykdrBJ1L7MJegoHiVruFr4ys= X-Google-Smtp-Source: AGHT+IFnrYSAy7hU+TyEF50uafimNdyUKUCEHPxkPg1+HZX+Dkf3VpCB3qrRkEeLSKZQIFKs06sMWw== X-Received: by 2002:a05:6a00:22c9:b0:771:ea9d:119b with SMTP id d2e1a72fcca58-771ea9d161cmr8899692b3a.29.1756257066692; Tue, 26 Aug 2025 18:11:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 38/61] target/arm: Define CP_REG_SIZE_U128 Date: Wed, 27 Aug 2025 11:04:29 +1000 Message-ID: <20250827010453.4059782-43-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257519472124100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/kvm-consts.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/arm/kvm-consts.h b/target/arm/kvm-consts.h index 54ae5da7ce..1b3c10c0d3 100644 --- a/target/arm/kvm-consts.h +++ b/target/arm/kvm-consts.h @@ -30,6 +30,7 @@ #define CP_REG_SIZE_MASK 0x00f0000000000000ULL #define CP_REG_SIZE_U32 0x0020000000000000ULL #define CP_REG_SIZE_U64 0x0030000000000000ULL +#define CP_REG_SIZE_U128 0x0040000000000000ULL #define CP_REG_ARM 0x4000000000000000ULL #define CP_REG_ARCH_MASK 0xff00000000000000ULL =20 @@ -37,6 +38,7 @@ MISMATCH_CHECK(CP_REG_SIZE_SHIFT, KVM_REG_SIZE_SHIFT); MISMATCH_CHECK(CP_REG_SIZE_MASK, KVM_REG_SIZE_MASK); MISMATCH_CHECK(CP_REG_SIZE_U32, KVM_REG_SIZE_U32); MISMATCH_CHECK(CP_REG_SIZE_U64, KVM_REG_SIZE_U64); +MISMATCH_CHECK(CP_REG_SIZE_U128, KVM_REG_SIZE_U128); MISMATCH_CHECK(CP_REG_ARM, KVM_REG_ARM); MISMATCH_CHECK(CP_REG_ARCH_MASK, KVM_REG_ARCH_MASK); =20 --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257607; cv=none; d=zohomail.com; s=zohoarc; b=AuPXoIPO0X7ILNKrMFne2nXTnXqs7lrFHxWeEbuhL3NMa57c6GsAoJcSg0FZLAqikab7kFXkQ5Dcg/XiDznE9k4seafgV2pc0HISD6UaNAkIrbdEkKw1M6DX3HcaX9XFQ1syfmgg61OYRWSh+k1GDfe41sUF+8UaRj23NzMTnQY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257607; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=33SwRhUpnCZVmtsdmEpjLuwcIJnEcVUmVsI6FJrSej8=; b=Wgc1P6cJ8z2Ndk/fQZGfrZyuUFGbFxhJtxRH8lxgRrg70ibqpWKLjKQDRSvpEGfI/t5MM5s6wFlMpv2CygoCuX2/qQF4m2BRGPtjIb6T9d5FkgczYPMiXxOsEnr8omFH0mN2Bus2nkGlJiAfdvLmY1xFeYFXY0gN4nPPqe/OvHw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257607683147.4131063255969; Tue, 26 Aug 2025 18:20:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4hP-0000sW-QH; Tue, 26 Aug 2025 21:11:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4hF-0000Uu-3i for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:29 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4h3-0008UX-R3 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:28 -0400 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-771e987b4e6so2236940b3a.2 for ; Tue, 26 Aug 2025 18:11:11 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257069; x=1756861869; darn=nongnu.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=33SwRhUpnCZVmtsdmEpjLuwcIJnEcVUmVsI6FJrSej8=; b=DJGsbspYxumSlcZavs6lvJ7KXYeh6HZYlW5f/WqnxBMc4T8pwy2eIDHjxS4jZZv3I2 fNGDQ5lHynBTYtDs/G3pgeKSiqgqWpPzpiIPkt3HV87quRgfRBTM17csk1rLG56Eb5Q2 W0C3C/nyFOTsz/ewgZj1mtaE/gZ9J7NV//yGiaQznDKwCd7f+RWxdj/UBBD1I6Sb6qlb EBdbSh9PkhPrVqaz1Yk0nXKxu2gKBdOi26q7z5HCEDy076Uwhj84jQbXRU/60y/PJ0S7 OnNDxFharnA5h5XOt5vtsxYr39fhQELfWISZtcHYaFd9TIPQbdfwhvW7MXoTA+gXHZyM 3+Hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257069; x=1756861869; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=33SwRhUpnCZVmtsdmEpjLuwcIJnEcVUmVsI6FJrSej8=; b=tyoDfZHfQwqnyIraJZCxckrs6AHnu3aIoAOMAsLdhq19pslwmuEUq2StbragHpa1XX A6j2vDs4F4qMRpTgNzgzRxrA5dpo2oIk3b1Zw6yY9NOZC60ERTXcL3K5VyZYU6MBxw7A +a5SGHnwwXDsy1SIdigKEFknUkVKLc/+paY5+AmGYgbFsDETBk3t8dqpWeXY7vkEcmjr N6ki7ETXOyLKu+JIvpCbp1j4CrDMf8jlBH5SY+PXonrHExm2LqzR2+pHpspHftiyU1WR FSUqPFxQs6OuMqvw8GU1WYcABHxSW2jIWiOa0qo+lnNQL/yujHjGzTEXIEA1gWHRTDme Du8g== X-Gm-Message-State: AOJu0YyIi4Vjgx3liQJDDG4OEmzVjA/BrNjVJxnIJH7xez+k+tUh/iQl IKiAHMEQrGOxjvPHQRea1NYjnUobsz2SuJedYMSxDkSObnL+vRIrs1lAwf01/JHt/7VUrtiQH9G /TibCu7w= X-Gm-Gg: ASbGnctbukIG9xdoWH3bN/VEsGgDsC3nPDQ+UD48eebmjvUevR0Khn9OoEq5qhn30j6 PB900yIIBGs1wxNtagd6qqVSfquRMqzmNpKbFtMsPf2iB7xPQhwDt2uj8Ex7pjBl63dfwIBnBU/ B3g2bJgHAoljj3uM3bvVo0Z5bl0t9EKXmWgqH/ssALcEJLDebNtNpRcF1T6FhOMvQLmOzgY02qc pEjLhX/urpFKghgidPdpEO7NFdUJzAdBPqw7LDPLYGZG5XRSWP3C+IyQcR97moyV4Q7ODhHjNxq 30KelPp43DPUx6KEpL+T7IdcQwRfdyZoSKntO6TrZ3FAj9O/k0nc+EZb0S7y9v0GMz9cedLU/aV EnR89FTmPeZOriq2JlgEurC2m+fp2GawhKTHb X-Google-Smtp-Source: AGHT+IFe2qQByeCozQocG/gr5aueezml33ysF1lPbjUXkH7x9ShSr0vPBp6VxfjTye2S9Lfb64WdIw== X-Received: by 2002:a05:6a20:918d:b0:243:78a:826b with SMTP id adf61e73a8af0-24340dca3b6mr28749875637.49.1756257069439; Tue, 26 Aug 2025 18:11:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 39/61] target/arm: Update ARMCPRegInfo for 128-bit sysregs Date: Wed, 27 Aug 2025 11:04:30 +1000 Message-ID: <20250827010453.4059782-44-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::431; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x431.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257608546124100 Content-Type: text/plain; charset="utf-8" Add ARM_CP_128BIT for type and functions describing 128-bit access. Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/cpregs.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index 9818be4429..90f14dbb18 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -136,6 +136,8 @@ enum { * identically to the normal one, other than FGT trapping handling.) */ ARM_CP_ADD_TLBI_NXS =3D 1 << 21, + /* Flag: For ARM_CP_STATE_AA64, sysreg is 128-bit. */ + ARM_CP_128BIT =3D 1 << 22, }; =20 /* @@ -178,6 +180,10 @@ enum { #define CP_REG_AA32_NS_SHIFT 29 #define CP_REG_AA32_NS_MASK (1 << CP_REG_AA32_NS_SHIFT) =20 +/* Distinguish 64-bit and 128-bit views of AArch64 system registers. */ +#define CP_REG_AA64_128BIT_SHIFT 30 +#define CP_REG_AA64_128BIT_MASK (1 << CP_REG_AA64_128BIT_SHIFT) + /* Distinguish 32-bit and 64-bit views of AArch32 system registers. */ #define CP_REG_AA32_64BIT_SHIFT 15 #define CP_REG_AA32_64BIT_MASK (1 << CP_REG_AA32_64BIT_SHIFT) @@ -849,6 +855,9 @@ typedef struct ARMCPRegInfo ARMCPRegInfo; typedef uint64_t CPReadFn(CPUARMState *env, const ARMCPRegInfo *ri); typedef void CPWriteFn(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value); +typedef Int128 CPRead128Fn(CPUARMState *env, const ARMCPRegInfo *opaque); +typedef void CPWrite128Fn(CPUARMState *env, const ARMCPRegInfo *opaque, + Int128 value); /* Access permission check functions for coprocessor registers. */ typedef CPAccessResult CPAccessFn(CPUARMState *env, const ARMCPRegInfo *ri, @@ -992,6 +1001,13 @@ struct ARMCPRegInfo { * fieldoffset is 0 then no reset will be done. */ CPResetFn *resetfn; + + /* For ARM_CP_128BIT, when accessed via MRRS/MSRR. */ + CPAccessFn *access128fn; + CPRead128Fn *read128fn; + CPWrite128Fn *write128fn; + CPRead128Fn *raw_read128fn; + CPWrite128Fn *raw_write128fn; }; =20 void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRegInfo *regs); @@ -1061,6 +1077,9 @@ void arm_cp_reset_ignore(CPUARMState *env, const ARMC= PRegInfo *ri); */ static inline MemOp cpreg_field_type(const ARMCPRegInfo *ri) { + if (ri->type & ARM_CP_128BIT) { + return MO_128; + } return (ri->state =3D=3D ARM_CP_STATE_AA64 || (ri->type & ARM_CP_64BIT) ? MO_64 : MO_32); } --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257280; cv=none; d=zohomail.com; s=zohoarc; b=eZd82+Cxsq8S1FWJ7Lk9eEbtqb+4l6y4+aDU/QXVHgp39bl/BNAg4Okk1Rx09C9peQmgi7U0gtByHgTudWYE7NijMZEjInhp4eaHymMwVxn5XyAFcnb/IalRcqOQgcFUpbSZmCoLV8qEUwiIYbtLsJ4/uCrM0p/aEsl0+iMY7NI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257280; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UWXxySCaWO9RB9p0qC7RXW2uKnf/vMpCtWd3L9+6QNU=; b=Gm814ippQqukgc0ZhQ2rqRDq+oNdD8IjNtUEx4zYLak/ixZp0Ht9bY995o+amD9amJFBmc5yX6f2KRUByw4ZQZE7agM+IH+xQPnfmwmiSKzPOevabcd38lEoj8+cRFX5L+ZY+2ovsfNx5EsZF65/f9bxiMhMbKcDvVMTzT9JldM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257280958816.0264478493847; Tue, 26 Aug 2025 18:14:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4hH-0000Zu-FR; Tue, 26 Aug 2025 21:11:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4hC-0000Lr-ER for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:27 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4h1-0008V7-G1 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:24 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-7718408baf7so3195370b3a.3 for ; Tue, 26 Aug 2025 18:11:13 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257072; x=1756861872; darn=nongnu.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=UWXxySCaWO9RB9p0qC7RXW2uKnf/vMpCtWd3L9+6QNU=; b=VzYiffNBM6Bd1kJHNOrnWuXi650dX8UfhLr5trDIJ1DtDBIQjlSWOU1Tw9xzxVXAJE j+fD2bytxiqspX1DDdJ86xQrH4X++KDs/vVHqf5kUyDb4xTHjzo9DDfrZQMTO6JprajL x8x44rZUXqMcGz+l54q0M+rHTRRvriWwgkXYihJBr8jlO71abhC3jVpTPwMAilBJ25AA OzzFsfxVBWwxT0RY3PXdEylS+y0dTwC/xmPfGdu8nBFFPSmyJ76uEsErNLLKffapjspw K1w5oNcKXO4SvlZ8ZML7i3hgEnHyAmwPiI16M4k99HWtNX8RAZXKiUoXj588wn4UXxa1 vtPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257072; x=1756861872; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UWXxySCaWO9RB9p0qC7RXW2uKnf/vMpCtWd3L9+6QNU=; b=TxLY6l3ekpibUvFHU3xokvTZwPw1ALeVQ8jy/HWzgvV7RSSun0sXZPBKhVIXSWQsJu UnigZ5O23HJCMlyxVSH3nl6pUqshVCb9itlIfLkixK668mRJaHzVt6H9g61Jq1sVJYq3 N7mK45sOPr083IBemkrYg1YKG97IDK+ks4HH+JL35qmLy5e2hv5IuAuXLflm4f6xnXhH TD4qepgXN5JGjCaUs1uYeFwzONNwl8HpfmMUGq4i8wHTfQE6wPxkv0Fih5ild3XkUU3y LbdsjU1hLyXTMHmPz8LRukUL5QWydZ/U7/6kdyKE2aara1eo4+8BHO0z/4dcJTGS5tAd F5Tw== X-Gm-Message-State: AOJu0Yxud7ZCV+MYIFU6I2QyRZ+/2sDS6gTQNjQ+WSVdtLbIu07nIeRj eFGB+8KnX4V/vzKTZBrk5k5b490a9TEWQLVrF9I+4BYAJHzpHNeDzPxUVZXMSyymoEMH4mMrlcx iSOyvw44= X-Gm-Gg: ASbGncsJGz5E7qXXp6PG/nO6v9itkL6KoUlLx0P4BNpOgJeUpP4kXmbuN+hYHdrQ2H1 u4A39Ohh4LaK8VuVYY+qG07JRcL7ca+6rR6Qp7fuL5kGAfeoi4SalAGBfDOoxlwKGrjb9fya6Dk gc4AmMhMtJXKGyP+Hor0Wf/gRbiEpLXZPwDiGzS7L71PeZvgXMDrOyDEMNufqbVoTcRxpqqUEQx xrN2//ZkLrwBID6VWepVpj4HBkt4Az9hNqbyuAkjO8WF0y9a9FZiaR9Vcb/n9WB6gFvJWpyP68t zmaUB6um1UB8v1670GuCbl56PW9/UfcukTcD7/xMvlS3dliSeJzMRojBXUdfUbSbTdwtq1LEFiJ uBtVBlmeKTonwlnmpmoqggZ1Lng== X-Google-Smtp-Source: AGHT+IHQAmWka4Z+TG8sCOr9qVs6iCryeuT9nZUqKusycp7HdUuh6pWWx9EJIsukT22hOukl7Qis7A== X-Received: by 2002:a05:6a00:759a:b0:771:fdd9:efa0 with SMTP id d2e1a72fcca58-771fdd9fa11mr3668764b3a.15.1756257072293; Tue, 26 Aug 2025 18:11:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 40/61] target/arm: Assert ARM_CP_128BIT only with ARM_CP_STATE_AA64 Date: Wed, 27 Aug 2025 11:04:31 +1000 Message-ID: <20250827010453.4059782-45-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=0.01 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257282366116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/helper.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/target/arm/helper.c b/target/arm/helper.c index 64a987d143..3b765408f2 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -7353,6 +7353,11 @@ void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPR= egInfo *r) assert(r->state =3D=3D ARM_CP_STATE_AA32 || !(r->type & ARM_CP_64BIT)); /* AArch32 64-bit registers have only CRm and Opc1 fields. */ assert(!(r->type & ARM_CP_64BIT) || !(r->opc2 || r->crn)); + /* + * Only AArch64 regs are 128-bit. There is usually an AArch32 64-bit + * alias, but must be defined separately due to encoding conflicts abo= ve. + */ + assert(r->state =3D=3D ARM_CP_STATE_AA64 || !(r->type & ARM_CP_128BIT)= ); /* op0 only exists in the AArch64 encodings */ assert(r->state !=3D ARM_CP_STATE_AA32 || r->opc0 =3D=3D 0); =20 --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257515; cv=none; d=zohomail.com; s=zohoarc; b=QQcLpASbYTRSocRbH2AjFoHcdzm79dINjoMSN+v6IIWzNbMfmMry4uXKckVsCdZn2LjbDX0fhvynpKQrLk7Vo/ltr/cJlWXOZ7VXTwIXoMowkoyjjpOUr3NaN+d8lT3ruQky4VIL510JIrLT1Uq2Gnda/iLmid2XP+nAvXI6N+8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257515; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bvkLUgOXDyITyIWALCtPrGDx3CpfTtamo0IC8ggrCtE=; b=OGbnEH2rsriozMS7CZBSrQ0UBWs+0NmjJRTNiVcjnM7WdGs1RcbQRPmMQ9yBcij/KUFlp6pjqXsSN5OyzpvE6idlZ5ofeQgSpC/v/yJHfffr2mVrH5Rpq056pbunGnhFp4J8nXD7FRtc1NlRx16x23YRF5qtNijE2DSZgu/Mu7I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257515055752.5981524206627; Tue, 26 Aug 2025 18:18:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4hV-0001C7-8D; Tue, 26 Aug 2025 21:11:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4hH-0000fJ-CP for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:31 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4h5-0008WG-Ls for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:31 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-76e4fc419a9so5862641b3a.0 for ; Tue, 26 Aug 2025 18:11:18 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257076; x=1756861876; darn=nongnu.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=bvkLUgOXDyITyIWALCtPrGDx3CpfTtamo0IC8ggrCtE=; b=mG0zdXGijC6lweNq8AitLOetl12l5XFpcfGZRIxU1VQbxSMSNzO1B9ZgI7wp91++XQ 2QMbt1sOHWj3WyarOIiqWU/NehkkJegfsf3Sw5bRt7tmhSgnn6mUoODuTEdOjYQF6slJ e3gN9aQMG43sFtDxS5dKJ03wxZp2jHedBaFypSsEcRmqPnOko/1he78d9/lAtNqP1D59 WEZqgvpC6hBsvjDZaEkL3PEEaU00lQkkf6Z95QtqLUef/tvHN7rhzTvuLd7iGPG6gecT FtYGm0tRLs5pgXQFaMtUdW4D5hiQucQuE2EmKxYo7TuT7l9JvfxadzdfZvAgid1R6uoZ drWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257076; x=1756861876; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bvkLUgOXDyITyIWALCtPrGDx3CpfTtamo0IC8ggrCtE=; b=ZgO9hgpJS2wpwjT2rwxYzB4aqPcDOlU7Fgoa5j1wGraRiMDKtTTbQ3kmKrHTos6gmm VsseT5WMlevqmF8iMzXDVdVicN5F/LEPFwrL3c+a5jcjf6yLM3pNSQJekSm81ijnmy+A PZB5Nril56Jf/H6Fr0boN2eBJtJHPBzRplk0vkT/03/ERw+/JvnISVJph6wrxuIhOf4b PXG2mjG12Y8VbVCcg2vx4dZvECwn6cCr+UurEsc2v/v6QNBKPkssQW+mjKAqTyMhGj5z Eqyx8MaGd5D11MSZKw+frOr3oOxdaUCboYVh4ur/pFTqBSCVMIKC7gdWPGDX4yU0M8jh voLw== X-Gm-Message-State: AOJu0Yy578kVFwCwvdK6RRjcrp6FfFQYD28k+AwdWySpYqm8opu8mdYj Gc0jx58/ihctq5bOI9K2977ChNejdPZjB2EhcwyUr2h7Agp7PXAxVdZpSfC3VTtOOdUcPCScg2Z Sf7hSJrY= X-Gm-Gg: ASbGncu69OYbD836VbUQafQz3MqYF4bF3Mitc7eNlyGdNpgvZiCQ2Gl0K6esCzRJkXT sKDYo2RzFczesWGpNrTp4CQRi2rdqJbEhjKphHaJLN2wN/qPi1fOYGjqn3NhL5mUjK+Ya72BRV7 /v4WFYynwdZHvw2zym8QQvcXrtOV3EnzPPYZj9YO40IzxYJcb4l7idX38E34gapYjwxIgs6RJKL ULpHQrDFlL2p9P1ZmyM5UEAHNYggOR/Sot6OmBNcQCgOYdeTd8V9jsrWGOCocpOC6MhyYkcY8Dm B7FmvRj/HiQ9xtAlrCA7wdSmQ3lBAj0Nwl6Crvj6laoIF6O2wbpqYsovKP99tGCVNRMM7it97L5 7ST7SrX+13d5d/th+Y0gMssEvOuCUNtuTvUJA X-Google-Smtp-Source: AGHT+IGMz60NxSTH48MqbFRf76AyXdjwo5Pk1JgT/pecnfGmTkfnhyYLn8f+AkF7m8VWP25li2ovaQ== X-Received: by 2002:a05:6a20:12c7:b0:220:33e9:15da with SMTP id adf61e73a8af0-24340bce54amr27943395637.2.1756257076100; Tue, 26 Aug 2025 18:11:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 41/61] target/arm: Split add_cpreg_to_hashtable_aa64 Date: Wed, 27 Aug 2025 11:04:32 +1000 Message-ID: <20250827010453.4059782-46-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, T_SPF_TEMPERROR=0.01 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257517442116600 Content-Type: text/plain; charset="utf-8" Rename the existing add_cpreg_to_hashtable_aa64 as *_1. Introduce a new add_cpreg_to_hashtable_aa64 that handles 128-bit and 64-bit views of an AArch64 system register. Signed-off-by: Richard Henderson --- target/arm/helper.c | 63 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 59 insertions(+), 4 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 3b765408f2..18af67742d 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -7217,11 +7217,9 @@ static void add_cpreg_to_hashtable_aa32(ARMCPU *cpu,= ARMCPRegInfo *r) } } =20 -static void add_cpreg_to_hashtable_aa64(ARMCPU *cpu, ARMCPRegInfo *r) +static void add_cpreg_to_hashtable_aa64_1(ARMCPU *cpu, ARMCPRegInfo *r, + uint32_t key) { - uint32_t key =3D ENCODE_AA64_CP_REG(r->opc0, r->opc1, - r->crn, r->crm, r->opc2); - if ((r->type & ARM_CP_ADD_TLBI_NXS) && cpu_isar_feature(aa64_xs, cpu)) { /* @@ -7288,6 +7286,10 @@ static void add_cpreg_to_hashtable_aa64(ARMCPU *cpu,= ARMCPRegInfo *r) r2->writefn =3D NULL; r2->raw_readfn =3D NULL; r2->raw_writefn =3D NULL; + r2->read128fn =3D NULL; + r2->write128fn =3D NULL; + r2->raw_read128fn =3D NULL; + r2->raw_write128fn =3D NULL; r2->accessfn =3D NULL; r2->fieldoffset =3D 0; =20 @@ -7309,6 +7311,59 @@ static void add_cpreg_to_hashtable_aa64(ARMCPU *cpu,= ARMCPRegInfo *r) ARM_CP_SECSTATE_NS, key); } =20 +static void add_cpreg_to_hashtable_aa64(ARMCPU *cpu, ARMCPRegInfo *r) +{ + uint32_t key64 =3D ENCODE_AA64_CP_REG(r->opc0, r->opc1, + r->crn, r->crm, r->opc2); + + /* + * All 128-bit system registers and instructions have 64-bit aliases. + * If the 128-bit feature is enabled, create a duplicate. + */ + if (r->type & ARM_CP_128BIT) { + if (cpu_isar_feature(aa64_sysreg128, cpu) || + cpu_isar_feature(aa64_sysinstr128, cpu)) { + ARMCPRegInfo *r128 =3D alloc_cpreg(r, NULL); + uint32_t key128 =3D key64 | CP_REG_AA64_128BIT_MASK; + + r128->accessfn =3D r128->access128fn; + r128->access128fn =3D NULL; + r128->readfn =3D NULL; + r128->writefn =3D NULL; + r128->raw_readfn =3D NULL; + r128->raw_writefn =3D NULL; + + if (r128->vhe_redir_to_el2) { + r128->vhe_redir_to_el2 |=3D CP_REG_AA64_128BIT_MASK; + } + if (r128->vhe_redir_to_el01) { + r128->vhe_redir_to_el01 |=3D CP_REG_AA64_128BIT_MASK; + } + + add_cpreg_to_hashtable_aa64_1(cpu, r128, key128); + + /* + * The 128-bit definition is the canonical view. + * The 64-bit definition is an alias, hidden from gdb. + */ + r->type |=3D ARM_CP_ALIAS | ARM_CP_NO_GDB; + } + + /* Squash the original to create the 64-bit view. */ + r->type &=3D ~ARM_CP_128BIT; + r->access128fn =3D NULL; + r->read128fn =3D NULL; + r->write128fn =3D NULL; + r->raw_read128fn =3D NULL; + r->raw_write128fn =3D NULL; + if (HOST_BIG_ENDIAN && r->fieldoffset) { + r->fieldoffset +=3D sizeof(uint64_t); + } + } + + add_cpreg_to_hashtable_aa64_1(cpu, r, key64); +} + void define_one_arm_cp_reg(ARMCPU *cpu, const ARMCPRegInfo *r) { /* --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257528; cv=none; d=zohomail.com; s=zohoarc; b=ISt8u1444cWUaAU2LGsy5qr+d9xdREevfB4c+re4TGMrb8tmfSSMG47B6LBx8VOp9K/A/FJbn8sEfDjedbC9s6p/F2yeuJmiJCss/l+xyIbv0xcoOayyAi+6WAgeuy8oecMCnvetr/s15G48c1k5eM1F3HxJMu+8ig9JDtRLm9Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257528; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cJsmimIu7dr8vrnk5jz0WzsneJPGwlTRlLHJVKFaYTw=; b=fQ93bqqhFoDnCQ4w3WPflBvMLM361FXnIeTVvB0U304ZxZ3jVVxRNE3UrprMOxkHAHWcjcF91yrmez22T3DsxpjalvzO76gGJeengdorDugKZ29pKkXEpOSMQ5i/8p4zwwGUcr5m8vYhrCTFEv4OhxMp6pM6cdbY4k1SvdBxi98= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257528840120.69871090804645; Tue, 26 Aug 2025 18:18:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4hv-0001eD-PH; Tue, 26 Aug 2025 21:12:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4hN-0000wR-3p for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:37 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4h9-000058-Fq for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:36 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-771e987b4e6so2236998b3a.2 for ; Tue, 26 Aug 2025 18:11:21 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257079; x=1756861879; darn=nongnu.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=cJsmimIu7dr8vrnk5jz0WzsneJPGwlTRlLHJVKFaYTw=; b=Qm2txHIuIQf8apYKLwjFsVJQzO3NNkF4JxVDXPi1QA0AaxMm6e7Y5VqR0Vgn0FYC4E x7HmIdWMHbscvzPO/Fwf1U9n/4SNYCyw+4Ez8MiLEwTvKADda2gMcYl6Uo6txC0kjzqN YiAsay1kgH1eVwi5S99SjrhopRLRLhyFPg3wvRslRND6Z3XHnBqw+Ji6EEOPFlyPUAX4 QXuyZgTe9M8vI0I9ygUmHonJtXwe7CEIbrlA0dIcaxTeEiw2IsI1YwB/SBgvcZ2becoR VgkvvL52ZTF2R+ot/vAb1Uh0x/qmtsiDxOsXRaCHFX6QGAfxZV4wxVzAN/66V3kDLI1Y q1LA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257079; x=1756861879; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cJsmimIu7dr8vrnk5jz0WzsneJPGwlTRlLHJVKFaYTw=; b=HF2DOY7MCUR7fEsIXw8oAkoPIqjxHVXPAClTCKLp4VUrmWZhj5bDTn6MhfCpdI680l adZaBCelRfkvG/SGqiIYOvumkcdVW2TPJsFwP0dN8ccNmC9Hq7c8LpEkfDog8BxPfnYI jDH5LC/UBQX6e1U4VA8RySFWWv8IwyloT/6ffyjO0rGFICFFMBUfuBgErW50YmDW2/eW dBpb/uIapo9ylMKZCJQIp+vLstUPkoRz4HYvfFDbsoqSREkkvVb0GnTY9qfZSJVpjzMR AAHr8TE/CoIm3qGgV2kI3Ux2hMg0RFdWWwUpI4SIEyoEEcPqxpELI5shVvws5CP3mpiE Svtg== X-Gm-Message-State: AOJu0YwDcL98ye+fHSKvz4Qzx7iZuziSHnajLCXyJ/6rbWuIoJ+f5PJo Ndod0ZHVoSBQZO1mbARDpPESDxQfEmcjZXJtQJ9niFbDaUrtvX6ewBjY9rVV6BMPEVJMHRXXtYX jzgU/ePI= X-Gm-Gg: ASbGncvq09hvmvmb/W23fc304zB7Ozo0NFl0fgAWok3fKV3rnxa8cP0zq60pBpy9ONz HbemHbpqiyY/IfcQxGncxFxd8ZGHvICuY9QcEhJEkjwoCJd/J100mBW7oczkY71t+0fP1dnIvqx zeBUVduP/W4sVSlQ0S7KwAJ0m1zgBb0Fm3+WshAHNJmHvHBdM5/ShfcU6Iwpr6NhopOXap8M+8S Q0SrmNMCzednK7AfeaPUZJY3BQCHJeA1Hvto3d1s0M4Ve0CY7Mo6n8es9fhMiDxNAPx2ndfRoDB rKQkzaT7dDvLipN5aA/DwQ9kdyKXDgyOwwXsoreE+Txh+6gH0cL56F1wCMTOnJVLrhbogWm73nK s+aO29S3xzjCDxQJNlA8hxu+PnQ== X-Google-Smtp-Source: AGHT+IFpXbvERlfbH8lvKcHAfFXSL4ExLtBeFodIJh4MsP6k+QtpbALQRkDzzg5W1v7tBAq69RB3pA== X-Received: by 2002:a05:6a21:9997:b0:243:78a:8270 with SMTP id adf61e73a8af0-24340e1939emr27306031637.54.1756257079164; Tue, 26 Aug 2025 18:11:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 42/61] target/arm: Add raw_read128, raw_write128 Date: Wed, 27 Aug 2025 11:04:33 +1000 Message-ID: <20250827010453.4059782-47-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257531701124100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/cpregs.h | 5 +++++ target/arm/helper.c | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index 90f14dbb18..0d8c45b60c 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -21,6 +21,7 @@ #ifndef TARGET_ARM_CPREGS_H #define TARGET_ARM_CPREGS_H =20 +#include "qemu/int128.h" #include "hw/registerfields.h" #include "exec/memop.h" #include "target/arm/kvm-consts.h" @@ -1065,6 +1066,10 @@ uint64_t raw_read(CPUARMState *env, const ARMCPRegIn= fo *ri); /* CPWriteFn that just writes the value to ri->fieldoffset */ void raw_write(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value); =20 +/* Likewise for 128-bit fields. */ +Int128 raw_read128(CPUARMState *env, const ARMCPRegInfo *opaque); +void raw_write128(CPUARMState *env, const ARMCPRegInfo *opaque, Int128 val= ue); + /* * CPResetFn that does nothing, for use if no reset is required even * if fieldoffset is non zero. diff --git a/target/arm/helper.c b/target/arm/helper.c index 18af67742d..7568b78c49 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -59,6 +59,8 @@ int compare_u64(const void *a, const void *b) (*(uint32_t *)((char *)(env) + (ri)->fieldoffset)) #define CPREG_FIELD64(env, ri) \ (*(uint64_t *)((char *)(env) + (ri)->fieldoffset)) +#define CPREG_FIELD128(env, ri) \ + (*(Int128 *)((char *)(env) + (ri)->fieldoffset)) =20 uint64_t raw_read(CPUARMState *env, const ARMCPRegInfo *ri) { @@ -88,8 +90,23 @@ void raw_write(CPUARMState *env, const ARMCPRegInfo *ri,= uint64_t value) } } =20 +Int128 raw_read128(CPUARMState *env, const ARMCPRegInfo *ri) +{ + assert(ri->type & ARM_CP_128BIT); + assert(ri->fieldoffset); + return CPREG_FIELD128(env, ri); +} + +void raw_write128(CPUARMState *env, const ARMCPRegInfo *ri, Int128 value) +{ + assert(ri->type & ARM_CP_128BIT); + assert(ri->fieldoffset); + CPREG_FIELD128(env, ri) =3D value; +} + #undef CPREG_FIELD32 #undef CPREG_FIELD64 +#undef CPREG_FIELD128 =20 static void *raw_ptr(CPUARMState *env, const ARMCPRegInfo *ri) { --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257634; cv=none; d=zohomail.com; s=zohoarc; b=YGQW7i7VFU465DDzHNOw+IOaiYeTNOCgxqgtCe+Z2pfrufyMB/96yW0J/WupAnsQsEB4nxY0Vw3hGT1yvuU8TRDigFXobvYxF6zlsAe99VUZ4JC1Djx8cy6oybR59EjoZ+0swSzO9DYKEs9+CQYGrhJsgwz0mYZX6PO87d6iwbU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257634; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zz0hmw1zkEGR7aCPTEKOMC5u8UDV58D53zKh3dJcGq0=; b=m554nrn+8+iM3uq17ebKbCV/u5r0FsBlInWfrSSKFF7wOtfYYxzNM7cPRgMSRKM5DZbyxQ8zdwPiw3swnFDofFA4e35nkazecMFOMNbojRAUOmiOQL3lay4kf0+oxdlsUZ6JfJEPjNQ7yLaWbLKTnAjlN8y9mbZckatThFshKrs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257634653234.6717234757972; Tue, 26 Aug 2025 18:20:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4hP-00010U-SG; Tue, 26 Aug 2025 21:11:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4hJ-0000k8-N6 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:34 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4hA-00006Q-9J for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:33 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-76e4f2e4c40so5593291b3a.2 for ; Tue, 26 Aug 2025 18:11:23 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257082; x=1756861882; darn=nongnu.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=zz0hmw1zkEGR7aCPTEKOMC5u8UDV58D53zKh3dJcGq0=; b=J0d7o7CWAha3SHBPPegnPdwIjDooiulPSkcjxCIZvEJl9vSa6PLVYGSWzd6n4VUCsI oUIGA4bEymLZZqs+ahjPny/wdpiSYFEUlA0nk/BvIt819ZWHIzsq+2OfZvBFcQ9U44q5 5/zZxTbPkurlNH4nNIUmbnrJbmw66shAlqDNh9QsneyoKu74fiZWeHue06qsSrzwX6CK 1l03v+/Go8iRSaPVmgI/kEf0mLhAUa9nSSuEDjEovLvPJQelgTTb9jd0Ihk1WUcizBZR 43vpveQ/9+DaandZRh2FTYr2YzKjokgvWHkGS2roHzlcQ7RQCGW4YdfEjDV1ZeDGaIGJ AG5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257082; x=1756861882; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zz0hmw1zkEGR7aCPTEKOMC5u8UDV58D53zKh3dJcGq0=; b=Otw3MyLed7HR9bSK8DVAROa2K2UYYef0AAl/0yKKv2kyQ9gCjA4wrDEV2nLEsIuplH PfSHXlFMv8nMYOOKogVTt4l0QUqNWcY5nYsP7pkq5lLtYw3AYsf67CWmnBsp5JsmFDeB AoaAVaid1bgjTXw058mtgicXCTGJUgK4TRafClKvN/QASsGEe6bHAf0nE78PXnH8YvVN vQGrKeKbiss8LLHpANZBRjlwGZ60/04v/PwjzBw1Rg9tV8R5KAX+wFxD5ohd2Ks0NUTk wmV7OoVH9Wos6Z6OhXU4arJMh2KKH4McKTNOPcYqH6b+ccLMMY8GOqJJ7uifce57eaUl nzVg== X-Gm-Message-State: AOJu0YyZ5/hpbs2mT5bRQXSL873j7RsrH97KXeTN61Gsr3ZOHUgwQ+pR zd0uf2zQqNDOitAUzRmlR6vi8OZ2uWwqHI4fIvwPbQW8SgQZqA/zQ58ZflX0hcBoFD8LvCf3S/t yhgc3Iq0= X-Gm-Gg: ASbGnctfs4/ahbyXW2CpdeVXKYmv8hGWoINFoKT4yABEABdirfKl6pvUajuI0AxQZZ7 KVPBYGLK6DHb8W0otTzSqH3lkReYf3dYrdWzNpenCiGbDJhgZtUcXc17sOF/NfauobfJldCPMiD +qglDJXJhNJ/If+eTu2U9RhBlZy4ZJoRPOWt7HMiwdh9N1olgcTOK1pRjQGQKzgyrpouXlYnqYE 11GGOoht9+dsd0DnFHzhFIpedfRMtf80rOaG0pBVmleITmHBSbjKDgQe/3AsGxwfXZ0dZkEh68d rKQlrSDrkSvTlqhtdpI3lx3RCSYPVwx9PrLLYmVmDDjPzbT3JWNCUz8ImFYnWUmFrY3Y2BT+Fpf PfNVhGI+qgrXc2bu3kwkbFog0xaihJdi0lGox X-Google-Smtp-Source: AGHT+IFIAzgJHlHTSKwMVmY4Gp1Q4zava46tZeWpZ4+0M+pLKnxAF/mST+jg/eCTurrR08kf/Fa5mQ== X-Received: by 2002:a05:6a00:13a9:b0:771:e114:35be with SMTP id d2e1a72fcca58-771e1143863mr13740244b3a.13.1756257082012; Tue, 26 Aug 2025 18:11:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 43/61] target/arm: Add read_raw_cp_reg128, write_raw_cp_reg128 Date: Wed, 27 Aug 2025 11:04:34 +1000 Message-ID: <20250827010453.4059782-48-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257636900124100 Content-Type: text/plain; charset="utf-8" Add the functions and update raw_accessors_invalid to match. Add assertions for !ARM_CP_128BIT in read_raw_cp_reg and write_raw_cp_reg. Signed-off-by: Richard Henderson Reviewed-by: Manos Pitsidianakis --- target/arm/cpregs.h | 1 + target/arm/helper.c | 43 +++++++++++++++++++++++++++++++++++++++---- 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index 0d8c45b60c..bd26a4a260 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -1097,6 +1097,7 @@ static inline bool cp_access_ok(int current_el, =20 /* Raw read of a coprocessor register (as needed for migration, etc) */ uint64_t read_raw_cp_reg(CPUARMState *env, const ARMCPRegInfo *ri); +Int128 read_raw_cp_reg128(CPUARMState *env, const ARMCPRegInfo *ri); =20 /* * Return true if the cp register encoding is in the "feature ID space" as diff --git a/target/arm/helper.c b/target/arm/helper.c index 7568b78c49..3efc14da3a 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -115,6 +115,7 @@ static void *raw_ptr(CPUARMState *env, const ARMCPRegIn= fo *ri) =20 uint64_t read_raw_cp_reg(CPUARMState *env, const ARMCPRegInfo *ri) { + assert(!(ri->type & ARM_CP_128BIT)); /* Raw read of a coprocessor register (as needed for migration, etc). = */ if (ri->type & ARM_CP_CONST) { return ri->resetvalue; @@ -130,6 +131,7 @@ uint64_t read_raw_cp_reg(CPUARMState *env, const ARMCPR= egInfo *ri) static void write_raw_cp_reg(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t v) { + assert(!(ri->type & ARM_CP_128BIT)); /* * Raw write of a coprocessor register (as needed for migration, etc). * Note that constant registers are treated as write-ignored; the @@ -147,6 +149,32 @@ static void write_raw_cp_reg(CPUARMState *env, const A= RMCPRegInfo *ri, } } =20 +Int128 read_raw_cp_reg128(CPUARMState *env, const ARMCPRegInfo *ri) +{ + assert(ri->type & ARM_CP_128BIT); + if (ri->raw_read128fn) { + return ri->raw_read128fn(env, ri); + } else if (ri->read128fn) { + return ri->read128fn(env, ri); + } else { + return raw_read128(env, ri); + } +} + +__attribute__((unused)) +static void write_raw_cp_reg128(CPUARMState *env, const ARMCPRegInfo *ri, + Int128 v) +{ + assert(ri->type & ARM_CP_128BIT); + if (ri->raw_write128fn) { + ri->raw_write128fn(env, ri, v); + } else if (ri->write128fn) { + ri->write128fn(env, ri, v); + } else { + raw_write128(env, ri, v); + } +} + static bool raw_accessors_invalid(const ARMCPRegInfo *ri) { /* @@ -161,12 +189,19 @@ static bool raw_accessors_invalid(const ARMCPRegInfo = *ri) * The tests here line up with the conditions in read/write_raw_cp_reg() * and assertions in raw_read()/raw_write(). */ - if ((ri->type & ARM_CP_CONST) || - ri->fieldoffset || - ((ri->raw_writefn || ri->writefn) && (ri->raw_readfn || ri->readfn= ))) { + if (ri->type & ARM_CP_CONST) { + return ri->type & ARM_CP_128BIT; + } + if (ri->fieldoffset) { return false; } - return true; + if (ri->type & ARM_CP_128BIT) { + return !((ri->raw_write128fn || ri->write128fn) && + (ri->raw_read128fn || ri->read128fn)); + } else { + return !((ri->raw_writefn || ri->writefn) && + (ri->raw_readfn || ri->readfn)); + } } =20 bool write_cpustate_to_list(ARMCPU *cpu, bool kvm_sync) --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257309; cv=none; d=zohomail.com; s=zohoarc; b=Gkzwj1kKPty/IQ/VIvl6exe22Q0NYAtN3Y2Baq8qd/IcLZOMG4AAWUhYh3aSPSMzOJJ8vpALgZ2dwR4QP0s7nY9/wMVRtBYNZDGzce2U28iDsTa7HHv9Kqye3l2ak8cBO5Z5ZX83+K2u0q+LRrvVwz1jlbEnpWIxxWRWqfNxVoE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257309; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=O0PnJfSy2eotU6SdGc2/wnLbs4VZtcwWID5Cx1qd6NU=; b=JvCv7SqZdykHeGKrKkNVbGllBjU0/MANihnUiF7mbNx2w9qinWzzcqeTJBVkaTBH4f3yk1Z8ZPhntEJ6GVmxQXB76p3vfTeKL7CJYsdJ+wooLHEnt0xzonHBfVgchpEVQlUBNxffHeb9Pcv9DWeRdhEURg1LkPXYP40e8i8lruo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257309527700.8607032848953; Tue, 26 Aug 2025 18:15:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4j4-00038q-Oo; Tue, 26 Aug 2025 21:13:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4hW-0001Fn-O3 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:47 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4hI-00008C-NB for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:45 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-771fa8e4190so841434b3a.1 for ; Tue, 26 Aug 2025 18:11:30 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257085; x=1756861885; darn=nongnu.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=O0PnJfSy2eotU6SdGc2/wnLbs4VZtcwWID5Cx1qd6NU=; b=SOrihBTNHwx9Opc4dI/NexjasM7Mu4tSNq8R09N2YUQK7Jt1DqcEIr2IXnOscGyXdk OqCITqqoi4Udit8Cl5PiNoUkVNGLz8KWIr+a9hYAvmYafUexDdBqXNswam66bQJgRBln 0ehtci28EqOp9y4UKKGqe3RCHdYUuQWgo0oR1LDu5S+j2m1bUEqKV7hyWY80k/nQMD6Y LqFPS9PvJSzv+F/w5yb98KxMOxrUHCEYlqn+C8Uw7KQBl9LRmZ6+LgltzkkzKle5AzzY GyW34zTxzvNQpVX3sEiGuiCUblnixnrN415xwcjUzLTlqCWKUMCES8sC0AZYXkUx+YoZ 6KFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257085; x=1756861885; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=O0PnJfSy2eotU6SdGc2/wnLbs4VZtcwWID5Cx1qd6NU=; b=f329dWCQIJJc36Np/pqfXFXChEw52JLlyOwDacdSuQ7AoL0vwUO1CzljwP7GGusya/ VgEUVo2UZgtDjpFmDm7GWKJDMKSkP3OOiV6dMGK+Aq6teyoeHYZ2L2DDxoylZ0NDJ/Kq ll6zVx6WcNCQkBdoZ7Pf2rnvH2oSospYX+FxaNb13iET9ADahciqgUR19NH3CNPiUn2R 1ysa9uT1GtWm2OneBiHq1khyNNdcxwZGarNaDMA3fzi68PzgLeRoIpaxlED3gbB1aPBA 73o4K8Ne6Ai+3NNEvINzsvFNKrNevw70Nv71BlVYKeSAlNKzXnaokXmVKi1miDmazc5h BI9w== X-Gm-Message-State: AOJu0YxXvEm+IHro5NGbDhCH2/fpdV3ob1lzwlF3keKriMDqGC+yk6aV isWG6EW49vKpwt7B2J0D9iVELycKvPDzve6KoOxP4g/3O0xMxIUub5djahMSck3TblXKGWkcVLE oLUVd8+8= X-Gm-Gg: ASbGncvA7FKi6w/HuuR3BzS1GnsF4Fc6f5QkOynrrJDQjjceRqIetKI2whvWj48DDDg Z3ZrtWRsNT++2oIDDyQVO/Nz6Kv5LO4jw3ppuJIoYhQrFVUm0ZjpWOrRFFEaT5nPnCzIDLOzq6K xH3QX71AaozdnHBiRu8kfJia/3xtufo1E40PYMIPTdISUHezUZC8y3yRHlNmD6jk3lRkr3hW9Im 5o1NFUe6Zg5tPd2DeiDgWNJPb7HJ5gZBLRCPH27m9feBrTKGTpyDZVFLXfh9IAqZnSG6/ay70Fg uuSlhH3qMHjsnQCb5hFm+idc+fE6WHFfGnE+xK0SwXDcF92gSSoxRbcrKpURbEI7bujOmbgV0yu PqL+RTI55Z0Svvk3fnb8tvAnRSA== X-Google-Smtp-Source: AGHT+IEqqnggI2hpeXVmJw8Py/cfnUPPCI5NssMRZ4HNcCjJc+bveNIe1bxlFukWl5BtURoOmINotw== X-Received: by 2002:a05:6a00:3d42:b0:771:fe9d:38f0 with SMTP id d2e1a72fcca58-771fe9d4399mr4099098b3a.8.1756257084538; Tue, 26 Aug 2025 18:11:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 44/61] target/arm: Put 128-bit sysregs into a separate list Date: Wed, 27 Aug 2025 11:04:35 +1000 Message-ID: <20250827010453.4059782-49-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257311274124100 Content-Type: text/plain; charset="utf-8" Duplicate the cpreg_{indexes,values,array_len} array as cpreg128_{indexes,values,array_len}. Similarly for cpreg_vmstate_{indexes,values,array_len}. Split the values between the two arrays during write_cpustate_to_list, write_list_to_cpustate, count_cpreg, and add_cpreg_to_list. Signed-off-by: Richard Henderson --- target/arm/cpu.h | 19 +++++-- target/arm/helper.c | 125 +++++++++++++++++++++++++++++++++++--------- 2 files changed, 116 insertions(+), 28 deletions(-) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 919bd3d7eb..a5a8779aba 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -911,25 +911,36 @@ struct ArchCPU { =20 /* Coprocessor information */ GHashTable *cp_regs; - /* For marshalling (mostly coprocessor) register state between the + /* + * For marshalling (mostly coprocessor) register state between the * kernel and QEMU (for KVM) and between two QEMUs (for migration), * we use these arrays. */ - /* List of register indexes managed via these arrays; (full KVM style - * 64 bit indexes, not CPRegInfo 32 bit indexes) + /* + * List of register indexes managed via these arrays (full KVM style + * 64 bit indexes, not CPRegInfo 32 bit indexes). The registers are + * segregated by size, with 64-bit registers in cpreg_indexes and + * 128-bit registers in cpreg128_indexes. */ uint64_t *cpreg_indexes; + uint64_t *cpreg128_indexes; /* Values of the registers (cpreg_indexes[i]'s value is cpreg_values[i= ]) */ uint64_t *cpreg_values; + Int128 *cpreg128_values; /* Length of the indexes, values, reset_values arrays */ int32_t cpreg_array_len; - /* These are used only for migration: incoming data arrives in + int32_t cpreg128_array_len; + /* + * These are used only for migration: incoming data arrives in * these fields and is sanity checked in post_load before copying * to the working data structures above. */ uint64_t *cpreg_vmstate_indexes; + uint64_t *cpreg128_vmstate_indexes; uint64_t *cpreg_vmstate_values; + Int128 *cpreg128_vmstate_values; int32_t cpreg_vmstate_array_len; + int32_t cpreg128_vmstate_array_len; =20 DynamicGDBFeatureInfo dyn_sysreg_feature; DynamicGDBFeatureInfo dyn_svereg_feature; diff --git a/target/arm/helper.c b/target/arm/helper.c index 3efc14da3a..6f20d3986e 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -207,10 +207,11 @@ static bool raw_accessors_invalid(const ARMCPRegInfo = *ri) bool write_cpustate_to_list(ARMCPU *cpu, bool kvm_sync) { /* Write the coprocessor state from cpu->env to the (index,value) list= . */ - int i; + int i, n; bool ok =3D true; =20 - for (i =3D 0; i < cpu->cpreg_array_len; i++) { + n =3D cpu->cpreg_array_len; + for (i =3D 0; i < n; i++) { uint32_t regidx =3D kvm_to_cpreg_id(cpu->cpreg_indexes[i]); const ARMCPRegInfo *ri; uint64_t newval; @@ -220,6 +221,10 @@ bool write_cpustate_to_list(ARMCPU *cpu, bool kvm_sync) ok =3D false; continue; } + if (ri->type & ARM_CP_128BIT) { + ok =3D false; + continue; + } if (ri->type & ARM_CP_NO_RAW) { continue; } @@ -247,35 +252,77 @@ bool write_cpustate_to_list(ARMCPU *cpu, bool kvm_syn= c) } cpu->cpreg_values[i] =3D newval; } - return ok; -} =20 -bool write_list_to_cpustate(ARMCPU *cpu) -{ - int i; - bool ok =3D true; + n =3D cpu->cpreg128_array_len; + if (n =3D=3D 0) { + return ok; + } + assert(!kvm_sync); =20 - for (i =3D 0; i < cpu->cpreg_array_len; i++) { - uint32_t regidx =3D kvm_to_cpreg_id(cpu->cpreg_indexes[i]); - uint64_t v =3D cpu->cpreg_values[i]; - const ARMCPRegInfo *ri; + for (i =3D 0; i < n; i++) { + uint32_t regidx =3D kvm_to_cpreg_id(cpu->cpreg128_indexes[i]); + const ARMCPRegInfo *ri =3D get_arm_cp_reginfo(cpu->cp_regs, regidx= ); =20 - ri =3D get_arm_cp_reginfo(cpu->cp_regs, regidx); if (!ri) { ok =3D false; continue; } + if (!(ri->type & ARM_CP_128BIT)) { + ok =3D false; + continue; + } if (ri->type & ARM_CP_NO_RAW) { continue; } - /* - * Write value and confirm it reads back as written - * (to catch read-only registers and partially read-only - * registers where the incoming migration value doesn't match) - */ - write_raw_cp_reg(&cpu->env, ri, v); - if (read_raw_cp_reg(&cpu->env, ri) !=3D v) { + + cpu->cpreg128_values[i] =3D read_raw_cp_reg128(&cpu->env, ri); + } + return ok; +} + +bool write_list_to_cpustate(ARMCPU *cpu) +{ + int i, n; + bool ok =3D true; + + n =3D cpu->cpreg_array_len; + for (i =3D 0; i < n; i++) { + uint32_t regidx =3D kvm_to_cpreg_id(cpu->cpreg_indexes[i]); + const ARMCPRegInfo *ri =3D get_arm_cp_reginfo(cpu->cp_regs, regidx= ); + + if (!ri) { ok =3D false; + } else if (ri->type & ARM_CP_128BIT) { + ok =3D false; + } else if (!(ri->type & ARM_CP_NO_RAW)) { + /* + * Write value and confirm it reads back as written + * (to catch read-only registers and partially read-only + * registers where the incoming migration value doesn't match) + */ + uint64_t v =3D cpu->cpreg_values[i]; + write_raw_cp_reg(&cpu->env, ri, v); + if (read_raw_cp_reg(&cpu->env, ri) !=3D v) { + ok =3D false; + } + } + } + + n =3D cpu->cpreg128_array_len; + for (i =3D 0; i < n; i++) { + uint32_t regidx =3D kvm_to_cpreg_id(cpu->cpreg128_indexes[i]); + const ARMCPRegInfo *ri =3D get_arm_cp_reginfo(cpu->cp_regs, regidx= ); + + if (!ri) { + ok =3D false; + } else if (!(ri->type & ARM_CP_128BIT)) { + ok =3D false; + } else if (!(ri->type & ARM_CP_NO_RAW)) { + Int128 v =3D cpu->cpreg128_values[i]; + write_raw_cp_reg128(&cpu->env, ri, v); + if (int128_ne(read_raw_cp_reg128(&cpu->env, ri), v)) { + ok =3D false; + } } } return ok; @@ -288,9 +335,14 @@ static void add_cpreg_to_list(gpointer key, gpointer v= alue, gpointer opaque) const ARMCPRegInfo *ri =3D value; =20 if (!(ri->type & (ARM_CP_NO_RAW | ARM_CP_ALIAS))) { - cpu->cpreg_indexes[cpu->cpreg_array_len] =3D cpreg_to_kvm_id(regid= x); + uint64_t idx =3D cpreg_to_kvm_id(regidx); + /* The value array need not be initialized at this point */ - cpu->cpreg_array_len++; + if (ri->type & ARM_CP_128BIT) { + cpu->cpreg128_indexes[cpu->cpreg128_array_len++] =3D idx; + } else { + cpu->cpreg_indexes[cpu->cpreg_array_len++] =3D idx; + } } } =20 @@ -300,7 +352,11 @@ static void count_cpreg(gpointer key, gpointer value, = gpointer opaque) const ARMCPRegInfo *ri =3D value; =20 if (!(ri->type & (ARM_CP_NO_RAW | ARM_CP_ALIAS))) { - cpu->cpreg_array_len++; + if (ri->type & ARM_CP_128BIT) { + cpu->cpreg128_array_len++; + } else { + cpu->cpreg_array_len++; + } } } =20 @@ -310,9 +366,10 @@ void init_cpreg_list(ARMCPU *cpu) * Initialise the cpreg_tuples[] array based on the cp_regs hash. * Note that we require cpreg_tuples[] to be sorted by key ID. */ - int arraylen; + int arraylen, array128len; =20 cpu->cpreg_array_len =3D 0; + cpu->cpreg128_array_len =3D 0; g_hash_table_foreach(cpu->cp_regs, count_cpreg, cpu); =20 arraylen =3D cpu->cpreg_array_len; @@ -330,13 +387,33 @@ void init_cpreg_list(ARMCPU *cpu) cpu->cpreg_vmstate_array_len =3D arraylen; cpu->cpreg_array_len =3D 0; =20 + array128len =3D cpu->cpreg128_array_len; + if (array128len) { + cpu->cpreg128_indexes =3D g_new(uint64_t, array128len); + cpu->cpreg128_values =3D g_new(Int128, array128len); + cpu->cpreg128_vmstate_indexes =3D g_new(uint64_t, array128len); + cpu->cpreg128_vmstate_values =3D g_new(Int128, array128len); + } else { + cpu->cpreg128_indexes =3D NULL; + cpu->cpreg128_values =3D NULL; + cpu->cpreg128_vmstate_indexes =3D NULL; + cpu->cpreg128_vmstate_values =3D NULL; + } + cpu->cpreg128_vmstate_array_len =3D array128len; + cpu->cpreg128_array_len =3D 0; + g_hash_table_foreach(cpu->cp_regs, add_cpreg_to_list, cpu); =20 assert(cpu->cpreg_array_len =3D=3D arraylen); + assert(cpu->cpreg128_array_len =3D=3D array128len); =20 if (arraylen) { qsort(cpu->cpreg_indexes, arraylen, sizeof(uint64_t), compare_u64); } + if (array128len) { + qsort(cpu->cpreg128_indexes, array128len, + sizeof(uint64_t), compare_u64); + } } =20 bool arm_pan_enabled(CPUARMState *env) --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257319; cv=none; d=zohomail.com; s=zohoarc; b=INw5wbEeYbBXcQOU7Iu7uScFcBhTdtLVHQC3sCG1Elvr77P4xFp0HyeNI3n8p09OgEt/aya9Bf6bvndlJMudRY+PI4s5rEG1ks7XBEQCkuvD37J2+5GGDTLYLP6OL6/LFsAvOQQdsXAy4QjwStFu1eBEWmJ4L5wa5Is6hwVf49g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257319; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Ru+zkqkr06yFhMECXXsdeWAo58OIAebY2k6d7rRmYv8=; b=C4BxH1hpah0j9Dp+JBINKh0uEeq5hgh0r7ilR2B0eb1IUajFOd3Xh6wR2Oi/dLpLU+IpU72i26j3kNOTQDuvsN1UQFZiXhXO5zdi5SeuPsQtcxOajZ4oTMUMudHZ0oFDY8hAKDQbPVfopb38MabqQRHFR7/BN88qbfcmjBAA/ss= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257319557337.5527299815112; Tue, 26 Aug 2025 18:15:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4ih-0002RH-M6; Tue, 26 Aug 2025 21:13:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4hT-0001BM-Ms for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:44 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4hG-00008e-V7 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:43 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-771f69fd6feso2008021b3a.1 for ; Tue, 26 Aug 2025 18:11:30 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257087; x=1756861887; darn=nongnu.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=Ru+zkqkr06yFhMECXXsdeWAo58OIAebY2k6d7rRmYv8=; b=sHzIwSCSW2TZMcdrstI/2lv3V8CwLAJ97Q7dBrb3a/f9UA3/E+Od3wXZ6Bm/algYbb N9tsrrVrD7mYLgrVt0gwdA5GBRrAdDsDC29tR2iK1c9vk7s5GISi63EH1FpnC7vbvW2k adI0vm5AUqMbefgOQPQSrENST/W9dmVFimU0jb5gSEA8MXb8SqggJ0r2N9eGwWvbAMQG 56FLcG4gB+CjXlU/C+6Ysv6+PUZrmkmU4/Ide/qrtUEWLQz3cRL3ltZpyYm1PNQk7vR5 FB0w5TdQvh4eePS8jRp4Z6fekt0U+5PoH0yp3eNGZSIokNa26ecRCsqBt2YCdWIQXzdE MlGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257087; x=1756861887; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ru+zkqkr06yFhMECXXsdeWAo58OIAebY2k6d7rRmYv8=; b=JlUQxxD2txLGNcNKQXMnHh8sVnvpG91kDoIVbesYSsnYXkhCF8QozS0HorlWIzADaz zwkG2bwNLl96xtg0Gs/xoEiZ+/hSLLJgd2eocTvecTvRuilbv9WUMtNmsvn6Te2BZpQh l0nIdlcBNjRh3AVXvoU6HqvNLk5jPo4JHKhuq5nmaL/mbdcZbLqubGfX5tr73/Gzgehy 9JhQr/jOtVercWNpo6mK1G0IjBto0ba+aEud5k3NGnHoA9H+tTW8bnzT+OHHyLLMyJWB e4ivFC2qyhvsEjpO3O21qbrcEFxI6J3HyH7CJDPlPOcQb2YN5O0mkgzu0h2NR2padteX aVbQ== X-Gm-Message-State: AOJu0YwIj6EsCZHYTnjMBjL217U9zO2taHjSaiED3ZfSuca8H/ZLyxLm f5bqHYhOTRJmBsIxsyhuOM9k7cJTL41FgnLmIOpJOWhsyhF0bfEqBdDv+qGM116cD/nPC+V8IdI A9LAUjKY= X-Gm-Gg: ASbGncsK2qh7QKQdApeaEcoG4pAcLIeRXJM5HkuZJ38mLhcyVzg3hAbJjGZoDOk56gR BiFtSNhMwU7DgUojKHPNZ32g4/F3nguIGSPWJmfjwnMwsMCXtFF3FqhzXOuYWiD6VZI9zFx9JlH g/fc4EIPwuq5PjyJRmZ/Urb09yd/XU3q/SPE8/mlIyf7zXXX93xg0TzTzqGu1Sg6OgsnD4mkNXy gIOvWmAg1e/SqkGUuMLn3rg9oH4jNR/Pk1dE+5YRaYFyPmcChsq5oh2At/9gOE5Efw7spKjmvE6 viGtQkD+bhkJEPJHGGaQcba+WB2gJYlh8y9b8pXp4tt8ujWokizkh75KtacIr81qIO3Qayc3y5J 7CPw8sl5zAHSf6YO3kfArroqQ/Q== X-Google-Smtp-Source: AGHT+IGUkLAlYe8hrAm3tLT7bhBS/qc90gC+/iZcUYazS+zdqR3jVkMhsjj7ALPnjydCo231fV/W/g== X-Received: by 2002:a05:6a00:9296:b0:771:f309:c04f with SMTP id d2e1a72fcca58-771f309c572mr6566051b3a.10.1756257087207; Tue, 26 Aug 2025 18:11:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 45/61] target/arm/kvm: Assert no 128-bit sysregs in kvm_arm_init_cpreg_list Date: Wed, 27 Aug 2025 11:04:36 +1000 Message-ID: <20250827010453.4059782-50-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257321193124100 Content-Type: text/plain; charset="utf-8" KVM has not yet enabled 128-bit system registers. Signed-off-by: Richard Henderson --- target/arm/kvm.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 9e569eff65..53c79041e1 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -803,6 +803,8 @@ static int kvm_arm_init_cpreg_list(ARMCPU *cpu) arraylen++; } =20 + assert(cpu->cpreg128_array_len =3D=3D 0); + cpu->cpreg_indexes =3D g_renew(uint64_t, cpu->cpreg_indexes, arraylen); cpu->cpreg_values =3D g_renew(uint64_t, cpu->cpreg_values, arraylen); cpu->cpreg_vmstate_indexes =3D g_renew(uint64_t, cpu->cpreg_vmstate_in= dexes, --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257217; cv=none; d=zohomail.com; s=zohoarc; b=Ao3JD4pY2h+0Fkg9d0BN1nnk4nJ7XrUHYr9qiRW/tfsyBswGxmYn2Ae9Pb0s7HukjRiVS+K1MUcehjw09jBeMhrwBMhtogJnlDDLkIy3xhEveYQh6eJnU3u1frrGrS2bZTv52Pjb+8GkF//HlDlO/otJT52XkmTvNVPoEhifbBc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257217; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=BYMBiKJq8/lsK6z7ljr/lChjjHaZZY+QCsjrhv9wKe0=; b=jMA0m8TpWDuS1g4BRSUhsE3PvyJwd6cmcW76A6CWOsc30gd4p6o/gGup0GFKYAKkwIaAQ2iTSXamc9lW6lqs7otaDnBg9xyf2i3jtD9vnuLKCbPLZVerQneyGg5d0QDPodzq1TJ91QDfkO7zdWXk0CBEch0M0/0jHaeAX3gaixU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 175625721776283.80347042936876; Tue, 26 Aug 2025 18:13:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4iH-0001xX-8Z; Tue, 26 Aug 2025 21:12:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4hW-0001Fd-Al for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:47 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4hI-00008v-ND for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:45 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-771e15ce64eso2219204b3a.0 for ; Tue, 26 Aug 2025 18:11:31 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257090; x=1756861890; darn=nongnu.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=BYMBiKJq8/lsK6z7ljr/lChjjHaZZY+QCsjrhv9wKe0=; b=teEkHtCBqjtIfzdKu+OgvCjfvEMBEyT4szeuTkgJF28uYsMqPhizCUmiYjTWu9W4p9 McrRid9pNgAx0cH1F3abMp3EHYvnkqEYUGl089xdaY+YhwO3LL7bIgWBeHpz7WlUxx8t ZvcqK0P3EZ6WV+cwrejme8yw8dZD6PH02dihu960ThysaH4K7vUuH4s6Vxm4wKCulpbx GfMWY7L776Q/mxEW7oYzKZgFPZw2Cou6e/SKwYG7wQyU9uQVN+AqlIORhAqR0JeHgW34 w0G9Wddga7qDrqdwTLfgAkcLvic5emh1TwsD2+tOUSh8oz56BJH5Tnsbos9Pekb4wLiA DX4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257090; x=1756861890; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BYMBiKJq8/lsK6z7ljr/lChjjHaZZY+QCsjrhv9wKe0=; b=JR46wIfyuzxj6gVgaRbsAEXimdii3dB4+uqTm5dYyzDP8ARcZH8a/KASlrYO91loBR Di6SMzz4cf1atZ79N9XDMOJhdrEGM1wI7CvW/+sEofzOTPBbyG6ZEdDGUdS342tgiZZb UUDbhNM29NIvvHdtTkqEaMPODxj6jGkj5YVD8OPpTETuhUt7kB0AbmDVEUw0Y//9biDV vqmN87st9PD/0NeYE+rT+evW3S2RO08BMWIXp9yTH/aW1ptoOFpKsYzMD+Zb4eAehi+Z HPr0e92lPPkAjuQBPvUd5BeNojPWLUBqRuaYxyqtbnN3lbQ6JaBetVOrCF9xEoWnyYO1 gZ1w== X-Gm-Message-State: AOJu0Yz80WHpwCeZo3aQS0QpOyVaPZ+mOHOwD5H8DZftwdqBUe1ei5AV /EXkQJYv8f+q9SYiFdOBaXvbTGCLmvN0R6HrSj9SXhicksEEBGUEpmhgXAB9WHu4zxYmP5mO87Y HMSj6QWA= X-Gm-Gg: ASbGnct4SPMr/5+qKq63r9c4OGfNQyArSNaiPT8fNFDNrjYTXRJbFGai9OEQSfWsRKm 70QYYRC91YY7LWFTVHGiQP9MzmicTubzatT9PNPSkgEePYOR7Vvsg2IbxQkcTs3xVsb+A26S7fi Ni0U7G8Lflm61AZEY/WtFwpSpi+ZeP6DpamQSZx0pLeke7svv/UufBfP6qIm/afXcdY8DDt9DN7 FzuxDGOPQiXQMLpBZembo3jN2UfrkPbvrDq5Mva8WlgPtT3bJ70qOPLskbOyzb6cPoa9UK1RMn+ SAMnJhae0ueQu0AaK/+8okJidaRDPtIjmhXrDU6npbO6p+O/WCHmY+u1RzImQYrndggVPuV9r4d v8wEICEAci5l6UVfRskLmQ1CbSeVHDsIYwYe+ X-Google-Smtp-Source: AGHT+IFAFET7HGfCWqmGxJ2/bmvyMn8AvMthMTMaEMNA3B6bzAEknoU2pFoPRvS0a5T9c5T7UWSZ2Q== X-Received: by 2002:a05:6a00:3d0f:b0:771:f520:f775 with SMTP id d2e1a72fcca58-771fd6329bamr4304075b3a.28.1756257089626; Tue, 26 Aug 2025 18:11:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 46/61] target/arm/hvf: Assert no 128-bit sysregs in hvf_arch_init_vcpu Date: Wed, 27 Aug 2025 11:04:37 +1000 Message-ID: <20250827010453.4059782-51-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257220032124101 Content-Type: text/plain; charset="utf-8" HVF has not yet enabled 128-bit system registers. Signed-off-by: Richard Henderson --- target/arm/hvf/hvf.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/target/arm/hvf/hvf.c b/target/arm/hvf/hvf.c index bda57614ed..c05e81b4e5 100644 --- a/target/arm/hvf/hvf.c +++ b/target/arm/hvf/hvf.c @@ -896,6 +896,9 @@ int hvf_arch_init_vcpu(CPUState *cpu) env->aarch64 =3D true; asm volatile("mrs %0, cntfrq_el0" : "=3Dr"(arm_cpu->gt_cntfrq_hz)); =20 + /* No support yet for FEAT_D128 */ + assert(arm_cpu->cpreg128_array_len =3D=3D 0); + /* Allocate enough space for our sysreg sync */ arm_cpu->cpreg_indexes =3D g_renew(uint64_t, arm_cpu->cpreg_indexes, sregs_match_len); @@ -919,6 +922,7 @@ int hvf_arch_init_vcpu(CPUState *cpu) =20 if (ri) { assert(!(ri->type & ARM_CP_NO_RAW)); + assert(!(ri->type & ARM_CP_128BIT)); arm_cpu->cpreg_indexes[sregs_cnt++] =3D kvm_id; } } --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257514; cv=none; d=zohomail.com; s=zohoarc; b=TdFI4ibcjZXWWILxJY4tJ8IQtSXkyW8tsnUlboYP3DlhSlpmqa5FWByqT7izxjVL/U1I3AedTEjG2oO0MKedSSSaGPnP4Swm919FhUErwSFLdAGrKPdPWCItpzpy+lecWD9S2TRk3VocGzUjFyCDYV5Omj6pEP72ceLu8i6NY+c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257514; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=T9UF9kwXsCF9XPGfLIekiKxdaKcYyBFch6OZM4B4BRw=; b=iTl52zA6c7as2gYgsqHP+AiUhBntbamtXVddJ/QIfaZerPkSi0zxjbXv5Ih8Jz5zynAM2lYbcqnpC6qottqX93L4u7fEPpOrkC1WHEwuvmhG0gSglG3qeCjaCqE8fSX5heinW5o+XsE5XWT8uMg97f3cYGmDUZQ6UxYukT4btic= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257514564269.06333087495125; Tue, 26 Aug 2025 18:18:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4jF-0003br-PK; Tue, 26 Aug 2025 21:13:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4hX-0001Fq-RR for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:49 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4hL-00009q-MY for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:46 -0400 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-76e6cbb991aso5482559b3a.1 for ; Tue, 26 Aug 2025 18:11:33 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257093; x=1756861893; darn=nongnu.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=T9UF9kwXsCF9XPGfLIekiKxdaKcYyBFch6OZM4B4BRw=; b=xwRGYWv7WQvWnmTf56qyvWEkGlDYhgiX/mnn9pyZRsfdEnd0E+qB8G7NXeEzIn11n0 7iN2vVuWIVBOQhr4E30qQAMDBwhvBu+vG7dcgh9AL8E4UujIb80ATQJSEhkan1WrRv0v YtdKjm4IQ3WxREzZ+msPQe2Ij5WLwTglZ6i/4fUlCVmpP2pM0drbUrupz15AxOt/Xfhk bNw14CLP/e6JgwS/E97ll0udphhoiqzszLnOIQqfMiDq7CEloKBIznNFpF6rHN3gjIaG zNNDOoa5Za/vzz1bWontdzaiOOkc6Zr+aOsLJD+UVU+rw1MHSMVwLCKjxRTDTIoDLLm+ 41pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257093; x=1756861893; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=T9UF9kwXsCF9XPGfLIekiKxdaKcYyBFch6OZM4B4BRw=; b=wmtTE5WoMXC7n2g1j2RDNBdKUiDJis6AId7YQa5QyxgGRwN+qg44nUa55QaIryYIYi zqz/tRZeaWp+KTf4z2fSOVLuTivmdknRuotPfZ/x6ICyZOAGwWT2+q75YlIRu/i9CdWw JwgyG6JGgxF3V7FHOK3igXl+NNPX/+5y598Rc7d1PRlsiMhqIWpW2+OT7Dod14uoRAkC btviAgt7bxywueEwQ3RU2jsWI2xtRlXYS0MEnE+YTe37D/uQxObfazyQLRZEM7LfALH6 nnq1lVpGRsTpVQ88MVWTR/y1EC4bs0RjZ3HK21AgLdkkIpRIGdw2w3n8f//lrISZnwdu cKkQ== X-Gm-Message-State: AOJu0Yxqi9AJqxF4X0a6X4cNbV9hWjs7gpRYSnSGNwsNILzgCZAEPdgg 3F/NJFNcYPtBNog/qZUdX2U6MwaFd4Lp6uDYgIB0Wat/1+G7gPUW6XnBLsgX90BAb9PQU1ddr2i zHCJVP9I= X-Gm-Gg: ASbGncvsrOx2nIv6f1TZLJckomhh+/8WkA3Mmd46YUFxNsgvTDegYQZoYfZPQsIE+P+ msu7hcjrjuXda3yD+SKl0hGM8w2kYWl5fhIPuCchh8nwbJpqh+m2ZpcTQFGxlxuvu0lcUoDdXvk SbANUy+EPw8vVmZjgRatNrHEniJxbujF9/louA/a3u/R35duebxHhC+SbrwaaYrstWvSCk8fp0s 8N3QeNLUOR2hKI7fjvCl4uVvkD8JwZleHClXB/WpmBVeIP5uYVm2d34vHMEG+PufHBhaeaKSlKq vc2w5SNCG9s1vIVKO+VqK5fXvM+N3cXjyCJJ3Meqjc/YHGfe94Pijxgq9dxar5+J+CPjLpK8e3M 5VIUNo2PKxIqzIhuFJSthWdsDqw== X-Google-Smtp-Source: AGHT+IF/mzYod4qjdc8jh/cuhqmtw6VGdJ9fnFM/FRHRUt5DojyjaDdxsRaJ55ygP+nmSAO1U+e7iA== X-Received: by 2002:a05:6a21:99aa:b0:21a:ecf5:ea71 with SMTP id adf61e73a8af0-24340b5b4cemr26504217637.15.1756257092735; Tue, 26 Aug 2025 18:11:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 47/61] migration: Add vmstate_info_int128 Date: Wed, 27 Aug 2025 11:04:38 +1000 Message-ID: <20250827010453.4059782-52-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::431; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x431.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257517479124100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/migration/vmstate.h | 1 + migration/vmstate-types.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/include/migration/vmstate.h b/include/migration/vmstate.h index 1ff7bd9ac4..3b3416c2c9 100644 --- a/include/migration/vmstate.h +++ b/include/migration/vmstate.h @@ -222,6 +222,7 @@ extern const VMStateInfo vmstate_info_int8; extern const VMStateInfo vmstate_info_int16; extern const VMStateInfo vmstate_info_int32; extern const VMStateInfo vmstate_info_int64; +extern const VMStateInfo vmstate_info_int128; =20 extern const VMStateInfo vmstate_info_uint8_equal; extern const VMStateInfo vmstate_info_uint16_equal; diff --git a/migration/vmstate-types.c b/migration/vmstate-types.c index 741a588b7e..1476c278e1 100644 --- a/migration/vmstate-types.c +++ b/migration/vmstate-types.c @@ -18,6 +18,7 @@ #include "migration/client-options.h" #include "qemu/error-report.h" #include "qemu/queue.h" +#include "qemu/int128.h" #include "trace.h" =20 /* bool */ @@ -193,6 +194,35 @@ const VMStateInfo vmstate_info_int64 =3D { .put =3D put_int64, }; =20 +/* 128 bit int */ + +static int get_int128(QEMUFile *f, void *pv, size_t size, + const VMStateField *field) +{ + Int128 *v =3D pv; + uint64_t hi, lo; + + qemu_get_be64s(f, &hi); + qemu_get_be64s(f, &lo); + *v =3D int128_make128(lo, hi); + return 0; +} + +static int put_int128(QEMUFile *f, void *pv, size_t size, + const VMStateField *field, JSONWriter *vmdesc) +{ + Int128 *v =3D pv; + qemu_put_be64(f, int128_gethi(*v)); + qemu_put_be64(f, int128_getlo(*v)); + return 0; +} + +const VMStateInfo vmstate_info_int128 =3D { + .name =3D "int128", + .get =3D get_int128, + .put =3D put_int128, +}; + /* 8 bit unsigned int */ =20 static int get_uint8(QEMUFile *f, void *pv, size_t size, --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257376; cv=none; d=zohomail.com; s=zohoarc; b=XYV0tswh7O0wPbYeJwhNyN3BWDsd/NjRBF6jM+WhBsNPtJHJfKyzPoArtRmqfsFvNneoLVeukCpDjzJLlOpwnWg5TJeFNPA03Mv6OiZ7i9E8xtuSfGDcHRT9kUGZOELu/Qn5/MfFA84h2ywi0A4z4wMjy/ShwiHLImIcjUng9Ho= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257376; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=NBOnBkxFaEwe2K3Bn4cTXQl/fQtmv3u9jbbXCvu41Ds=; b=gY5eZExSUG4scTnR8ZdULJvqCtGH8UXxikar0DJLkDW0j1E0LW48k3nSX3DquGGooqGftq95Rhx9Gaz9ldDhek0UyqKKwhYn3Ub9tOmH7OZG/xarbP+3NAbj6l698qk1Wxfp1uEhZJO6vyEK1gohPrIGYN9A+l9s/WO1+eqgvsU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257376495766.0421344768778; Tue, 26 Aug 2025 18:16:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4j6-00038w-NU; Tue, 26 Aug 2025 21:13:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4hd-0001TC-SZ for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:54 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4hP-0000Ap-Ur for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:53 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-24626e06f04so40715925ad.2 for ; Tue, 26 Aug 2025 18:11:37 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257096; x=1756861896; darn=nongnu.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=NBOnBkxFaEwe2K3Bn4cTXQl/fQtmv3u9jbbXCvu41Ds=; b=CV80/sSCt7fcdxW7SHqsAhpP0WvRn2SAnhwqWqd9xmyGY1CBuCo3jYaI7HdeTeIxU2 3PpN7JrrpzUrwDlzxjZfMSo9mIN6lck+bRkcK/vAHENofMxGZJCh0er3OaiKTrFIwE5a mYeq5pRs57nOszvmfPEKXuxvGlzDgXwSk9OC5tvz560IlQG5+ETNQpXWLzOT9oIAQy2n FM2+WZZ+j2AghYY4zTGfA5h/omm68iiCRIKEzkmB2hMTVUNTa7WpBAhkY+SxGh8nGW9G 9F1NURy7DmMqroeirMGOR++uYpz5j5RRmak13FldAwhls9gRKTUbBdnooqKZQbfuUbuq BwMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257096; x=1756861896; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NBOnBkxFaEwe2K3Bn4cTXQl/fQtmv3u9jbbXCvu41Ds=; b=Xf/TQR3Kqkioa5TRMk2uku4ioTSYuPrSqlxCYio2W948G7dXDHKDUHJzlAzCVTLk1p sDfMRmg184TNiX6lR+lL0ntPXN3aGyQ+gHO1grr0WDjaaLTDWPSEyxlxILMd1s4cEXal pwtZZHNs4apLTLC1qDqTUHQLtLBgo6pLvuAL4wWJdQ9UHrNb1B/KaEXUbsH+fzt6PQeM 1iRgIpZ1oDonpV4GfWOW//sZ98dCcJSJV0uhilS22G9YggzXz15azyl6JCb2YTfv4XrK 5+KYaBdLPHZv1ja304hxJQYxvYatDVnSQJD5i4pXid6GU+k5jZcI+sRvDcWRHAa+TlHI BbPg== X-Gm-Message-State: AOJu0YyD4budhoP8HtJ5TjSyy3lTGMZAL+sddI6K6Cjlr2RywqNcQ9Go MCTS7RoB04j951wf1dOBtFjHCGL1jxr0Npi81Nt4Uv1P+sG9CA3Gu8szEGjqwHbMuxFTK38EwvG Upw2VJBc= X-Gm-Gg: ASbGnctbFfRTcV07K+L78KDI/SAQzHVjSqIfz3PWtqRtz96YbtTLegkbzr8NQPuzh/X 6Zmp32LwJBX6HiPl2EREM91uizoDDzFyeyNKbMkV8xrAyyVsF/KjYy39iQA92qQz4OT8N9hY4bL al34d/zZw6zfiZ1+FtOmcRMaiXWBeZs3wmMSBCeZcrgFculm1s6+cQQr9QFm4IOAqnPc7Vw6ziC J3Wm+ikSDnNTJlP+7iI/JpGqdqjc/JD27fWXlulVt1v6/vfi7e9TwvgqVOe7hhDGhquP7SbgRJo yx2mwJczjreIU2wbcTPCKvfEUt7inUhlzuvhm4fsfZBLH1RrxOqVbN+yLCmFcACZA7gCnqUdkyf jmMbpj6ZS9BDxgElpgYrVaZorOqiGLEM21Ikr X-Google-Smtp-Source: AGHT+IH/zMfczHEuoM7jzSkWFJSo4yMbbQ7zHhsJ/G+n+LuTnOIoWsq+VUUjnfR0aMph1uP23F3TZw== X-Received: by 2002:a17:902:e784:b0:246:42a9:d38b with SMTP id d9443c01a7336-24642a9d45fmr162358605ad.21.1756257095733; Tue, 26 Aug 2025 18:11:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 48/61] target/arm: Migrate cpreg128 registers Date: Wed, 27 Aug 2025 11:04:39 +1000 Message-ID: <20250827010453.4059782-53-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257377589116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/machine.c | 50 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/target/arm/machine.c b/target/arm/machine.c index 6986915bee..35ff28cc30 100644 --- a/target/arm/machine.c +++ b/target/arm/machine.c @@ -868,6 +868,34 @@ static const VMStateInfo vmstate_powered_off =3D { .put =3D put_power, }; =20 +static bool sysreg128_needed(void *opaque) +{ + ARMCPU *cpu =3D opaque; + return cpu->cpreg128_array_len !=3D 0; +} + +static const VMStateDescription vmstate_sysreg128 =3D { + .name =3D "cpu/sysreg128", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D sysreg128_needed, + .fields =3D (const VMStateField[]) { + /* + * The length-check must come before the arrays to avoid + * incoming data possibly overflowing the array. + */ + VMSTATE_INT32_POSITIVE_LE(cpreg128_vmstate_array_len, ARMCPU), + VMSTATE_VARRAY_INT32(cpreg128_vmstate_indexes, ARMCPU, + cpreg128_vmstate_array_len, + 0, vmstate_info_uint64, uint64_t), + VMSTATE_VARRAY_INT32(cpreg128_vmstate_values, ARMCPU, + cpreg128_vmstate_array_len, + 0, vmstate_info_int128, Int128), + + VMSTATE_END_OF_LIST() + }, +}; + static int cpu_pre_save(void *opaque) { ARMCPU *cpu =3D opaque; @@ -900,6 +928,12 @@ static int cpu_pre_save(void *opaque) memcpy(cpu->cpreg_vmstate_values, cpu->cpreg_values, cpu->cpreg_array_len * sizeof(uint64_t)); =20 + cpu->cpreg128_vmstate_array_len =3D cpu->cpreg128_array_len; + memcpy(cpu->cpreg128_vmstate_indexes, cpu->cpreg128_indexes, + cpu->cpreg128_array_len * sizeof(uint64_t)); + memcpy(cpu->cpreg128_vmstate_values, cpu->cpreg128_values, + cpu->cpreg128_array_len * sizeof(Int128)); + return 0; } =20 @@ -994,6 +1028,21 @@ static int cpu_post_load(void *opaque, int version_id) v++; } =20 + for (i =3D 0, v =3D 0; i < cpu->cpreg128_array_len + && v < cpu->cpreg128_vmstate_array_len; i++) { + if (cpu->cpreg128_vmstate_indexes[v] > cpu->cpreg128_indexes[i]) { + /* register in our list but not incoming : skip it */ + continue; + } + if (cpu->cpreg128_vmstate_indexes[v] < cpu->cpreg128_indexes[i]) { + /* register in their list but not ours: fail migration */ + return -1; + } + /* matching register, copy the value over */ + cpu->cpreg128_values[i] =3D cpu->cpreg128_vmstate_values[v]; + v++; + } + if (kvm_enabled()) { if (!kvm_arm_cpu_post_load(cpu)) { return -1; @@ -1119,6 +1168,7 @@ const VMStateDescription vmstate_arm_cpu =3D { &vmstate_serror, &vmstate_irq_line_state, &vmstate_wfxt_timer, + &vmstate_sysreg128, NULL } }; --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257679; cv=none; d=zohomail.com; s=zohoarc; b=kf+57vJroi+/Af0v4oxrDlRWPEzIv0OHKUkmTMAU7AmFyr4e+BfsSD4Q8DoDdnAmxcrRIIFVicSuUiyGc50XaLcOZjypGQFOzlw7TZE1a1miw8Wx2ZOCgWDWQPOTErcOoTyqzO/uEfcmEZs8jOSRiUTd1WUgKBw2KpOTj4VnDsc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257679; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=l0SOJUj38Cm9fmgkJjIjX/37+2seZZfp+KIwKY3yN64=; b=M36GL9WUiCL1IYCqjJXZ/fKXv19QMLogZ5O/2/WUeovo7ZJl/WQIW/yqb0Jw3PGec9PNbjo3VMxz20L8uIKLCnIws7j3GLAIj+t8z330kexcJXpKB0QGSlDytP4rRFhz/+spRJW202AuzRzvhvLIVu0gjNCuG9bM2lPRCL43Z64= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257679218667.7319231966047; Tue, 26 Aug 2025 18:21:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4jL-00042l-LS; Tue, 26 Aug 2025 21:13:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4hb-0001M1-Bl for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:54 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4hR-0000CC-Vl for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:51 -0400 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-77053017462so2570445b3a.1 for ; Tue, 26 Aug 2025 18:11:41 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257100; x=1756861900; darn=nongnu.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=l0SOJUj38Cm9fmgkJjIjX/37+2seZZfp+KIwKY3yN64=; b=dEYHFAovoENHh3pcnJcpmgwkKgpyv9l5L29SCIYvfe2dkpf+IhG4Y/TX099Lp6LTPZ Ge89DgwwBuvXG2V4N4ip7jbW33l/GNYrDwkA0iaCs01/aS1vfSUToD3RnZbzhLJ5B5r0 wA1NaR5IDVP84et1U/6nDZv+u5pavs4IYwHa9VlHaz3lao1Qye/J77088ACJ9N9yPK/I O1W/yMfWRdnKavSlXf35KEWqY5hbc7x8w7Zy771BwwUv29TGSO+P4d4/9vmAlBfZvlN5 XLUyay74JEPsgxNi/YsoioIRRaRjufdG2I/IcmTL97IXT2WEf82Jcr9EQ+HzX2JE4jxM 3crw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257100; x=1756861900; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=l0SOJUj38Cm9fmgkJjIjX/37+2seZZfp+KIwKY3yN64=; b=Bl9YOfDIokOwDA46YeuPULiGK7pplfE4QzGHGAm66En6T9Bqt9QTzsleAoGwc1msxC NKCA/xEOSArbnyUQiMl/yYQjvLlI+5+VIJZ4lWCPZzymRpOCyYo0Jo+A/nXOY2I/I/FA AwnDscKSNL3BAmUG1AUjUtEyNnAVBl3HzFWWzn6ZZXNc+U6G1Af1Vvw4vOuaVdqGXnup zlXrEG7erZrcCPChJWyp9+ne0a5pW3I4hqPi3fa7MsI5XLFlNxQUDA7KoNvJEvJpEZLj L9V4zykcaAFVXC9VTm4Ur4pLrJRZwe02OY70KdTi8E7s1mf2uQWJm71/hOmGBGo5poIK RYSQ== X-Gm-Message-State: AOJu0YyKD+lEZZR3Ym7KoEyIhSR2t2QNFsKEkFQk5JoWUK1/mZl8pkyK ms8WuKQoG7p1f4lLGS9r+b4vBkZEw0qlwU3ZK8bHTi61Dzs0RyiOYFBlgFN9QhWlrotqSF7QNat zZuFwZQQ= X-Gm-Gg: ASbGncs2bPhJqgzobilfux9UDbpcHPM3fWwJcoC73uXRGZSGK0/WUh8aobdtSN1Tx7t dBXL7WQm1UubhOsP2ZkVJH3XvynPuGisgCsCgXFZaU9jnl7s3Tsv21YGbiNKiqGLfsXpJeoyIvf +VzH9ciYHQWwjoxDPqp7FFCiQLgAbMgtYBKj7eFoZmI4MzsLRaaDWfHTJuEHbSJLUv3ZIRlnAck VTvmWq5XuCLZkP6ABKc68J0bf3J8JTTHcboXk1BxqjQYMG5XgQt1EnVgKOYSsZHYo6LBLYIZWBl upuQhQ/cDQCGUFCRFXnLMD+k8AxtJXAJcmdVgrMJCCbZrkdL5HRC9+/4RPqzb22mS4GJ+AKPFmd dRiUI8Uge8hh8a9rx3Qe7UUa7XYHM47D+FDtD X-Google-Smtp-Source: AGHT+IEguu268E/bLNIFrGQE3A0kNMMNWLSwhR7II1EAMwXpC4yq+UDO8pOSB+99KDwMsnybCClzTg== X-Received: by 2002:a05:6a00:400d:b0:770:3b56:7939 with SMTP id d2e1a72fcca58-7703b568016mr18884173b3a.2.1756257099742; Tue, 26 Aug 2025 18:11:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 49/61] target/arm: Add syn_aa64_sysreg128trap Date: Wed, 27 Aug 2025 11:04:40 +1000 Message-ID: <20250827010453.4059782-54-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257681241116600 Content-Type: text/plain; charset="utf-8" System register access with MRRS/MSRR use a different exception class. Signed-off-by: Richard Henderson --- target/arm/syndrome.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/target/arm/syndrome.h b/target/arm/syndrome.h index c48d3b8587..c65678e820 100644 --- a/target/arm/syndrome.h +++ b/target/arm/syndrome.h @@ -45,6 +45,7 @@ enum arm_exception_class { EC_AA32_SVC =3D 0x11, EC_AA32_HVC =3D 0x12, EC_AA32_SMC =3D 0x13, + EC_SYSTEMREGISTER128TRAP =3D 0x14, EC_AA64_SVC =3D 0x15, EC_AA64_HVC =3D 0x16, EC_AA64_SMC =3D 0x17, @@ -169,6 +170,15 @@ static inline uint32_t syn_aa64_sysregtrap(int op0, in= t op1, int op2, | (crm << 1) | isread; } =20 +static inline uint32_t syn_aa64_sysreg128trap(int op0, int op1, int op2, + int crn, int crm, int rt, + int isread) +{ + return (EC_SYSTEMREGISTER128TRAP << ARM_EL_EC_SHIFT) | ARM_EL_IL + | (op0 << 20) | (op2 << 17) | (op1 << 14) | (crn << 10) | (rt << 5) + | (crm << 1) | isread; +} + static inline uint32_t syn_cp14_rt_trap(int cv, int cond, int opc1, int op= c2, int crn, int crm, int rt, int isre= ad, bool is_16bit) --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257276; cv=none; d=zohomail.com; s=zohoarc; b=kc2COmVq7sVTSU5fbDRMSh1+UejH5CKkV/10l6X2gJl8W/bh/OF547HX8DO9Hzd3giGhC67ifS5CBkvBLM0fz1hCEkqdLqeY/t3NzX18nzTatEOWwN5muh8P1sFMaQ/P31y0FRNfrq6E5tN6E9OD+B7xQEak/5IImHg+HXeb36Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257276; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=U5zRWZgnToutMzLlMb+7iuvcy8Qg5Qy4VHsxh6P34qc=; b=HG/zX7xX2d8PLaoMQ5K8MU32LJYHjG7b3mmaK5k/C/9fpwVettmQNYieC5Myc6TvMH80rBbs8bOpS9K8xSD/bojiOwrSs1MaTK35lvMoYcrmCUPHJHixCBdJ/Nxkd3VLfvPEh3C6GqLxDD+SjiPeH8ynPj5pJDFWV/5AR4HZp+g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257276904930.9504883661568; Tue, 26 Aug 2025 18:14:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4ib-0002R3-TF; Tue, 26 Aug 2025 21:12:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4hl-0001au-2G for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:03 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4hV-0000Dd-1g for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:56 -0400 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-76e4f2e4c40so5593416b3a.2 for ; Tue, 26 Aug 2025 18:11:43 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257102; x=1756861902; darn=nongnu.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=U5zRWZgnToutMzLlMb+7iuvcy8Qg5Qy4VHsxh6P34qc=; b=qdl5+6BGMG74Q4c004Jaoixp9o5Kjk9ijDDKeID9o2h2e3EZ4bAJcYvT6Ytn43JCyh 0R6JsEw/ep/nGLYJLcOkQVnVK1lHzpYBwrdtxsQXJpDHWde8lIVHo16oXszVv7BVdxEn i6un3tiAbAidrSN1xoewA4Pw8DyNcRXeNT7h+j/7BRxYuEzjSfifINLueapV/xwtg68e QZ2GaQEQSQ3Aq/LttsgB9+gErD+J2nzEJprBjIAm74NXX9a8Mf3pBN+0p9s/Nox83XEL EV3t1+ahd4gGVqCkvj/NecHE4AQvUxwI4LBt5WX7Qtne8UpiF3Shj1+HV0G3tionecbF KzEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257102; x=1756861902; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=U5zRWZgnToutMzLlMb+7iuvcy8Qg5Qy4VHsxh6P34qc=; b=Dhs2R0fA/JmzPciI8fSKK464bUiGptkkIw6Skmf+Fs5Y071VC3omcR8n+0y00Ds5ru 15O/AFVyNTfQTwl1J/2WqKgNDzY4HSCk9Tgh4L8GpXoDfldmqg3fzHG1TE5qjwP844oY BTeWzJYsBUlhAJTL2MOFL9znGgnRQteLWcmEABMSBt5erkI/7EeRx5xHzfsA1Y09pgp8 Wcdl61vj17Wpr/rYVYv8N4/vZusA4Z3C469W0XqvtfANBli67H53MDPDuUaZFPxV2gWp iRsrQX46D46g1m0cHlIMdMsSJcLs0YTgKGAuiGf8ZW5vGbDgWsfYNih98d85gKYT9sWi A0Ng== X-Gm-Message-State: AOJu0Yx0AQja7r3SzYZmSRxR1yG1b9tkI0J9zxrlerbpvhnkrrBhvYit f0FEtsAshQT7kEn9je3xX7f//IEuHrfgGtQxUxeTDXBUFcAE/sw6W386OnZGiPBqxPi6+cSbTRN 80gL+ojw= X-Gm-Gg: ASbGncvhgXbZlFzy7VFIfwn2jZKLSaSnL1aR/Xz54YtmVMyAnDAghBAaCA83T1v3Vsi UKs8KYxp2XYebeHDDQHuZMD3F3re5C2RJcXsurtvC3OL4ogoVQOs8NQ8Szw5eQJXw4UmipI4K0S q6n0qodX2O8G7TGA1bAPAx0yt5jWrwxtRtoY5ulLQ3GeXbJ+x9Cm2xGQQmTafiH0KGiobT+qz67 +a75OSqCWvk3lGpsfAV7Z7BRRuVBv8OzNr2eEz6Ogajs17977S28I9x6ujPn+2+TmwK0NeCV/Iu E5HuZ7lUIm+KOP0sQzZsd/5vfXYnezWeVMqgH/TDtoxCDup64A9lWS+q8Uexn73NvLYRPUG6rfC 8Q039hzwtLnRvFfI1KrC+EZnovcDH4EJ1DPYE X-Google-Smtp-Source: AGHT+IHmxIfZbrCHAe35cVtBbSlqOUD07ACd40KHOx2bENw4CzEVyKFFXdDDf88ecJEw6j0jEfCJXg== X-Received: by 2002:a05:6a00:234b:b0:770:4eff:a300 with SMTP id d2e1a72fcca58-7704effa4bamr15895697b3a.8.1756257102401; Tue, 26 Aug 2025 18:11:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 50/61] target/arm: Introduce helper_{get,set}_cp_reg128 Date: Wed, 27 Aug 2025 11:04:41 +1000 Message-ID: <20250827010453.4059782-55-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257278750124100 Content-Type: text/plain; charset="utf-8" Helper functions to invoke the write128fn and read128fn methods of ARMCPRegInfo. Signed-off-by: Richard Henderson --- target/arm/tcg/helper.h | 2 ++ target/arm/tcg/op_helper.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/target/arm/tcg/helper.h b/target/arm/tcg/helper.h index 4da32db902..82592d070d 100644 --- a/target/arm/tcg/helper.h +++ b/target/arm/tcg/helper.h @@ -90,6 +90,8 @@ DEF_HELPER_3(set_cp_reg, void, env, cptr, i32) DEF_HELPER_2(get_cp_reg, i32, env, cptr) DEF_HELPER_3(set_cp_reg64, void, env, cptr, i64) DEF_HELPER_2(get_cp_reg64, i64, env, cptr) +DEF_HELPER_3(set_cp_reg128, void, env, cptr, i128) +DEF_HELPER_2(get_cp_reg128, i128, env, cptr) =20 DEF_HELPER_2(get_r13_banked, i32, env, i32) DEF_HELPER_3(set_r13_banked, void, env, i32, i32) diff --git a/target/arm/tcg/op_helper.c b/target/arm/tcg/op_helper.c index 575e566280..a3ae175a45 100644 --- a/target/arm/tcg/op_helper.c +++ b/target/arm/tcg/op_helper.c @@ -1025,6 +1025,34 @@ uint64_t HELPER(get_cp_reg64)(CPUARMState *env, cons= t void *rip) return res; } =20 +void HELPER(set_cp_reg128)(CPUARMState *env, const void *rip, Int128 value) +{ + const ARMCPRegInfo *ri =3D rip; + + if (ri->type & ARM_CP_IO) { + bql_lock(); + ri->write128fn(env, ri, value); + bql_unlock(); + } else { + ri->write128fn(env, ri, value); + } +} + +Int128 HELPER(get_cp_reg128)(CPUARMState *env, const void *rip) +{ + const ARMCPRegInfo *ri =3D rip; + Int128 res; + + if (ri->type & ARM_CP_IO) { + bql_lock(); + res =3D ri->read128fn(env, ri); + bql_unlock(); + } else { + res =3D ri->read128fn(env, ri); + } + return res; +} + void HELPER(pre_hvc)(CPUARMState *env) { ARMCPU *cpu =3D env_archcpu(env); --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257904; cv=none; d=zohomail.com; s=zohoarc; b=gBlqnsahkrTVjguoAu+mjhqpW+IJipH0pQDGYaWB0QOiDBNlszrBxx07+UUclxwbURZNJh8nkysZMGDLyylYk5hVmegp7ToB0uK4GHc2y1sd6hDujauzn0fjTMDYqhJUMebAa8+AkEa8yNzxfBqSpdE6jYzPd2SuqBGQ9U9pSME= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257904; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=inxKoS3ZIgpEPKYL20PKMMMA4qeo4BWrUDyfXfGTfr0=; b=PPyiJzYzD656vD24rEAQKkavvVEISMCT36Qy5XKELTYz0v9VuJkM+qeF/sghUAeVvcCI+QS2upPxGt/qUIVROwIlLh4KWHjrgpms3wabZmm2mqcwjlr1hyj+4rHOK3Daf1/W5C0Gg4dKokU3eEBrcAkATVVrvDaTpElLcP6pVig= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257904523750.0299554237437; Tue, 26 Aug 2025 18:25:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4jT-0004vm-EB; Tue, 26 Aug 2025 21:13:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4hl-0001b1-2G for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:02 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4hZ-0000Ev-3e for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:59 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-771e1e64fbbso3803004b3a.3 for ; Tue, 26 Aug 2025 18:11:47 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257105; x=1756861905; darn=nongnu.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=inxKoS3ZIgpEPKYL20PKMMMA4qeo4BWrUDyfXfGTfr0=; b=iXXf38lqcG29WWPXKrxIHdFEFYFjsbieyfkKG0/pZP6/SwYSDgss/0HNJlpb3zIarH yyjRYkxi3rOoAH1fBy1ulZhNphsL3LwE6ruOKNt911wAYfE0iD+WLkWVb/gebFRsUG0E 3eo1MSWkxO4oItiD1J50uMsOYnkl2sKBQ1Ex+bjLh/47hw4vB97pEMtntJOuvmSo1hMN 6BDTV9QxhkeVnjQw+D6Vw2zPwbqkQrXvQoCAS483ba6KCJzR7a3wC19L7wuLxQyVV8JK P7Ul++tuYA9GzQtbtqkDlBCFKfra+NPrS25V2y4mmA5xBGYm/39WEucVjl7pc7JpcPwQ eZpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257105; x=1756861905; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=inxKoS3ZIgpEPKYL20PKMMMA4qeo4BWrUDyfXfGTfr0=; b=JSbRx2iWdP4ZITyCWAFSnHM4hFdZ5vsVNSxJpall/2YySNsIrvXMEr8m8EJJrNZHt/ BD6qrJhXYxRmCFZFfJc6TIaTVqWFWSSrAgQpzrVqXpW8SwdgnsF0QOnpRKOVZEdw516d NsTRqnlQK5OtOuhCJSy8rInum4WKZda8UP9uHSO6eyjCXcR37I+euYt9Z2Y6kP44NmOD vQH2S0Ys1CUb71JF9dyGMsFDdvzXYTD5mvTPrUXzEANBn8ExI3aaJq9Vgc8WX7EOrlhS QPcMOnNEZ14TkZvDoMf6nXSZNJWbE1ji2qhLbZYa6beyGcpDLKlJP8jbV/jMLvk7lLIj yGrw== X-Gm-Message-State: AOJu0YyeWTGCQsspJcjyiYpUDHwzx94oPGx8YGVDFJQekxGaX0MEaPsC k1mSYxwocHaOJyGmQjJDWS28dvjR4fPdmMoSJkCFIWEZ+p8Mc9Yv5rql9BEqs+hceq01XYESht3 l1AkJXac= X-Gm-Gg: ASbGncszZY1qOr9QDuvMp34hKpXaJbpAYQ1+ILxmIDARDJHRh63BfD6OKrxE47+HH2y WGZXTkTmQPjwZAsF5hHQL7xGvQE1SXNSdoEN1115yYF/bpxnQur8cKu7oetI8DzTeveWToJ7J7b RCdR/O+cwDTCcZ5qi7h56HU0iOR6sAk9HN/GIQkm+VkAMrNJoFCxHsKw9Jkt4L3L9GV1xp4D4/h fxMehSuP1dGWlLXAPDP2gkZCUKlScju09Jdq4ZJlO4NYg6K1tNSelnvrxyPgs75mzBOZLQzuGJH fzKzDPm1yI2pae6juQgTue1U5YezKX0I9A+uQ7oIteSmcOx+hBN7B+K3fmhPiECAwr8u3kc+Swd iHSIzUU4GlDYInnVR5iW1GsLTyA== X-Google-Smtp-Source: AGHT+IGU5dhhcwFxPJSWENllRprjdgPpDHUWy/Me0PmRiGYKG2F5bH+lvzOM7BqzbhkAcBsCaIn3xw== X-Received: by 2002:a05:6a00:13a6:b0:771:e4c6:10cc with SMTP id d2e1a72fcca58-771e4c6143bmr13477213b3a.6.1756257105125; Tue, 26 Aug 2025 18:11:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 51/61] target/arm: Implement MRRS, MSRR, SYSP Date: Wed, 27 Aug 2025 11:04:42 +1000 Message-ID: <20250827010453.4059782-56-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257905714116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/translate-a64.c | 162 +++++++++++++++++++++++++-------- target/arm/tcg/a64.decode | 12 ++- 2 files changed, 132 insertions(+), 42 deletions(-) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 7de8717056..2ec088b641 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2470,17 +2470,23 @@ redirect_cpreg(DisasContext *s, uint32_t key, bool = isread) =20 /* MRS - move from system register * MSR (register) - move to system register + * MRRS + * MSRR * SYS * SYSL + * SYSP * These are all essentially the same insn in 'read' and 'write' * versions, with varying op0 fields. + * + * RT2 is non-zero if and only if this is a 128-bit access. */ static void handle_sys(DisasContext *s, bool isread, unsigned int op0, unsigned int op1, unsigned int op= 2, - unsigned int crn, unsigned int crm, unsigned int rt) + unsigned int crn, unsigned int crm, unsigned int rt, + unsigned int rt2) { uint32_t key =3D ENCODE_AA64_CP_REG(op0, op1, crn, crm, op2); - const ARMCPRegInfo *ri =3D get_arm_cp_reginfo(s->cp_regs, key); + const ARMCPRegInfo *ri; bool need_exit_tb =3D false; bool nv_trap_to_el2 =3D false; bool nv_redirect_reg =3D false; @@ -2488,7 +2494,16 @@ static void handle_sys(DisasContext *s, bool isread, bool nv2_mem_redirect =3D false; TCGv_ptr tcg_ri =3D NULL; TCGv_i64 tcg_rt; - uint32_t syndrome =3D syn_aa64_sysregtrap(op0, op1, op2, crn, crm, rt,= isread); + uint32_t syndrome; + bool is128 =3D rt2 !=3D 0; + + if (is128) { + key |=3D CP_REG_AA64_128BIT_MASK; + syndrome =3D syn_aa64_sysreg128trap(op0, op1, op2, crn, crm, rt, i= sread); + } else { + syndrome =3D syn_aa64_sysregtrap(op0, op1, op2, crn, crm, rt, isre= ad); + } + ri =3D get_arm_cp_reginfo(s->cp_regs, key); =20 if (crn =3D=3D 11 || crn =3D=3D 15) { /* @@ -2508,12 +2523,14 @@ static void handle_sys(DisasContext *s, bool isread, } =20 if (!ri) { - /* Unknown register; this might be a guest error or a QEMU - * unimplemented feature. + /* + * Unknown register, or 128-bit access to a 64-bit register. + * This might be a guest error or a QEMU unimplemented feature. */ - qemu_log_mask(LOG_UNIMP, "%s access to unsupported AArch64 " + qemu_log_mask(LOG_UNIMP, "%s%s access to unsupported AArch64 " "system register op0:%d op1:%d crn:%d crm:%d op2:%d\= n", - isread ? "read" : "write", op0, op1, crn, crm, op2); + isread ? "read" : "write", is128 ? "128" : "", + op0, op1, crn, crm, op2); gen_sysreg_undef(s, isread, op0, op1, op2, crn, crm, rt); return; } @@ -2636,7 +2653,7 @@ static void handle_sys(DisasContext *s, bool isread, * We don't use the EL1 register's access function, and * fine-grained-traps on EL1 also do not apply here. */ - key =3D ENCODE_AA64_CP_REG(op0, 0, crn, crm, op2); + key &=3D ~CP_REG_ARM64_SYSREG_OP1_MASK; ri =3D redirect_cpreg(s, key, isread); /* * We might not have done an update_pc earlier, so check we don't @@ -2651,32 +2668,44 @@ static void handle_sys(DisasContext *s, bool isread, * This means it is not an IO operation, doesn't change hflags, * and need not end the TB, because it has no side effects. * - * The access is 64-bit single copy atomic, guaranteed aligned bec= ause - * of the definition of VCNR_EL2. Its endianness depends on - * SCTLR_EL2.EE, not on the data endianness of EL1. - * It is done under either the EL2 translation regime or the EL2&0 - * translation regime, depending on HCR_EL2.E2H. It behaves as if - * PSTATE.PAN is 0. + * The access is 64-bit (R_VFMQB) or 128-bit (R_BSBZP) single copy + * atomic, guaranteed aligned because of the definition of VCNR_EL= 2. + * Its endianness depends on SCTLR_EL2.EE, not on the data endiann= ess + * of EL1. It is done under either the EL2 translation regime or + * the EL2&0 translation regime, depending on HCR_EL2.E2H. + * It behaves as if PSTATE.PAN is 0. */ TCGv_i64 ptr =3D tcg_temp_new_i64(); - MemOp mop =3D MO_64 | MO_ALIGN | MO_ATOM_IFALIGN; + MemOp mop =3D MO_ALIGN | MO_ATOM_IFALIGN; ARMMMUIdx armmemidx =3D s->nv2_mem_e20 ? ARMMMUIdx_E20_2 : ARMMMUI= dx_E2; int memidx =3D arm_to_core_mmu_idx(armmemidx); - uint32_t syn; =20 mop |=3D (s->nv2_mem_be ? MO_BE : MO_LE); + disas_set_insn_syndrome(s, syn_data_abort_vncr(0, !isread, 0)); =20 tcg_gen_ld_i64(ptr, tcg_env, offsetof(CPUARMState, cp15.vncr_el2)); tcg_gen_addi_i64(ptr, ptr, (ri->nv2_redirect_offset & ~NV2_REDIR_FLAG_MASK)); - tcg_rt =3D cpu_reg(s, rt); =20 - syn =3D syn_data_abort_vncr(0, !isread, 0); - disas_set_insn_syndrome(s, syn); - if (isread) { - tcg_gen_qemu_ld_i64(tcg_rt, ptr, memidx, mop); + if (is128) { + TCGv_i128 t128 =3D tcg_temp_new_i128(); + + mop |=3D MO_128; + if (isread) { + tcg_gen_qemu_ld_i128(t128, ptr, memidx, mop); + tcg_gen_extr_i128_i64(cpu_reg(s, rt), cpu_reg(s, rt2), t12= 8); + } else { + tcg_gen_concat_i64_i128(t128, cpu_reg(s, rt), cpu_reg(s, r= t2)); + tcg_gen_qemu_st_i128(t128, ptr, memidx, mop); + } } else { - tcg_gen_qemu_st_i64(tcg_rt, ptr, memidx, mop); + mop |=3D MO_64; + tcg_rt =3D cpu_reg(s, rt); + if (isread) { + tcg_gen_qemu_ld_i64(tcg_rt, ptr, memidx, mop); + } else { + tcg_gen_qemu_st_i64(tcg_rt, ptr, memidx, mop); + } } return; } @@ -2772,28 +2801,56 @@ static void handle_sys(DisasContext *s, bool isread, =20 tcg_rt =3D cpu_reg(s, rt); =20 - if (isread) { - if (ri->type & ARM_CP_CONST) { - tcg_gen_movi_i64(tcg_rt, ri->resetvalue); - } else if (ri->readfn) { - if (!tcg_ri) { - tcg_ri =3D gen_lookup_cp_reg(key); + if (is128) { + TCGv_i64 tcg_rt2 =3D cpu_reg(s, rt2); + TCGv_i128 t128 =3D tcg_temp_new_i128(); + + assert(!(ri->type & ARM_CP_CONST)); + if (isread) { + if (ri->read128fn) { + if (!tcg_ri) { + tcg_ri =3D gen_lookup_cp_reg(key); + } + gen_helper_get_cp_reg128(t128, tcg_env, tcg_ri); + } else { + tcg_gen_ld_i128(t128, tcg_env, ri->fieldoffset); } - gen_helper_get_cp_reg64(tcg_rt, tcg_env, tcg_ri); + tcg_gen_extr_i128_i64(tcg_rt, tcg_rt2, t128); } else { - tcg_gen_ld_i64(tcg_rt, tcg_env, ri->fieldoffset); + tcg_gen_concat_i64_i128(t128, tcg_rt, tcg_rt2); + if (ri->write128fn) { + if (!tcg_ri) { + tcg_ri =3D gen_lookup_cp_reg(key); + } + gen_helper_set_cp_reg128(tcg_env, tcg_ri, t128); + } else { + tcg_gen_st_i128(t128, tcg_env, ri->fieldoffset); + } } } else { - if (ri->type & ARM_CP_CONST) { - /* If not forbidden by access permissions, treat as WI */ - return; - } else if (ri->writefn) { - if (!tcg_ri) { - tcg_ri =3D gen_lookup_cp_reg(key); + if (isread) { + if (ri->type & ARM_CP_CONST) { + tcg_gen_movi_i64(tcg_rt, ri->resetvalue); + } else if (ri->readfn) { + if (!tcg_ri) { + tcg_ri =3D gen_lookup_cp_reg(key); + } + gen_helper_get_cp_reg64(tcg_rt, tcg_env, tcg_ri); + } else { + tcg_gen_ld_i64(tcg_rt, tcg_env, ri->fieldoffset); } - gen_helper_set_cp_reg64(tcg_env, tcg_ri, tcg_rt); } else { - tcg_gen_st_i64(tcg_rt, tcg_env, ri->fieldoffset); + if (ri->type & ARM_CP_CONST) { + /* If not forbidden by access permissions, treat as WI */ + return; + } else if (ri->writefn) { + if (!tcg_ri) { + tcg_ri =3D gen_lookup_cp_reg(key); + } + gen_helper_set_cp_reg64(tcg_env, tcg_ri, tcg_rt); + } else { + tcg_gen_st_i64(tcg_rt, tcg_env, ri->fieldoffset); + } } } =20 @@ -2817,7 +2874,34 @@ static void handle_sys(DisasContext *s, bool isread, =20 static bool trans_SYS(DisasContext *s, arg_SYS *a) { - handle_sys(s, a->l, a->op0, a->op1, a->op2, a->crn, a->crm, a->rt); + handle_sys(s, a->l, a->op0, a->op1, a->op2, a->crn, a->crm, a->rt, 0); + return true; +} + +static bool trans_SYS128(DisasContext *s, arg_sys *a) +{ + if (!dc_isar_feature(aa64_sysreg128, s) || (a->rt & 1)) { + return false; + } + handle_sys(s, a->l, a->op0, a->op1, a->op2, a->crn, a->crm, + a->rt, a->rt + 1); + return true; +} + +static bool trans_SYSP(DisasContext *s, arg_sys *a) +{ + int rt2; + if (!dc_isar_feature(aa64_sysinstr128, s)) { + return false; + } + if (a->rt =3D=3D 31) { + rt2 =3D 31; + } else if (a->rt & 1) { + return false; + } else { + rt2 =3D a->rt + 1; + } + handle_sys(s, a->l, a->op0, a->op1, a->op2, a->crn, a->crm, a->rt, rt2= ); return true; } =20 diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 8c798cde2b..ef9086b6fe 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -290,9 +290,15 @@ MSR_i_SVCR 1101 0101 0000 0 011 0100 0 mask:2 imm= :1 011 11111 # same instruction as far as QEMU is concerned. # NB: op0 is bits [20:19], but op0=3D0b00 is other insns, so we have # to hand-decode it. -SYS 1101 0101 00 l:1 01 op1:3 crn:4 crm:4 op2:3 rt:5 op0=3D1 -SYS 1101 0101 00 l:1 10 op1:3 crn:4 crm:4 op2:3 rt:5 op0=3D2 -SYS 1101 0101 00 l:1 11 op1:3 crn:4 crm:4 op2:3 rt:5 op0=3D3 +&sys l op0 op1 op2 crn crm rt +SYS 1101 0101 00 l:1 01 op1:3 crn:4 crm:4 op2:3 rt:5 &sys op0= =3D1 +SYS 1101 0101 00 l:1 10 op1:3 crn:4 crm:4 op2:3 rt:5 &sys op0= =3D2 +SYS 1101 0101 00 l:1 11 op1:3 crn:4 crm:4 op2:3 rt:5 &sys op0= =3D3 + +# MRRS, MSRR +SYS128 1101 0101 01 l:1 10 op1:3 crn:4 crm:4 op2:3 rt:5 &sys op0= =3D2 +SYS128 1101 0101 01 l:1 11 op1:3 crn:4 crm:4 op2:3 rt:5 &sys op0= =3D3 +SYSP 1101 0101 01 0 01 op1:3 crn:4 crm:4 op2:3 rt:5 &sys op0= =3D1 l=3D0 =20 # Exception generation =20 --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257216; cv=none; d=zohomail.com; s=zohoarc; b=Um2rXuwjGuDa7opLYLFWg4u70XO9K7Za28KuQqkYlLDuwATzXjMptglpUiIVneJHUPYY7kBXRi2CByQ8Gb1cIppJ6/WpQpe2b3vn3oWjlgn1cOgV2qkIis8j8z5+Yd7hc5P4u7p3S0XwcXo2maglzMhhIJdkOTo4zBv9UrMDj5I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257216; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EAlJuQ7umZPgZ8d9w9IJxtJ1nYI4tOr6crCLs15bTxQ=; b=gAUCtf7gyYbF/t7/o8MMKWef0LDAGvXfNwbBLw2WLRKjNkz7BHQZeIGoSoumQyxzE0POPW7i/hqWeIBcbcJy/Yb4l5keUqXVizztA7FF2LzBBhnP5T4Cd/XcaMQRQS9zpKXnlQJs+Knqy+rHXhXIDFEGH9RqILO8Ro8F81UvJxA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257216603479.262750880692; Tue, 26 Aug 2025 18:13:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4ix-0002z8-If; Tue, 26 Aug 2025 21:13:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4hl-0001ax-1s for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:03 -0400 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4ha-0000GP-VM for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:11:58 -0400 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-771e1e64fbbso3803053b3a.3 for ; Tue, 26 Aug 2025 18:11:50 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257108; x=1756861908; darn=nongnu.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=EAlJuQ7umZPgZ8d9w9IJxtJ1nYI4tOr6crCLs15bTxQ=; b=cwfon6RR3Tbgb44niFr5ZMJdkSzBZ25PIMQ4+p4/OwhgIVjQC5HLKJphfKEYSloO9H AgKqequRgHfRD8tb5rHIZgUlDThdr4XoMvqr6ZKH0UsMz19DXju3UxXbtaTMegxxOQ3/ mUJ99i8ETV4mdMMRTDlYNoBG18IzeBR54g4J8kaiIvfj3h+Mjsk1tIw+sZATA4/cneH0 Z3ij7p0PJuYaVWauOQVCBeHP+QZkWYLKcFdi7SW2Mc1L6pX2SbRTubPik314RS7zm8LT XMD/Nu6v9wNZEkyK6PwRZcQgZO6JlQE2mr3TwpfXWHQtjIam/Hk9SNIvMjpTVSLtY2NB bDpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257108; x=1756861908; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EAlJuQ7umZPgZ8d9w9IJxtJ1nYI4tOr6crCLs15bTxQ=; b=hRyqKgwur03lBGvFKEUyy7OUSreiYjA31vjhhpBcUdv8xH8jQpPQGqzy4A8eprVosV bdeWv2Nm1q2fU4VmyY4wq4SWMFWQhThElDNPSN0Pzmt1e2ZvOMPQaQdiYnnvFPgwAk8M OHsckkUKd7Ck+a8r68qCtpIN3oE94pJReiNc3J9l0E2PLNDqcqx1ZqFQu0B+j72Dhluw 3Dh9N1T8YX+pxC1cI6YJs7dtxwXTNS6ogIfKzkzpifhjviqu8qpHEa3igUPKrDHVtKBN Bom+AnBGEsYLzUyrgqnDVsRVusoV8Rbr2MuWZcgcUeedh7WumTLdC6LvwEA3OtAC1W0O PGcA== X-Gm-Message-State: AOJu0Yx1U9EMdDje++ItotwbmqVxgAIVYK1g++it6bWNAlLfONx0dUDS 3J77Zn9t3uZuz83yKjHiczqma8n+eKE4OF0dKSJIfgu8WD1FTJ7yPGEcFD6GIMN5tNfSm9d/YXB QVbe4tKw= X-Gm-Gg: ASbGncv8BLlO7Ye8X8IWhwiYgavp0Z/hPsJitGIPzv5ZWWoLk3+qVbCiPoVp3jYm0in LCUccBKYXFiCX5FNW31LrquXsmKJ2fSdBpbFZ4BS0/lmKZQ9iuy3sM4zyMNMOop659aPwaIDnzO 3uwpdomBaghTPrlN+vfCgUu8JhITkXW5+wZa0RlGwWPHMHR/+22zO3Y0HseQxH69gLWUjE264NP xE09OBqR/5ZXqiWCz43K6DY0v8YwtOF7QLR+KA4d32x2gMyPWFoXrq6+aA/P6Cw5fP+9hmdxnMh vkdrAYSyNO2wLYrSv72jQwnDmtZWmVGfarPbLLj6DyjhP9wiBqzGWwWyZIt+ltjPMBc74a1WyW9 Cu3W5evaUIHDcE+JnFtRM3TNVUr4dOwAJic5S X-Google-Smtp-Source: AGHT+IFGPXbvstPDAZ/vjeoAnKKRWixgFQA5cRSsggDoL755/mC+3ErSJJ7zTGg6vdJM1sMZvzLa+Q== X-Received: by 2002:a05:6a00:13a6:b0:771:e4c6:10cc with SMTP id d2e1a72fcca58-771e4c6143bmr13477411b3a.6.1756257108275; Tue, 26 Aug 2025 18:11:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 52/61] include/qemu/compiler: Introduce HOST_ENDIAN_FIELDS Date: Wed, 27 Aug 2025 11:04:43 +1000 Message-ID: <20250827010453.4059782-57-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257218196124100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/qemu/compiler.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h index 1c2b673c05..4b9a8ff419 100644 --- a/include/qemu/compiler.h +++ b/include/qemu/compiler.h @@ -9,6 +9,17 @@ =20 #define HOST_BIG_ENDIAN (__BYTE_ORDER__ =3D=3D __ORDER_BIG_ENDIAN__) =20 +/* + * Place two fields, LO, HI, in the order that corresponds to + * the host-endian ordering. To be used when the pair will be + * visible through a union with a larger type. + */ +#if HOST_BIG_ENDIAN +#define HOST_ENDIAN_FIELDS(LO, HI) HI, LO +#else +#define HOST_ENDIAN_FIELDS(LO, HI) LO, HI +#endif + /* HOST_LONG_BITS is the size of a native pointer in bits. */ #define HOST_LONG_BITS (__SIZEOF_POINTER__ * 8) =20 --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257888; cv=none; d=zohomail.com; s=zohoarc; b=QfTPx3i+ZIyfhYkzkqxWJJTyW/2yKJ+Ro8ic1GHM0IFHgQ3b74lIsI1mUgh8lK/qylMWICKZQ+2wMkK1qEyHMwuonHd6S6gnMZ8ZhnBiSq0Ic/V4t2X2lyThB6373BR4Vu+9AZB3qr1BonfF1i7g6UGvEiygG8N/KidaTMl20JQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257888; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XsyjxtX0JYNFc0VvXMsSTJsOh4qPBkbGNiMGxVJ/tuo=; b=cIl3XAFx6IFoQmg/r/t/sKuAw65xb6oJGFj8IDKRD1anxG8aI9AhwGujQhvjrmY6H55m7eDR9/6Fo8EzftvKdxzCwrkAZuDZ2HB/1El5dCRzQPSUitAbs7opMIItzswOPF4NHbVStjGM+io1eDLgn+mWsITS4dFWxuaLQLEU4ys= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257888392985.0586458916677; Tue, 26 Aug 2025 18:24:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4jT-0004wo-Hz; Tue, 26 Aug 2025 21:13:47 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4hm-0001b5-2n for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:06 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4hd-0000H5-Uy for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:00 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-3254e80ba08so4479126a91.1 for ; Tue, 26 Aug 2025 18:11:52 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257111; x=1756861911; darn=nongnu.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=XsyjxtX0JYNFc0VvXMsSTJsOh4qPBkbGNiMGxVJ/tuo=; b=UZ+W2H6ye2MQacrGbniliOW8n19hVFs5iFrK8lq6fUz21aVu62cNUOE14dzSyuycsd AL9t0qPZxV+QdnYNypxJe9Kfwt9svHyk1z1tmI+2CRBu3NauFEQ8Hv/6vkimMFX+ePI+ CqtbNtAvNWuQ+au1B0QrrpVKX+VMf8dk9wzPNwVPKsyOo6wKi2N9oLboXudF1wKAr65s N1QkzPXGaGGlyCyeent2FRuPGPsQbDSVrvH6zisOVBQllo//+d3VRLfxcChpu64sFfFs GQp31QUbxFRFCk1JGhnS+8AwkZgXWD6O5DwTD4FYLeukNx0hg88CO5yG2HGg0qz7FCAJ D7Qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257111; x=1756861911; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XsyjxtX0JYNFc0VvXMsSTJsOh4qPBkbGNiMGxVJ/tuo=; b=McKAzaR9q6EHfEaAKqH614jq9cGu9BlPkzO/8aZreyVD9Y+DKi9ChpBYCXzThtT++w e+NrPYdDkqF4JCXVCZ4W3jnRM6licVwX49OkVEFxNosU9BMAtOKj9bZzORL8bzpzZWor IQ4LG5+EaIN7jrRezObQAqJuNVMEqOTcCR9Y5WD01jgEbCObSVop7kJ2nOsVLwprrG87 iAbuyvSQhOTMOyINGK6eJMpksHnEsDYpIoIYWaQYqIavEUGEy8R1o4mssr/xZpjinEjc XajKC4dOpYwshnq7HScoLMglEOpVRfd/DrY1attVZobSOrCz5d+TT3QdbOuFzPYkQHRA llbQ== X-Gm-Message-State: AOJu0Yx/4rIVwhOVMGk6u8ro8gXCh2qhZm2oJVeatLYv4Sk0lmO4owmS YwhVMrjf3fS98QmV4C2xrqbb98eJPRYH1Vj2bXFU0s+vcKBryRB7TZcfRed87THUEKe9vcp8XmY f2eCnurI= X-Gm-Gg: ASbGncuDoux2iojFum/cSsjaoajVd6csZzMo/bJ9Y1OhClHAZYqs6PdtpYHiui6bc1j NQBDl9pARy10CcrRT042UqoOhROEljb0s+omceoZ/DRwKfABibgS9tGNCyxY1Paxsb7Tn6ECEud fIIKTvYooayRZiY7Zs2n2e3pbOL5lsvkZor/jOx/MuO5h/sfYHeDQMSGtKfrMyutyClHzK+FWrz PV7OyI13dz4VWW/zwLDZmlr6ypjNM83BBVR0y8uSw7328DEnB9pSpGOLMrJuX5SUlODx0++2oUU sC7KL0d4Z0rHmK2aXa+0GJ3N/SiuI1iVbnHOyNbChfjzVUzXfTP9MKIQyZoOR7A6Dd7f1nY/eSG brQf+BzYVA8MGft3qQNs04OE1S5PDVyPFjYaD X-Google-Smtp-Source: AGHT+IFxAsRUdNyCVAI9FPmKLgxUmD4b08fvfwC9yLXeKkvxukf/slsZifs6KQskWixROMwKvKPKGg== X-Received: by 2002:a17:90b:384c:b0:324:ec53:138f with SMTP id 98e67ed59e1d1-32515efa487mr27532199a91.15.1756257110812; Tue, 26 Aug 2025 18:11:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 53/61] include/hw/core/cpu: Use HOST_ENDIAN_FIELDS in IcountDecr Date: Wed, 27 Aug 2025 11:04:44 +1000 Message-ID: <20250827010453.4059782-58-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257889690116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/hw/core/cpu.h | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h index 5eaf41a566..2c0edc2912 100644 --- a/include/hw/core/cpu.h +++ b/include/hw/core/cpu.h @@ -341,13 +341,7 @@ typedef struct CPUTLB { typedef union IcountDecr { uint32_t u32; struct { -#if HOST_BIG_ENDIAN - uint16_t high; - uint16_t low; -#else - uint16_t low; - uint16_t high; -#endif + uint16_t HOST_ENDIAN_FIELDS(low, high); } u16; } IcountDecr; =20 --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257910; cv=none; d=zohomail.com; s=zohoarc; b=LiBI/WitUvc0AkuBMxcqBU6x05pCU/iRq33aq+ZAKgeRsS9DW5NmiQsh9pyTPmGlEk44ijKoH+eaa+0YUXB6srIxCoRbpwtFvfp1O/+LuQR1M00fUI6V2Ya1FCWv27u7VDvza22vxBjzYB+OjHyyaB60Lvzvrc5+GJW1smGr0L8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257910; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xxE7jzMVEM5Ywa95KYNW7TydvGqPvjpMN/Env8Z0kps=; b=I2193zzlEygIi/u6aX/5O8yT1CRc8VFgxF+LojOAd2R68b3DTrpKnzdcq2piQTBa19/w1erpS0/8y2FG8rnMntf1mvl0a7CvB+yJCJvRA1e4K1vlpdS6btYMdpZTripIJPzTlbbH0aCTBx8ONolakoB9O3DcM2kiCI3QWFN++vM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257910642717.5322313722021; Tue, 26 Aug 2025 18:25:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4jd-0005wz-6V; Tue, 26 Aug 2025 21:13:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4hs-0001fO-DH for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:10 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4hk-0000Hm-OD for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:04 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-77033293ed8so4091424b3a.0 for ; Tue, 26 Aug 2025 18:11:56 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257114; x=1756861914; darn=nongnu.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=xxE7jzMVEM5Ywa95KYNW7TydvGqPvjpMN/Env8Z0kps=; b=M6AGBwz2l4TLIF4/QFGbZpI6z1voVojsfo4Oa0lPe8ZG4Dg4TVs0SMc0oriQvJaGpi sx5E/rv1nn0nPg1a4eDKdmkTNBzWMF+DrSYt2FP4gUXt6bc7Qd12wymk9+NbfIw1MNyb Ub9P2bRU4MVXhE0+2MRbxzEM2gqVUJlBYtWiRPmtvcUQK49INv2zDgnzQjWXGIsBkFUN R+fY4HM4A2+H/ogq/lYz85yrnBhKni6tZmc5hSLhpq2yM1J/xBApjbzCbsIpjL0dzOaN LbbHZDfbbtTMFDJFWxwXuEdBgxCWWnRTftb4UFc9Iq9gdwuU99ufZf5bdeH1ZIsK5o+9 6bdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257114; x=1756861914; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xxE7jzMVEM5Ywa95KYNW7TydvGqPvjpMN/Env8Z0kps=; b=UL2H9HFxDP1ORv19Jy7iwXK19xjEGh+paV9Cu/U9WkjijJGuYRRE7jHD44ZNGv3fLI obRfncG+9tVdvYbx2ljc19Ega7golS0NiIuFK3Czt7PT3cSVhK4Gn9NLQOVT1dihHrnM iH7OKwg4Lzdy0b8YKc+Uh0JLlU1xZJcnVu/P/bW2VpIm64VDlVbQ93Fbj1W9tkrHbq0/ WtbtAWXu/LlGBhP5gUT/elAaN46oufAbFpsD7YDwhLFymmSdkGZe6MXRKdOqF8/vG9dy zYypkR9BcSmBantf91BiUET3+Xhi7BcfsRp2M3Ypgpehyswt/M70GmNmAHc0WwEG1RvW L1IQ== X-Gm-Message-State: AOJu0Ywcmyd6cqx5EaeWzm9V4KZNcwhdebecpQ3MkM2ESM25XFSs6jlB 7ecCgIOEft6wBbec4QEDmUjgNEz/IffkO9PH+Qjo15eJCGFkG6eWqWjdS75/h2oxWJh7LhLTDLh j5XGAHGM= X-Gm-Gg: ASbGncsQgi4DQIadE5+tI5/G6brX0RmJGRL2ZHqGPrziGj9G5v1UpLV7rgfT24gGDCl ZRM/H/Qs1mDxr0s4nOxqidc4P2tbXcZQYkgeIgtVEvuusPY72CcYOqlD7xupFPlHAM4j8o4RcSU argHSyizJFwfKZK6vAqULuCUQfyqWXEDZ87lG5kDKUcD4sQXdv7iw7iLhU1roTPTD0+idVrKq8m m8RYjFjtQw/PgujJpu62ToKcwP/00CqFtfXwwOa7l6xMfZYmWzesa5AZh9iXejspG6vt8RX+HWH dKvc6IMbFghgxiO8UKh5qIFmR08ggzFALz3pt73UxbLriA2qnp2F9kgzZ+fPT/LN3dIQClZ9hMX LTxwSHDfZUR4PAw0vKwxKA4xkxA== X-Google-Smtp-Source: AGHT+IFqZnVJZBlP19HMJi4h4agGBy1DbroqnNQ96ykiiyHlt48HIhte6M23RjF5YxMiM2Z4J5tiAA== X-Received: by 2002:a05:6a00:6c8e:b0:76b:f318:2d41 with SMTP id d2e1a72fcca58-7702f9e0d45mr23278258b3a.7.1756257113806; Tue, 26 Aug 2025 18:11:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 54/61] include/qemu/host-utils: Use HOST_ENDIAN_FIELDS in muldiv64_rounding Date: Wed, 27 Aug 2025 11:04:45 +1000 Message-ID: <20250827010453.4059782-59-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257912234124100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/qemu/host-utils.h | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/include/qemu/host-utils.h b/include/qemu/host-utils.h index dd558589cb..5a7e623909 100644 --- a/include/qemu/host-utils.h +++ b/include/qemu/host-utils.h @@ -94,11 +94,7 @@ static inline uint64_t muldiv64_rounding(uint64_t a, uin= t32_t b, uint32_t c, union { uint64_t ll; struct { -#if HOST_BIG_ENDIAN - uint32_t high, low; -#else - uint32_t low, high; -#endif + uint32_t HOST_ENDIAN_FIELDS(low, high); } l; } u, res; uint64_t rl, rh; --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257679; cv=none; d=zohomail.com; s=zohoarc; b=lE5RQ3vVhBA8z9eI61br/LY//7jVhyrSpT1rmuyms0gZSsImp+e3BWnO4boLLTRkqIJ4dwzjVPdj2fvPQq6+xjq2Cx1ZQITV/C40Xlymr9c65oghRM82EUgftWjBnha6pI4IrtRb6srd++z5y35j4z8MhFzYq4Az/5ar7J5g2gU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257679; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vQHHk+GzKEpRVqMmwJWOgMPUrj9GLRl3kw24x6qPa5c=; b=H0/Hahp8D36/1ixZ7Lmx/FrUURwkb2Snac+DKVIakr0rS+FKxWreIA/J8KvsDg4O7+YOGOt2QvmS3ZBVHzPMWRxDyxS1tcoKfCNo+USg5EAFKVICK4rrvNWpXw/tmfiNEkfrS3yTCKlyLitO4ownIzD/4FNoYn6AWqIVto87WYw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257679090200.5324116974192; Tue, 26 Aug 2025 18:21:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4jL-00043b-Bb; Tue, 26 Aug 2025 21:13:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4hs-0001ff-LB for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:10 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4hk-0000IX-QO for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:08 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-76e6cbb991aso5482724b3a.1 for ; Tue, 26 Aug 2025 18:11:57 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257116; x=1756861916; darn=nongnu.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=vQHHk+GzKEpRVqMmwJWOgMPUrj9GLRl3kw24x6qPa5c=; b=l6H6DCB1ZqctJlSdZTVutlUn4Jd7udBbxXEgSnjfQKCJu9wBt/B/oBZPz4DQBmZOLO M/+AlxdoXInfXfe8XDArplhXGoY82evgfr+RAWFH/tDdo2FaT0onnw0rEosPlfyXSQHr V0Hc0OcCmO4eo+Sb7oXu4hQE+QVjycdPJJJ2MS/5EbGeNP6sslBlehz0Nl91vz2CW2pa 8URtsnwBV+pV+KsNYb+CX2JZaL7mIVU1kkRkdMf+WlF6+6vUEwnIav99wzMQ+6+i6OwO liZVSB8z9m65I+ibH+ZrPf48FPRGrjHupFP7ZGfLpkCYoxzlY+wbbdOB/NE2CaPMd3z5 emFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257116; x=1756861916; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vQHHk+GzKEpRVqMmwJWOgMPUrj9GLRl3kw24x6qPa5c=; b=wp1fdYlz/1gQmHBLTxWuZRpd819/8SVsdbBxpbUvhKWsrw22nM9nJxph8EfpF1C9Oc U+MulHevHuwPOiBVexy66TgdxOP7vHVObmLH3NZDj33hnthDumvUoqX8L1NzDddf7CRk 5aI8dIQ7U9oHyHul7HDTA8OuigZk2N+Ugk4Ep6ipqQImcSij3dWvzUa5qtt23sjJdtwl FeyRjuugxam0ZYzb4tZPXuUhZNj6odj4duyKqTyt/aFy1I4vabSg1Cg3oYNlrB2RMHcF EThIfIL1tWBpxHyMh/kSKZz9V3oN3us3YJlVccg6VlqbYvHKF6RLmekIG2jHXhCz4kkA DlzA== X-Gm-Message-State: AOJu0Yy4+z5cq5u12Zap3Lw2J8hK1rKnW9MvAP7pDPhAHFdKJfTI0iY1 MdtIopIFkAQRg+Rq1rmGRsZe1wuEIRj9rNnIvsVxxoOC/ya4lBV1z8zx13rpF8Yzgbp/wLqVh/D eHf4iXmk= X-Gm-Gg: ASbGncsW1ZAQm39DIW+gEeEciR3yZBE6svnNAyLz/V8Xo7maz7Qb+bdjpbpgePu4GfI gezB6x/ofLCLWMPVWeOvbeKd8Ye2VYB82xL0xobSWroWnD88FFjvY8aO9Rd0s6eWlDJe3TFd01z GmHAyUEdSDL38Qop4Szpx2fIG8LNv+VOTsEpntIaDqVnjL8QDbtA0d6/KqwdxTI8k5IeMQsVrVp rnqsaSE56enkz/aHan/6xSnwJ96A/9TeEuWfG4a98PsQbZnctbhpIqwn6I7wShssw8ISjttiBNF BPuSqxRHEV5lsxtRaAZYd/Re8VvLuQqtn1wK+IlZ4O9GbGsGh1pOoq6gh8QG4tEt41p45WLzq0p 1PMKui/K7kr072NL3VAAl1Eg1ncVPO6u1iiY+ X-Google-Smtp-Source: AGHT+IHIw1Rz5hAiaIfneDm2QDOaWkvGkeAaLtDGisvoniNCCIS80pgix2OB+9IsM6qSjsfVnfvnog== X-Received: by 2002:a05:6a00:4b4e:b0:771:ed83:557c with SMTP id d2e1a72fcca58-771ed835a5dmr8661681b3a.2.1756257116210; Tue, 26 Aug 2025 18:11:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 55/61] target/arm: Use HOST_ENDIAN_FIELDS in CPUARMState Date: Wed, 27 Aug 2025 11:04:46 +1000 Message-ID: <20250827010453.4059782-60-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.google.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257681352124100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu.h | 28 ++++------------------------ 1 file changed, 4 insertions(+), 24 deletions(-) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index a5a8779aba..f7b861c6d6 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -407,17 +407,8 @@ typedef struct CPUArchState { union { /* Fault address registers. */ struct { uint64_t _unused_far0; -#if HOST_BIG_ENDIAN - uint32_t ifar_ns; - uint32_t dfar_ns; - uint32_t ifar_s; - uint32_t dfar_s; -#else - uint32_t dfar_ns; - uint32_t ifar_ns; - uint32_t dfar_s; - uint32_t ifar_s; -#endif + uint32_t HOST_ENDIAN_FIELDS(dfar_ns, ifar_ns); + uint32_t HOST_ENDIAN_FIELDS(dfar_s, ifar_s); uint64_t _unused_far3; }; uint64_t far_el[4]; @@ -444,21 +435,10 @@ typedef struct CPUArchState { uint64_t c9_pminten; /* perf monitor interrupt enables */ union { /* Memory attribute redirection */ struct { -#if HOST_BIG_ENDIAN uint64_t _unused_mair_0; - uint32_t mair1_ns; - uint32_t mair0_ns; + uint32_t HOST_ENDIAN_FIELDS(mair0_ns, mair1_ns); uint64_t _unused_mair_1; - uint32_t mair1_s; - uint32_t mair0_s; -#else - uint64_t _unused_mair_0; - uint32_t mair0_ns; - uint32_t mair1_ns; - uint64_t _unused_mair_1; - uint32_t mair0_s; - uint32_t mair1_s; -#endif + uint32_t HOST_ENDIAN_FIELDS(mair0_s, mair1_s); }; uint64_t mair_el[4]; }; --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257611; cv=none; d=zohomail.com; s=zohoarc; b=XtwBMbsM2l6c0khm9YwsPx5Q2/14UqY5bTMb6ctfp38alRsZVmiLJDQw75BAv1Z/DVaeHXZTchqFd1XRiN4jqhrjysHaQGOK2uEiVH7qX1JDfEfhMpSDX8XwGPswsM4dCVY8x20kjoo9qbrqtpHJ5YmmIZAXE2ttAldJY6vSZlg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257611; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=FbQjJBUTfyF1LG/ZjQbeKDSBiuqkUEwYI9qrxKdqL20=; b=deQje/kJd5R51Pip06r1xbUHsoGXIXgJsTwo0OZoSBP/e5Y3VL219ffy7/8AmiekER0+njFkBL60CCT1i8QKRipzY48CSWIohfW76L8fjnqZwQeAP9yphSV26M/gjSFLpG5T0giAXm44/iA5f5puqmBWs7fNiTMfRoc9C6ZCdOg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257611704597.103307611602; Tue, 26 Aug 2025 18:20:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4jP-0004N6-FQ; Tue, 26 Aug 2025 21:13:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4hs-0001fl-VA for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:10 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4hk-0000Iy-WA for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:08 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-770522b34d1so377539b3a.1 for ; Tue, 26 Aug 2025 18:11:59 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:11:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257119; x=1756861919; darn=nongnu.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=FbQjJBUTfyF1LG/ZjQbeKDSBiuqkUEwYI9qrxKdqL20=; b=WHylZzt7AxKN5YJ+AhAfvx1qmdgVsXDBNeThGNtE+Dw41iJOdpT0nWxEQtNXtOuSbs VPob8XLKc0xDAxEeh+Zv8bIfEoJPoaamcZbZByXmHGf2yzA0J3K/fQx75npc9VO2e07i a+nklnx/KIkqDpNxxFoJjHOhSGAdwbjcw9QUiuBn2nsFhp3D0wPS6/PqNbGu4lRjFsa+ fuNNjwi/z1DoSQKkqT39uCHWQSfiT+P4XE8dTtZxN1k7RpCwDtrdPv1OFp43FD6KhV2G /DgGj+PWc/hOJjnvH4BGp9deOh865w2uVURKjLILo7CbBDxjnTnWLd3IkP6TPrG9Rbe/ ScCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257119; x=1756861919; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FbQjJBUTfyF1LG/ZjQbeKDSBiuqkUEwYI9qrxKdqL20=; b=L6dhDKWjBvLHHkY8IhDVVL4Ea56EThC+t+oHqbglCSnJY0ffkIv6zxeVJFKjYjvsuP LBny5sxFVqNUD812lDuPZ5DRhMfpA2PeZGN1G+el/4jupS9nYetGfM6KycKQMiuSGGuN FN5mShneOOgTU/oDycZNLcFLgmzIOv2kxHcmoLvnYAO/8ZEKee2LEHNIvQkQPzYkO+7I Qfi3HeFdllNRmMXQr/X3hTPFNiDP7FkdR4wc5vjgfJ/HoJVVTY30+4nga6vGwIF9u8PK Unl3SjLAEhnsN6i8q32GBvemtpM8vKGyOV3VaCdFcJgFujQxfIyFwS1H7MH9J7j1airx 8J+w== X-Gm-Message-State: AOJu0YyCmkc2rbOeL3VdIIf3JKVUDINxRCdsCmoACZPbFhecH7Df5AsE DI7jkqOOOzwmGrzrPZ9SgiBrwG1/PuTZol3HPbKxjzoB4UKzqtejRc6+Nb/uQ1m2W9mH1Cj/mdG g2uf19Lw= X-Gm-Gg: ASbGncux4D2MVX7St925LH9ObHA9qQmT7Ucxl4+mCZyIRoXqGEbFbbfa+i/05ticj+A R40mD2Yghljz2eNjRHy47N9mcSomUG69d15ovkZw9/nam3GLTFc+tHqPI00CDGTKNRG3UHwX/yV HYelqnVJPXl6ogzZg8q2gJDG0XYW033ZTNOWR5jd3+Zm0pzmP54xm2HPxnsTeDgB+g3SmApoMoA ewSnq4Wg6otQKAHfwjpQe9KqrMzQRpbGsBxsycttnrcDopiTUaYPg47poxq2h5id04CJuTlzCHM YgNn6eoiJh/kVfITPe+zWAaexW0Je+4uL1N+c+Je1IfwPYEBCFli7pTqi68L/X3HQFoBRpzuDxW XlXSJURVZPQOPIo9MWJI/iDs7KlaYVd8v2CwT X-Google-Smtp-Source: AGHT+IH6KcW1ePCJacwG41k8Q+hEkMj2EKJMYcBPybeyHgrW2G+hCAYAFQ67RkxHVO03u6VVbngTVQ== X-Received: by 2002:a05:6a20:12c8:b0:243:78a:82cd with SMTP id adf61e73a8af0-2438fad26d8mr4578125637.26.1756257118623; Tue, 26 Aug 2025 18:11:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 56/61] target/arm: Consolidate definitions of PAR Date: Wed, 27 Aug 2025 11:04:47 +1000 Message-ID: <20250827010453.4059782-61-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42e.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257612817116600 Content-Type: text/plain; charset="utf-8" Create a function define_par_register which handles the 3 distinct cases for PAR. It is easier to understand with the definitions all in one place. Make the aarch64 to be the primary definition, when present, rather than being an alias of the 64-bit non-secure aa32 reg. Remove the unnecessary .writefn from the aarch64 defintion, and drop it from the 32-bit definition with LPAE. Remove the LPAE test from par_write, since it will no longer be used in that situation. Signed-off-by: Richard Henderson --- target/arm/helper.c | 103 +++++++++++++++++++++++++++++++------------- 1 file changed, 73 insertions(+), 30 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 6f20d3986e..0282e41c59 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -2439,9 +2439,7 @@ static const ARMCPRegInfo gen_timer_ecv_cp_reginfo[] = =3D { =20 static void par_write(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t v= alue) { - if (arm_feature(env, ARM_FEATURE_LPAE)) { - raw_write(env, ri, value); - } else if (arm_feature(env, ARM_FEATURE_V7)) { + if (arm_feature(env, ARM_FEATURE_V7)) { raw_write(env, ri, value & 0xfffff6ff); } else { raw_write(env, ri, value & 0xfffff1ff); @@ -3235,10 +3233,11 @@ static const ARMCPRegInfo lpae_cp_reginfo[] =3D { { .name =3D "AMAIR1", .cp =3D 15, .crn =3D 10, .crm =3D 3, .opc1 =3D 0= , .opc2 =3D 1, .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .type =3D ARM_CP_CONST, .resetvalue =3D 0 }, - { .name =3D "PAR", .cp =3D 15, .crm =3D 7, .opc1 =3D 0, - .access =3D PL1_RW, .type =3D ARM_CP_64BIT, .resetvalue =3D 0, - .bank_fieldoffsets =3D { offsetof(CPUARMState, cp15.par_s), - offsetof(CPUARMState, cp15.par_ns)} }, + + /* + * The primary definitions of TTBR[01]_EL1 are in vmsa_cp_reginfo[]. + * Here we need only provide the 64-bit views for AArch32. + */ { .name =3D "TTBR0", .cp =3D 15, .crm =3D 2, .opc1 =3D 0, .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .type =3D ARM_CP_64BIT | ARM_CP_ALIAS, @@ -3253,6 +3252,71 @@ static const ARMCPRegInfo lpae_cp_reginfo[] =3D { .writefn =3D vmsa_ttbr_write, .raw_writefn =3D raw_write }, }; =20 +static void define_par_register(ARMCPU *cpu) +{ + /* + * For v8: + * The aarch64 reg is primary, since it might be 128-bit. + * The aarch32 64-bit non-secure reg is secondary to aa64. + * The aarch32 64-bit secure reg is primary. + * + * For v7: + * The aarch32 64-bit s+ns regs are primary. + * + * The aarch32 32-bit regs are secondary to one of the above, + * and we also don't expose them to gdb. + */ + static const ARMCPRegInfo parv8_reginfo =3D { + .name =3D "PAR_EL1", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 0, .crn =3D 7, .crm =3D 4, .opc2 =3D 0, + .access =3D PL1_RW, .fgt =3D FGT_PAR_EL1, + .fieldoffset =3D offsetof(CPUARMState, cp15.par_el[1]) + }; + + static ARMCPRegInfo par64_reginfo[2] =3D { + [0 ... 1] =3D { + .state =3D ARM_CP_STATE_AA32, + .cp =3D 15, .crm =3D 7, .opc1 =3D 0, + .type =3D ARM_CP_64BIT, .access =3D PL1_RW, + }, + [0].name =3D "PAR", + [0].secure =3D ARM_CP_SECSTATE_NS, + [0].fieldoffset =3D offsetof(CPUARMState, cp15.par_ns), + [1].name =3D "PAR_S", + [1].secure =3D ARM_CP_SECSTATE_S, + [1].fieldoffset =3D offsetof(CPUARMState, cp15.par_s), + }; + + static ARMCPRegInfo par32_reginfo =3D { + .name =3D "PAR", .state =3D ARM_CP_STATE_AA32, + .cp =3D 15, .crn =3D 7, .crm =3D 4, .opc1 =3D 0, .opc2 =3D 0, + .access =3D PL1_RW, .resetvalue =3D 0, + .bank_fieldoffsets =3D { offsetoflow32(CPUARMState, cp15.par_s), + offsetoflow32(CPUARMState, cp15.par_ns) }, + .writefn =3D par_write, + }; + + CPUARMState *env =3D &cpu->env; + + /* With only VAPA, define a 32-bit reg that filters bits from write. */ + if (!arm_feature(env, ARM_FEATURE_LPAE)) { + define_one_arm_cp_reg(cpu, &par32_reginfo); + return; + } + + /* With LPAE, the 32-bit regs are aliases of 64-bit regs. */ + par32_reginfo.type =3D ARM_CP_ALIAS | ARM_CP_NO_GDB; + par32_reginfo.writefn =3D NULL; + define_one_arm_cp_reg(cpu, &par32_reginfo); + + if (arm_feature(env, ARM_FEATURE_V8)) { + define_one_arm_cp_reg(cpu, &parv8_reginfo); + par64_reginfo[0].type |=3D ARM_CP_ALIAS; + } + + define_arm_cp_regs(cpu, par64_reginfo); +} + static uint64_t aa64_fpcr_read(CPUARMState *env, const ARMCPRegInfo *ri) { return vfp_get_fpcr(env); @@ -3710,13 +3774,6 @@ static const ARMCPRegInfo v8_cp_reginfo[] =3D { .opc0 =3D 1, .opc1 =3D 0, .crn =3D 7, .crm =3D 14, .opc2 =3D 2, .fgt =3D FGT_DCCISW, .access =3D PL1_W, .accessfn =3D access_tsw, .type =3D ARM_CP_NOP }, - { .name =3D "PAR_EL1", .state =3D ARM_CP_STATE_AA64, - .type =3D ARM_CP_ALIAS, - .opc0 =3D 3, .opc1 =3D 0, .crn =3D 7, .crm =3D 4, .opc2 =3D 0, - .access =3D PL1_RW, .resetvalue =3D 0, - .fgt =3D FGT_PAR_EL1, - .fieldoffset =3D offsetof(CPUARMState, cp15.par_el[1]), - .writefn =3D par_write }, /* 32 bit cache operations */ { .name =3D "ICIALLUIS", .cp =3D 15, .opc1 =3D 0, .crn =3D 7, .crm =3D= 1, .opc2 =3D 0, .type =3D ARM_CP_NOP, .access =3D PL1_W, .accessfn =3D access_ticab = }, @@ -6674,23 +6731,9 @@ void register_cp_regs_for_features(ARMCPU *cpu) define_one_arm_cp_reg(cpu, &gen_timer_cntpoff_reginfo); } #endif - if (arm_feature(env, ARM_FEATURE_VAPA)) { - ARMCPRegInfo vapa_cp_reginfo[] =3D { - { .name =3D "PAR", .cp =3D 15, .crn =3D 7, .crm =3D 4, .opc1 = =3D 0, .opc2 =3D 0, - .access =3D PL1_RW, .resetvalue =3D 0, - .bank_fieldoffsets =3D { offsetoflow32(CPUARMState, cp15.par= _s), - offsetoflow32(CPUARMState, cp15.par_n= s) }, - .writefn =3D par_write}, - }; =20 - /* - * When LPAE exists this 32-bit PAR register is an alias of the - * 64-bit AArch32 PAR register defined in lpae_cp_reginfo[] - */ - if (arm_feature(env, ARM_FEATURE_LPAE)) { - vapa_cp_reginfo[0].type =3D ARM_CP_ALIAS | ARM_CP_NO_GDB; - } - define_arm_cp_regs(cpu, vapa_cp_reginfo); + if (arm_feature(env, ARM_FEATURE_VAPA)) { + define_par_register(cpu); } if (arm_feature(env, ARM_FEATURE_CACHE_TEST_CLEAN)) { define_arm_cp_regs(cpu, cache_test_clean_cp_reginfo); --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257631; cv=none; d=zohomail.com; s=zohoarc; b=H+1gcXkUeysuWvrDPCwnvVeMoDlR+mIcOpJd4Fuzoc/riUFLuUWK+982bOQ1oVSuBuAUt7mNQGIyJ6p5MlUZXhjmhBkKYUfz8+J+3BFD1Bgzj9/c1baaMLmAZ3YikTMHyDWjAxIBQDTuB3hCNFr77SRdS+HwTfsJPcssgLArAnU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257631; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=yBSIyPR5+tmZH6nyR8nbv3qf1OhmXGnvq6KkWLsbNh4=; b=Vm9UmUnjDERglxz134/Gbwb28l8ZgkNNYl5lW22e/nVWwQpM/zMAy1LkTS4Vg5z27YvQdXfpKmNbgLJeL45K7/LmOqb5qz3vL3hXRGNA5AFE5n8+G27jm/+JbMC4jUt2sJjBhTVu+m1wzXwjF6/FVNKuBBEaI3vZU9LUdXT7k+E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257631234743.0395840305056; Tue, 26 Aug 2025 18:20:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4jb-0005vB-Tl; Tue, 26 Aug 2025 21:13:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4i7-0001uH-Kx for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:26 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4ho-0000Jo-JE for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:19 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-77057266cb8so2487954b3a.0 for ; Tue, 26 Aug 2025 18:12:02 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.11.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:12:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257121; x=1756861921; darn=nongnu.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=yBSIyPR5+tmZH6nyR8nbv3qf1OhmXGnvq6KkWLsbNh4=; b=KQgUly8wN8rWqaHbyE9dqhjQpFWUvesBONbBEAEM11m/aligILd6nHtaTOeNB6k51G Kg+X+KJRQtVhn4ZGCazoKk9E4+zUgp8mO6PoFZLHcvSGnutMKnCR8m6W53jXqFYzAfpA 3UzDRF1kwZhBbtxQqfEwneqqZ1WOu6qWhr6yh30ZSg91GwqYVnxu0hxrQFx8cPiUSER1 KTifIYDtuyXhXYZqEyoxnh3qtxKm4ztxdYsbXDU0xR/wuoJI5qpJhDWH3R74Sjh64+XN 1oiEUY0RXi8W4fy3jDpEVFd+Ktbd6s5U2thFKESTNGY0huxKWZnfhvH96Qxw7rI5Nn/+ EOeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257121; x=1756861921; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yBSIyPR5+tmZH6nyR8nbv3qf1OhmXGnvq6KkWLsbNh4=; b=HHXS5/kNjQTOj4IuwlG01YQorih/CK5hw24OcjcvepaIjypjn9dwwp72mTbSrDzANF n7P3FGXdS8M3VOfgK0Idx50jDY77XKtOzFpCSm+re9jvwHk1ATZRdBhqFHVkZ/c3GWO1 CsKoCjT0FxuZGGGbtoAQY6i757rj3urIUX19MIZZxcYKzVdpPX3JA8bpfISuDwtOQbqs gxKvLVpUWN2BY1PR1Y86gQNbrBMaOCGWdtX7oI1PtiCgv+qHHhJE00hxP0GKAE/L9EM1 04sLYnEsmdX8h6noCyx6iAjr1+OcMngTh2qeKDJwwPVaG3Uvdpk0hUEwbjesyH9H/Tqd h4FQ== X-Gm-Message-State: AOJu0YxpobMeupH7ULzuSk5b8NZ7u01dy6wcIPnJ6kPCcbYJcHyQUwQe Tr26ViBTKK4aLLmWxSOayRB7f1EIvLxiKmpJ3YbN4zcabXg/HrwWvk8DBYYc1TtWUOhlFnSY2QQ Y+GVihzU= X-Gm-Gg: ASbGncuQ8R0YNL/LqkGlYr3wzkn5hlH7lGY4egULKMKyZYjsX7GI4jUT4MjwjHxO1Af RpWMlJFDLaq+2Cokj+hdIu+UHBWKRg9hgv3oUHj5Gv+SJwQGr8kHoJHhWUBGuHb/yLQ6yfgirpg 48N+DPBDxAo+YcAbs7gvRF8up6rXb86nYjPi9a7IW5DyMstPX5eX9iM8pgBFllJU+PyPgYVnAmd z32iMxBfXSQv0Q+jkyfMAmPPvGdlFGTXEtx9uayP+tcI/HjRM5RUUBI/yX57qWr+xeBbMaallfL 9k20/TvKRLU4Ry/XWWLYdGzezo0CDJ+QKGN1PbTBVAXDLCRnz9xianF0W++BghVfbA62Z2f/gcY 8qzdcKaGUwcTvJUjj4uZ47/90+FJG8ogpV4PR X-Google-Smtp-Source: AGHT+IGIeTslXzJ8UeXaE4kTRZzume9aw9Fx+nWf67pV5apbFvk1a9dN6VuuRKAimrWKSsTQcXrcuQ== X-Received: by 2002:a05:6a00:a1e:b0:76b:dd2e:5b89 with SMTP id d2e1a72fcca58-7702f9d8b6cmr28718906b3a.6.1756257121070; Tue, 26 Aug 2025 18:12:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 57/61] target/arm: Extend PAR_EL1 to 128-bit Date: Wed, 27 Aug 2025 11:04:48 +1000 Message-ID: <20250827010453.4059782-62-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257632808124100 Content-Type: text/plain; charset="utf-8" So far, just extend the data type and check access; do not yet produce the 128-bit AT format result. Signed-off-by: Richard Henderson --- target/arm/cpu.h | 14 +++++++------- target/arm/internals.h | 1 + target/arm/helper.c | 17 ++++++++++++++++- target/arm/tcg/cpregs-at.c | 4 +++- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index f7b861c6d6..57e298363c 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -415,15 +415,14 @@ typedef struct CPUArchState { }; uint64_t hpfar_el2; uint64_t hstr_el2; - union { /* Translation result. */ + /* Translation result. */ + union { struct { - uint64_t _unused_par_0; - uint64_t par_ns; - uint64_t _unused_par_1; - uint64_t par_s; - }; - uint64_t par_el[4]; + uint64_t HOST_ENDIAN_FIELDS(par_ns, _unused_par_0); + }; /* aa32 */ + Int128 par_el1; /* aa64 */ }; + uint64_t par_s; /* aa32 */ =20 uint32_t c9_insn; /* Cache lockdown registers. */ uint32_t c9_data; @@ -1703,6 +1702,7 @@ static inline void xpsr_write(CPUARMState *env, uint3= 2_t val, uint32_t mask) #define SCR_HXEN (1ULL << 38) #define SCR_TRNDR (1ULL << 40) #define SCR_ENTP2 (1ULL << 41) +#define SCR_D128EN (1ULL << 47) #define SCR_GPF (1ULL << 48) #define SCR_NSE (1ULL << 62) =20 diff --git a/target/arm/internals.h b/target/arm/internals.h index 08e2acdb99..31934435db 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -232,6 +232,7 @@ FIELD(VTCR, SL2, 33, 1) #define HCRX_CMOW (1ULL << 9) #define HCRX_MCE2 (1ULL << 10) #define HCRX_MSCEN (1ULL << 11) +#define HCRX_D128EN (1ULL << 17) =20 #define HPFAR_NS (1ULL << 63) =20 diff --git a/target/arm/helper.c b/target/arm/helper.c index 0282e41c59..fb37d0674b 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -498,6 +498,20 @@ static CPAccessResult access_tacr(CPUARMState *env, co= nst ARMCPRegInfo *ri, return CP_ACCESS_OK; } =20 +static CPAccessResult access_d128(CPUARMState *env, const ARMCPRegInfo *ri, + bool isread) +{ + int el =3D arm_current_el(env); + + if (el <=3D 1 && !(arm_hcrx_el2_eff(env) & HCRX_D128EN)) { + return CP_ACCESS_TRAP_EL2; + } + if (el <=3D 2 && !(env->cp15.scr_el3 & SCR_D128EN)) { + return CP_ACCESS_TRAP_EL3; + } + return CP_ACCESS_OK; +} + static void dacr_write(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t = value) { ARMCPU *cpu =3D env_archcpu(env); @@ -3270,7 +3284,8 @@ static void define_par_register(ARMCPU *cpu) .name =3D "PAR_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 7, .crm =3D 4, .opc2 =3D 0, .access =3D PL1_RW, .fgt =3D FGT_PAR_EL1, - .fieldoffset =3D offsetof(CPUARMState, cp15.par_el[1]) + .type =3D ARM_CP_128BIT, .access128fn =3D access_d128, + .fieldoffset =3D offsetof(CPUARMState, cp15.par_el1) }; =20 static ARMCPRegInfo par64_reginfo[2] =3D { diff --git a/target/arm/tcg/cpregs-at.c b/target/arm/tcg/cpregs-at.c index 398a61d398..ebf5a04a11 100644 --- a/target/arm/tcg/cpregs-at.c +++ b/target/arm/tcg/cpregs-at.c @@ -322,6 +322,7 @@ static void ats_write64(CPUARMState *env, const ARMCPRe= gInfo *ri, bool regime_e20 =3D (hcr_el2 & (HCR_E2H | HCR_TGE)) =3D=3D (HCR_E2H | = HCR_TGE); bool for_el3 =3D false; ARMSecuritySpace ss; + uint64_t par64; =20 switch (ri->opc2 & 6) { case 0: @@ -359,7 +360,8 @@ static void ats_write64(CPUARMState *env, const ARMCPRe= gInfo *ri, } =20 ss =3D for_el3 ? arm_security_space(env) : arm_security_space_below_el= 3(env); - env->cp15.par_el[1] =3D do_ats_write(env, value, access_type, mmu_idx,= ss); + par64 =3D do_ats_write(env, value, access_type, mmu_idx, ss); + env->cp15.par_el1 =3D int128_make64(par64); } =20 static CPAccessResult ats_access(CPUARMState *env, const ARMCPRegInfo *ri, --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257860; cv=none; d=zohomail.com; s=zohoarc; b=Ejc2rdOu1TTqS57bXCZgS8F71n3Bhxd+c6RcjcJggm3CWBzWaHe0TL1+8iaZe4v21l9slFLYk27VaXAmedt9bcPuCbQEtt6vGxyV7MwWiYkf3f+ZtIf7jHLkRq2xvRXuL4I6XwXYSI9Hssrvlz2ufmjTiIBGo/zodrbzvAbITV4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257860; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=jag2QFFegs8XErUAZiv235hcNTVBDAqdG5eOQ1DkPIk=; b=k4OG6GDrLM0sFCx1X8ViKT63wXyh94OIttkSWFR+p0kwyl6T5Md//5RORCNzUMSjYaK9nfDAeGSXRZg+5dtfWH25igcmfS9T5oRcjfke725y9o+JsrHjADHZDmH6m8d6qhXu+9nIDEqfJYpLxIrW5FdzUWxuDa30AlESTHapKf8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257860320706.4182726862643; Tue, 26 Aug 2025 18:24:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4jW-0005Kt-9d; Tue, 26 Aug 2025 21:13:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4i1-0001od-O0 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:23 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4hr-0000KV-Hs for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:17 -0400 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-771e1e64fbbso3803261b3a.3 for ; Tue, 26 Aug 2025 18:12:05 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.12.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:12:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257124; x=1756861924; darn=nongnu.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=jag2QFFegs8XErUAZiv235hcNTVBDAqdG5eOQ1DkPIk=; b=tiDr2w8o7OtuRlo9cfefe6+cAcUG2E7KmLFWppuc18vcAxXUQOTgbVHyP1wiT6i5O8 i4tY0VQE9FHdVGOLsuUGwJyEOTbKaQHNK//Wx9Jg6N36BAQFhEsMDL7ePLt0ah1NHEDR PU3HUqZE3yYP7nXqQwZRllq0ttAOp8cQ9R+Cm3CXtC9uV0Krn6YoR9t3Axmr814C07uW vzrB/hvSybTUqAXVib9oNJ+50aHuW1eo+ct6Ut+/uqnJC8iQNsSwX1x/w4+VstlgUzon IXgOPuVfMsquTd1UIHeEC6iiaxMD5OEfALQt3JrRPteKo6gKMOmMvpg54mKN1nKBcWYA mRcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257124; x=1756861924; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jag2QFFegs8XErUAZiv235hcNTVBDAqdG5eOQ1DkPIk=; b=TjgzX75S+bsatuS8cikeE7EfrYSCOo1L+jPAKY98RrJJLmdubIAZIheCa1qS6o0k0D DRFEv20AFfV+s7KcDhPz2BHzZk4VuomFLZu+FvPsr9vGYtexEs7s8XR2HrSbHPOyn2mZ qn+JSNiWdiadE0ZFI4E/XhllLBRM81rrf/EBVsnBldEbAvem3nmKpzPgsqDmzRi7W01x no2d0SQNZ1xnE/Jeco2iZuYyIyRaFr6GT5t7LxbYjsF2HWyXWjuPttQbe5icIa6lMuSm EcZ5UgImV1Bpy/+/0JnPykWLEf0zQVmM5jcu6gRW5zDqg6AcoGS5sfyatmDBxL+zIOop fk3g== X-Gm-Message-State: AOJu0Yy0zPaJ+ClAB7MzlFLcCCXWz/HTyxt/U8lMZfkmV05X3ShfwPt0 GGP56C5Ex7kfRdfDZ/+yVH8RLhGtdrcQ9yUbhYHdsZ/S6aiO4OAzKeZoqwNvEVGbo/nQUNa70fx ZviAdNIw= X-Gm-Gg: ASbGnct1RWOyGZz5wptxuMqRMCjh92kfAyBYWVQHbXtwPPmoQm0Fi/8I4kPCCZjLsYi yBVuVVm/C776weYkwvXPPBCiJ2YtV5vrNU6uJD7YzvYEgtlLiQuD5hyKgS+wFMVRgd9aOT/PbOY uLbPrUalRTBCADQgMTnMjb/a6qTIqD8isM0YQ8N6aWAhg9KjovdTA12kWk6KKdxJ5D0cF+67O2u IqRgyuydIzh547oh8X8RfGzHO3+mL+wuZqloN6nIv+N4TE9/HZMvZLYo/OrcRmZCLB7fvuQll5T Xt1CRCV7t7U9N8mM1KeXYCwLfADzEMOoFoT5q8uB1X1iJfzUWL7V9UW9VGxxR09rVGGbKXDcyHg jkTRhebRP2pFNRhSt62ZUZKRgxQ== X-Google-Smtp-Source: AGHT+IESbQkQ5L46tC0tRmuAEwzdOmuAPoQSmp8OnZE3ZNwJTDwl90bhEdFtmJP6waSOp0k+MgS4cA== X-Received: by 2002:a05:6a20:5493:b0:243:78a:82a8 with SMTP id adf61e73a8af0-24340d5e384mr28514304637.48.1756257123945; Tue, 26 Aug 2025 18:12:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 58/61] target/arm: Consolidate definitions of TTBR[01] Date: Wed, 27 Aug 2025 11:04:49 +1000 Message-ID: <20250827010453.4059782-63-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257861842124100 Content-Type: text/plain; charset="utf-8" Create a function define_ttbr_register which handles the 3 distinct cases for TTBR[01] registers. Signed-off-by: Richard Henderson --- target/arm/helper.c | 165 +++++++++++++++++++++++++++++++------------- 1 file changed, 116 insertions(+), 49 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index fb37d0674b..3dde778369 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -2973,26 +2973,6 @@ static const ARMCPRegInfo vmsa_cp_reginfo[] =3D { .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 5, 2, 0), .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 5, 2, 0), .fieldoffset =3D offsetof(CPUARMState, cp15.esr_el[1]), .resetvalue = =3D 0, }, - { .name =3D "TTBR0_EL1", .state =3D ARM_CP_STATE_BOTH, - .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 0, .opc2 =3D 0, - .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, - .fgt =3D FGT_TTBR0_EL1, - .nv2_redirect_offset =3D 0x200 | NV2_REDIR_NV1, - .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 2, 0, 0), - .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 2, 0, 0), - .writefn =3D vmsa_ttbr_write, .resetvalue =3D 0, .raw_writefn =3D ra= w_write, - .bank_fieldoffsets =3D { offsetof(CPUARMState, cp15.ttbr0_s), - offsetof(CPUARMState, cp15.ttbr0_ns) } }, - { .name =3D "TTBR1_EL1", .state =3D ARM_CP_STATE_BOTH, - .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 0, .opc2 =3D 1, - .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, - .fgt =3D FGT_TTBR1_EL1, - .nv2_redirect_offset =3D 0x210 | NV2_REDIR_NV1, - .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 2, 0, 1), - .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 2, 0, 1), - .writefn =3D vmsa_ttbr_write, .resetvalue =3D 0, .raw_writefn =3D ra= w_write, - .bank_fieldoffsets =3D { offsetof(CPUARMState, cp15.ttbr1_s), - offsetof(CPUARMState, cp15.ttbr1_ns) } }, { .name =3D "TCR_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .crn =3D 2, .crm =3D 0, .opc1 =3D 0, .opc2 =3D 2, .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, @@ -3247,23 +3227,6 @@ static const ARMCPRegInfo lpae_cp_reginfo[] =3D { { .name =3D "AMAIR1", .cp =3D 15, .crn =3D 10, .crm =3D 3, .opc1 =3D 0= , .opc2 =3D 1, .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .type =3D ARM_CP_CONST, .resetvalue =3D 0 }, - - /* - * The primary definitions of TTBR[01]_EL1 are in vmsa_cp_reginfo[]. - * Here we need only provide the 64-bit views for AArch32. - */ - { .name =3D "TTBR0", .cp =3D 15, .crm =3D 2, .opc1 =3D 0, - .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, - .type =3D ARM_CP_64BIT | ARM_CP_ALIAS, - .bank_fieldoffsets =3D { offsetof(CPUARMState, cp15.ttbr0_s), - offsetof(CPUARMState, cp15.ttbr0_ns) }, - .writefn =3D vmsa_ttbr_write, .raw_writefn =3D raw_write }, - { .name =3D "TTBR1", .cp =3D 15, .crm =3D 2, .opc1 =3D 1, - .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, - .type =3D ARM_CP_64BIT | ARM_CP_ALIAS, - .bank_fieldoffsets =3D { offsetof(CPUARMState, cp15.ttbr1_s), - offsetof(CPUARMState, cp15.ttbr1_ns) }, - .writefn =3D vmsa_ttbr_write, .raw_writefn =3D raw_write }, }; =20 static void define_par_register(ARMCPU *cpu) @@ -3332,6 +3295,121 @@ static void define_par_register(ARMCPU *cpu) define_arm_cp_regs(cpu, par64_reginfo); } =20 +static void define_ttbr_registers(ARMCPU *cpu) +{ + /* + * For v8: + * The aarch64 regs are primary, since they might be 128-bit. + * The aarch32 64-bit non-secure regs are secondary to aa64 el1. + * The aarch32 64-bit httbr is secondary to aa64 el2. + * The aarch32 64-bit secure ttbr0 is secondary to aa64 el3. + * The aarch32 64-bit secure ttbr1 is primary. + * + * For v7: + * The aarch32 64-bit s+ns regs are primary. + * + * The aarch32 32-bit regs are secondary to one of the above, + * and we also don't expose them to gdb. + */ + static const ARMCPRegInfo ttbrv8_reginfo[] =3D { + { .name =3D "TTBR0_EL1", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 0, .opc2 =3D 0, + .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, + .fgt =3D FGT_TTBR0_EL1, + .nv2_redirect_offset =3D 0x200 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 2, 0, 0), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 2, 0, 0), + .writefn =3D vmsa_ttbr_write, .raw_writefn =3D raw_write, + .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr0_el[1]) }, + { .name =3D "TTBR1_EL1", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 0, .opc2 =3D 1, + .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, + .fgt =3D FGT_TTBR1_EL1, + .nv2_redirect_offset =3D 0x210 | NV2_REDIR_NV1, + .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 2, 0, 1), + .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 2, 0, 1), + .writefn =3D vmsa_ttbr_write, .raw_writefn =3D raw_write, + .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr1_el[1]) }, + { .name =3D "TTBR0_EL2", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 4, .crn =3D 2, .crm =3D 0, .opc2 =3D 0, + .access =3D PL2_RW, .resetvalue =3D 0, + .writefn =3D vmsa_tcr_ttbr_el2_write, .raw_writefn =3D raw_write, + .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr0_el[2]) }, + { .name =3D "TTBR0_EL3", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 6, .crn =3D 2, .crm =3D 0, .opc2 =3D 0, + .access =3D PL3_RW, .resetvalue =3D 0, + .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr0_el[3]) }, + }; + + static ARMCPRegInfo ttbr64_reginfo[] =3D { + [0 ... 3] =3D { + .cp =3D 15, .crm =3D 2, .type =3D ARM_CP_64BIT, + .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, + .writefn =3D vmsa_ttbr_write, .raw_writefn =3D raw_write + }, + [0 ... 1].opc1 =3D 0, + [0].name =3D "TTBR0", + [0].secure =3D ARM_CP_SECSTATE_NS, + [0].fieldoffset =3D offsetof(CPUARMState, cp15.ttbr0_ns), + [1].name =3D "TTBR0_S", + [1].secure =3D ARM_CP_SECSTATE_S, + [1].fieldoffset =3D offsetof(CPUARMState, cp15.ttbr0_s), + + [2 ... 3].opc1 =3D 1, + [2].name =3D "TTBR1", + [2].secure =3D ARM_CP_SECSTATE_NS, + [2].fieldoffset =3D offsetof(CPUARMState, cp15.ttbr1_ns), + [3].name =3D "TTBR1_S", + [3].secure =3D ARM_CP_SECSTATE_S, + [3].fieldoffset =3D offsetof(CPUARMState, cp15.ttbr1_s), + + [4] =3D { + .name =3D "HTTBR", .cp =3D 15, .crm =3D 2, .opc1 =3D 4, + .access =3D PL2_RW, .type =3D ARM_CP_64BIT, + .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr0_el[2]) + }, + }; + + static ARMCPRegInfo ttbr32_reginfo[] =3D { + { .name =3D "TTBR0", .cp =3D 15, .opc1 =3D 0, .crn =3D 2, .crm =3D= 0, .opc2 =3D 0, + .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, + .writefn =3D vmsa_ttbr_write, .raw_writefn =3D raw_write, + .bank_fieldoffsets =3D { offsetof(CPUARMState, cp15.ttbr0_s), + offsetof(CPUARMState, cp15.ttbr0_ns) } }, + { .name =3D "TTBR1", .cp =3D 15, .opc1 =3D 0, .crn =3D 2, .crm =3D= 0, .opc2 =3D 1, + .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, + .writefn =3D vmsa_ttbr_write, .raw_writefn =3D raw_write, + .bank_fieldoffsets =3D { offsetof(CPUARMState, cp15.ttbr1_s), + offsetof(CPUARMState, cp15.ttbr1_ns) } }, + }; + + CPUARMState *env =3D &cpu->env; + + /* With only VMSA, define a 32-bit reg that filters bits from write. */ + if (!arm_feature(env, ARM_FEATURE_LPAE)) { + define_arm_cp_regs(cpu, ttbr32_reginfo); + return; + } + + /* With LPAE, the 32-bit regs are aliases of 64-bit regs. */ + for (int i =3D 0; i < ARRAY_SIZE(ttbr32_reginfo); ++i) { + ttbr32_reginfo[i].type =3D ARM_CP_ALIAS | ARM_CP_NO_GDB; + } + define_arm_cp_regs(cpu, ttbr32_reginfo); + + if (arm_feature(env, ARM_FEATURE_V8)) { + define_arm_cp_regs(cpu, ttbrv8_reginfo); + + ttbr64_reginfo[0].type |=3D ARM_CP_ALIAS; + ttbr64_reginfo[1].type |=3D ARM_CP_ALIAS; + ttbr64_reginfo[2].type |=3D ARM_CP_ALIAS; + /* Index 3, TTBR1_S, is not an alias. */ + ttbr64_reginfo[4].type |=3D ARM_CP_ALIAS; + } + + define_arm_cp_regs(cpu, ttbr64_reginfo); +} + static uint64_t aa64_fpcr_read(CPUARMState *env, const ARMCPRegInfo *ri) { return vfp_get_fpcr(env); @@ -4386,14 +4464,6 @@ static const ARMCPRegInfo el2_cp_reginfo[] =3D { .access =3D PL2_RW, .resetvalue =3D 0, .nv2_redirect_offset =3D 0x90, .fieldoffset =3D offsetof(CPUARMState, cp15.tpidr_el[2]) }, - { .name =3D "TTBR0_EL2", .state =3D ARM_CP_STATE_AA64, - .opc0 =3D 3, .opc1 =3D 4, .crn =3D 2, .crm =3D 0, .opc2 =3D 0, - .access =3D PL2_RW, .resetvalue =3D 0, - .writefn =3D vmsa_tcr_ttbr_el2_write, .raw_writefn =3D raw_write, - .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr0_el[2]) }, - { .name =3D "HTTBR", .cp =3D 15, .opc1 =3D 4, .crm =3D 2, - .access =3D PL2_RW, .type =3D ARM_CP_64BIT | ARM_CP_ALIAS, - .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr0_el[2]) }, #ifndef CONFIG_USER_ONLY { .name =3D "CNTHCTL_EL2", .state =3D ARM_CP_STATE_BOTH, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 14, .crm =3D 1, .opc2 =3D 0, @@ -4578,10 +4648,6 @@ static const ARMCPRegInfo el3_cp_reginfo[] =3D { .access =3D PL1_RW, .accessfn =3D access_trap_aa32s_el1, .writefn =3D vbar_write, .resetvalue =3D 0, .fieldoffset =3D offsetof(CPUARMState, cp15.mvbar) }, - { .name =3D "TTBR0_EL3", .state =3D ARM_CP_STATE_AA64, - .opc0 =3D 3, .opc1 =3D 6, .crn =3D 2, .crm =3D 0, .opc2 =3D 0, - .access =3D PL3_RW, .resetvalue =3D 0, - .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr0_el[3]) }, { .name =3D "TCR_EL3", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 6, .crn =3D 2, .crm =3D 0, .opc2 =3D 2, .access =3D PL3_RW, @@ -6727,6 +6793,7 @@ void register_cp_regs_for_features(ARMCPU *cpu) } else { define_arm_cp_regs(cpu, vmsa_pmsa_cp_reginfo); define_arm_cp_regs(cpu, vmsa_cp_reginfo); + define_ttbr_registers(cpu); /* TTCBR2 is introduced with ARMv8.2-AA32HPD. */ if (cpu_isar_feature(aa32_hpd, cpu)) { define_one_arm_cp_reg(cpu, &ttbcr2_reginfo); --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257702; cv=none; d=zohomail.com; s=zohoarc; b=edP4AgaGL1iFgg/Ti0MrQoCHkkCvZnQvXjhvD9/A4oMn/3R/4bv2TOPaBMzBEqd6GHy0FUgOjjPMkOpgN9hHXEOhADhUXvhPioqz9VdaLjUJPQlJuyelLrxUgtiZtzUuMgV16bUqK9Wkg3DrTcCq5Zi33utksiiEa5iIHq+Wtxk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257702; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=RAmjouAdxbWZIhGVTm5xxs9AuY7ADuu5VQy/ar6fIhc=; b=Fl4azhMA3/94M9jIzxDq3KfMlRrvw+QjRvmzAKglvikTY7bm9orsCSXxAAbea4rqBsR+kg/mFUVU1yxzlUz2DDl34xmil2ZUXBib/9UoATESReLXv2FL/UjYm17aVzb6r4KTpMMDcGzuRBi/MXESHewsKANHcl/Dx5KY0QOw8qI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257702063112.2587852808017; Tue, 26 Aug 2025 18:21:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4jR-0004ms-HN; Tue, 26 Aug 2025 21:13:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4i3-0001p5-2s for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:22 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4ht-0000Kt-Jl for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:18 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-7718408baf7so3195926b3a.3 for ; Tue, 26 Aug 2025 18:12:09 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.12.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:12:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257126; x=1756861926; darn=nongnu.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=RAmjouAdxbWZIhGVTm5xxs9AuY7ADuu5VQy/ar6fIhc=; b=GBz/CiV6F1B9+gzZC8vWoZT//1dgjqwJrBV0LOU1fZrvh6rW6mqt/TF7rIeoODF+5M fWUQAVIMiAAOH+UU/QQxMjqL4jEmlub1CLArvkps3sEou2s5vK0TlJoWfc0891hMBj++ 5OMqo90a03bUjensEKoCM0gQs9mBupYnMOU9iuE/c4C76d+pUlR9A52e81m0cwIR0SYD tnOKBYo6Pjt6FkajygAliWCDMovYU1SyCmCDBteOE5K9pP12wBlFBcNiHgOS6snvI7Vs bmTtKZi8y7EkvI4Kwj5yhT6HjxeWOZepkrpTODgYM789p51cnM0blMNKRqMv1WJRSOo0 vLOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257126; x=1756861926; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RAmjouAdxbWZIhGVTm5xxs9AuY7ADuu5VQy/ar6fIhc=; b=vZhsCFlszJZa+NNt0XQ0wpxd+QMLW0CS3XglAk1TAjmAlbXiVQ23qHmZiv/h7CRk4F a8po1sVE+aTb7PG16wuIA3uiDPbtRBxn43iQEsFVPiP/hAF2pamenXdU74QXfVnS+N+T gJw9pU9jDm+sr6Z2GJK5sLYKmH6im0YHhhrkWwC7Bv/nbPt498kjkw686xA3KYsJymTp rvLQ9j605xwTRNueK7ei658PWJOqpJQc7WzTvIRLMHFEoWHcpKB5IU8ahp2kNaFT9Ic0 nLQB0J8FRJbs8w9GYvW7ZLAhkUfDaAJ6uXPCcsJ2xKvjXQT0wiEvS4SXi7SK8YtWlQu+ hCKw== X-Gm-Message-State: AOJu0YwDDUIkMDACVJXMqBVYPMeFWt3+7Xlf1LVNT/z90X7daFXvxL6A 3kl10A6WxNAnVpTCHnDKREfzz1idGuidMfld7tVtAoOihVWK8L5AeoAMtbFXj2Dl5Ry0gl3Xb1f M/HHFDek= X-Gm-Gg: ASbGncsAx3Vxc34i2ww+Z8dHtgtYb1lb8NDqtz7j3c8KvA9FuBv02/1JNSXaW+f3p3z zbLI0jnIxPGB2W/hJPkIo2rCUq6geYJKMM0oS8Xk+/XRpIRLEGY1lrdeTrvQKXby0p2rPo+oFbB IqvniIhzcEV9gJ8kWi9FicDRsyidwPBmBgCnLeQvcJNc1vtcmfKKuSVwGwxiNDPsrewVoIDe+4a pH26IOfUHBv27MLuHu8tsBJiz9Du7iJ0h0j3M4ox9e+h6qE+6ErWJkSghQe5/qXf5v9VANpEIvC gB9nOIjYINe6sk/bkVYZgwcRcSx2Z+/qCVuvFXA67BE7mDl0HCRqHJT7aRG6kEWgeZp/EffTYSR kpSdst2sfARyORjk9WSH4ApodI2GELOBfJUGW X-Google-Smtp-Source: AGHT+IEDe1DmdxJj0gTYj51v6y56Jh/UPtgqAu9YwvRXI5lPmhHWkPvk1tzVI+KnBLWuxraa1Fa4DA== X-Received: by 2002:a05:6a00:2d90:b0:772:3c9:ce3e with SMTP id d2e1a72fcca58-77203c9d114mr2492254b3a.7.1756257126338; Tue, 26 Aug 2025 18:12:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 59/61] target/arm: Split out flush_if_asid_change Date: Wed, 27 Aug 2025 11:04:50 +1000 Message-ID: <20250827010453.4059782-64-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, 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: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257703531116600 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/helper.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 3dde778369..7a817b7e28 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -2893,6 +2893,15 @@ static void vmsa_tcr_el12_write(CPUARMState *env, co= nst ARMCPRegInfo *ri, raw_write(env, ri, value); } =20 +static void flush_if_asid_change(CPUARMState *env, uint64_t old, + uint64_t new, unsigned mask) +{ + /* The ASID or VMID is in bits [63:48]. */ + if ((old ^ new) >> 48) { + tlb_flush_by_mmuidx(env_cpu(env), mask); + } +} + static void vmsa_ttbr_write(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value) { @@ -2914,12 +2923,11 @@ static void vmsa_tcr_ttbr_el2_write(CPUARMState *en= v, const ARMCPRegInfo *ri, * TCR_EL2.A1 to know if this is really the TTBRx_EL2 that * holds the active ASID, only checking the field that might. */ - if (extract64(raw_read(env, ri) ^ value, 48, 16) && - (arm_hcr_el2_eff(env) & HCR_E2H)) { - uint16_t mask =3D ARMMMUIdxBit_E20_2 | - ARMMMUIdxBit_E20_2_PAN | - ARMMMUIdxBit_E20_0; - tlb_flush_by_mmuidx(env_cpu(env), mask); + if (arm_hcr_el2_eff(env) & HCR_E2H) { + flush_if_asid_change(env, raw_read(env, ri), value, + ARMMMUIdxBit_E20_2 | + ARMMMUIdxBit_E20_2_PAN | + ARMMMUIdxBit_E20_0); } raw_write(env, ri, value); } @@ -2927,16 +2935,11 @@ static void vmsa_tcr_ttbr_el2_write(CPUARMState *en= v, const ARMCPRegInfo *ri, static void vttbr_write(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value) { - ARMCPU *cpu =3D env_archcpu(env); - CPUState *cs =3D CPU(cpu); - /* * A change in VMID to the stage2 page table (Stage2) invalidates * the stage2 and combined stage 1&2 tlbs (EL10_1 and EL10_0). */ - if (extract64(raw_read(env, ri) ^ value, 48, 16) !=3D 0) { - tlb_flush_by_mmuidx(cs, alle1_tlbmask(env)); - } + flush_if_asid_change(env, raw_read(env, ri), value, alle1_tlbmask(env)= ); raw_write(env, ri, value); } =20 --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257636; cv=none; d=zohomail.com; s=zohoarc; b=hbayPMSPUguIR6ng9ueodELUixq7RRA31MbyTmzppUnI49Uv5lkVMyK9sOa1UVD3mSVJgqhGI+wpduqbpZHh+aivFjBBV08/BI4cJoAJym5Dhlr06hLJ8JPE05mJlKw9HMrBh0c0CqVq6kX/zOKTUIk6DOD4vyXq7sxD75xFCRs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257636; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pDOTLVphgVXgLeL+z+5CezA41FUxIfsaonuBX/UWhqU=; b=cRFceZ7BUwTTOdAXa2xFs/90xctV1L97XyPtjAAHPQIZG0UkDteisYzvgoLirau8Kj/ZZk9SktJHH6lF5RglqAKExD7WlkEcoTbfwhlCbclssKGjY0eS8yDKTOnLGc+q6iCuqeJH0zR26PvLZRuZmoetoNGmBuLnNAkhN6BY8NU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257636944128.41334367590764; Tue, 26 Aug 2025 18:20:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4ji-0006e8-9j; Tue, 26 Aug 2025 21:14:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4i7-0001uN-L7 for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:26 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4hw-0000Le-Td for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:23 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-76e2eb6d07bso5421814b3a.3 for ; Tue, 26 Aug 2025 18:12:10 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.12.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:12:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257129; x=1756861929; darn=nongnu.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=pDOTLVphgVXgLeL+z+5CezA41FUxIfsaonuBX/UWhqU=; b=dXG3rzWY6EFBFK80pnay/T+XFHgICQWzSAYwhxpwjATVuMrddSGE7H1sLP2WKylMmd 3Or2FUV2bUZrCHDrYL0/lv78vEScTP5Y97jaB0EuTT/x4OIKVEScjx19dLFL47BwpHCG zREtCvdE0k7r7tHv/A6dtcPQSo6RTamUODJ+e4LNojKqJPA4j+xGNCW2uNm/HVKY/Ula Vl5QAL9zgjA5c2mfXccg9XFEyIZEGxX6P1UG+4yMT71ptgJVlMDK0VBkwYv6sWFnM2NH KCD7WUif/C0zCdeaSmPuFZVNiBsfHAoP+IrQYkXP3UHj2PMeVZ3JUo9obx5v854cZFcA MP4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257129; x=1756861929; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pDOTLVphgVXgLeL+z+5CezA41FUxIfsaonuBX/UWhqU=; b=H6CKCZQD5vEKyu4q2H6HAhIQvoSiHb8BGZgHm1vSXRI/oo2iJwJyaULy2jmJTxMwIm OWWbzoUdbtrgwjFQzcFwYKYO4V3Tp/WxEuAEtAHDAZb8LwJEQraWKpdgQuQeG+oajbzm E3za5TddP9omJjxJJ9/NSvHx7hu+9v1Nt31lulqGjiVHIjP0Y/cBpSVlsC4yLdoObjlW x3b3+DQmBBzSD14Qq8kCgPD0sviq24Y2RD8VvcQ8ghSdrdVjttFP+yyq58SQE8R150Y8 Oj4yFW5uEEwyqSD8rKB4SlzaGDOCGNrNAHxQuUSnEl/P24dbKdeTcoDAGaVI701O179P mtZg== X-Gm-Message-State: AOJu0Ywrz0wkI9rkNYJU5sDQ45Z1EZ0YaICSwRH7uuPj1rakAzS3RY7w TmKezgrzO44vpcfV9pXtijlRdohOQek0MYDkcmNP23o2ZWz0ic9ek65LK24Ie2QYnXumqRRWWkR EOZdd8/8= X-Gm-Gg: ASbGnctVq6iDyi/N4Yx3g5r0CK0LxA8v3zg4exllgU/MSJDMNtFCE2gZOZoXknpAVcm /XKsf94QpDJj5loRekrNSj2PBkj9xWD80Gd/TRBnenT1yD5SzBa7hgTUuhnSiYmZ2EBOQ/wl4r7 FcohGiEHt2Q4eZvTKxeS07OKOQZGaqnaKJvxs7Rfzv4zy0TcX6ISXKRB8psXf4EAXhPJal0kyje UkHB/6gnK3ncioJfVSqmoFmbFOlOX9tAgMxnjMcs+fFPWVour0wRBvSfcPz+Y6NDm9nGVy09Xhb 9ni1xcYqsmzEgJ41DpGIiQjOmGhVSwE0NghwFI3kWVn6/2AVN0E90vcKEu/B7EKkUL5d9m176Mn f4g1dnacpYxuC3MAMLsry4BtQj8ah211Bv3dK3mJQa3k/yno= X-Google-Smtp-Source: AGHT+IHkvPzlsHRjbdwa8TI2phDF0fj0jfI3equ/eCUDEMFG3/IINONLaupU6hyDUUFhsEpWU1WcHQ== X-Received: by 2002:a05:6a20:1b2f:b0:243:70d4:c597 with SMTP id adf61e73a8af0-24370d4d473mr9628045637.44.1756257129224; Tue, 26 Aug 2025 18:12:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 60/61] target/arm: Use flush_if_asid_change in vmsa_ttbr_write Date: Wed, 27 Aug 2025 11:04:51 +1000 Message-ID: <20250827010453.4059782-65-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257638727116600 Content-Type: text/plain; charset="utf-8" Only flush the subset of tlbs that are affected by the ttbr register to which we are writing. Signed-off-by: Richard Henderson --- target/arm/helper.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 7a817b7e28..e8442731d4 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -2905,11 +2905,20 @@ static void flush_if_asid_change(CPUARMState *env, = uint64_t old, static void vmsa_ttbr_write(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value) { - /* If the ASID changes (with a 64-bit write), we must flush the TLB. = */ - if (cpreg_field_type(ri) =3D=3D MO_64 && - extract64(raw_read(env, ri) ^ value, 48, 16) !=3D 0) { - ARMCPU *cpu =3D env_archcpu(env); - tlb_flush(CPU(cpu)); + /* + * If the ASID changes (with a 64-bit write), we must flush the TLB. + * The non-secure ttbr registers affect the EL1 regime; + * the secure ttbr registers affect the AA32 EL3 regime. + */ + if (cpreg_field_type(ri) =3D=3D MO_64) { + flush_if_asid_change(env, raw_read(env, ri), value, + ri->secure & ARM_CP_SECSTATE_S + ? (ARMMMUIdxBit_E30_0 | + ARMMMUIdxBit_E30_3_PAN | + ARMMMUIdxBit_E3) + : (ARMMMUIdxBit_E10_1 | + ARMMMUIdxBit_E10_1_PAN | + ARMMMUIdxBit_E10_0)); } raw_write(env, ri, value); } --=20 2.43.0 From nobody Sun Sep 28 16:28:07 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1756257449; cv=none; d=zohomail.com; s=zohoarc; b=StRRIO8n7IgOud17h8rnRPzIg8/PzGsjSsXZSLcMtmafGTr3y1IMN9PS/nteJeH8f+l/cNssfCRu99Z9phWiSUezsTVPB2XYECK9euhOe8snivNerGnqwbkJxL991+rkgWpwtWWUXH7W//fNjDMpP+rFfUlqSwYDCz4UstzRLsI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756257449; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=DrlBl1QBMO3S/7uPi59WTvH95lxI7KoNo8aFmqKoqOs=; b=dLP/Z4OtVIaR4p9XKvyDs1zGKLO13qTLr1akk1S9x+xwRlrSgqmEJLfRILWOmx7uwZgD68ADJUEfpnGmzpgim/rMmS30NdFK/p6SAUZ89/wfz2xg72rfcjV8tNRGAujhDK8vQsKf88uf1SJu3npPBqHWzdYSzmuqOKBqb69f0SA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1756257449970561.2200481622409; Tue, 26 Aug 2025 18:17:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ur4jZ-0005XY-Rm; Tue, 26 Aug 2025 21:13:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ur4iD-000205-Lt for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:31 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ur4hx-0000M1-Pq for qemu-devel@nongnu.org; Tue, 26 Aug 2025 21:12:29 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-771fa8e4190so841733b3a.1 for ; Tue, 26 Aug 2025 18:12:13 -0700 (PDT) Received: from stoup.. ([144.6.121.55]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-771f2b2d2bfsm4348408b3a.93.2025.08.26.18.12.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Aug 2025 18:12:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1756257132; x=1756861932; darn=nongnu.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=DrlBl1QBMO3S/7uPi59WTvH95lxI7KoNo8aFmqKoqOs=; b=Loj6+6yiIT4OojEgx98pGBZt9+lf2xMPa3QisEPj9l/8W+0uxaJlPNWL7Ls00mXY1L ZugzmYe1CIKINxVuYC06lzp2RWd/MYEvgM4cm09oVjDOd8maEzUin6+rOVL0HXujReaZ heZy9BspGBK2xUK2HmzIZvfETT7gJlbghwUKAoxd5BPX164nNLSRXRVF+Or9m18VlNnZ CqzuN4LfHgBBdM3WECaHnv5LWf9bI8voycrRTB/blrDhRnahm2qkcHlYmd8D9tc0s/NR rY2tk71AaPek+Ri5OwUHYZkVkHEHIjq/R1sF5isYc6aRvYG2nxsxL7ldbLBazH+GvFre ZwWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756257132; x=1756861932; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DrlBl1QBMO3S/7uPi59WTvH95lxI7KoNo8aFmqKoqOs=; b=oAPXwKqOzfrv4OcRiyHF+eahuYKOoAKEjsrUpj+CZCiGE//kp+IJH34nlOpfOdNplJ duXU/I0eurwbVQ1UozxgX7aKIa+U+AWIIDKdidRePQgp3u5hkzUbNKhwOtqwq68KkLRl k0aX2VQfqKaqvsM29ghDpXQV9ih0LPXvRz/vMba/9+s4Hel6ZvovE1eNTM27YHi8GH4S 3p8ywafHDqpiN45LFKqTFpN8lchkWe2kvkaKKwlB6oXljoa27KGafWKYgum3PAMANZN5 JAuc9UkKhcxj61+0hbX5/H0MmUw9Yg48TIGb1Q5oiJDjEeBI75ijqHnFjSdGglyJJ6wc hbpg== X-Gm-Message-State: AOJu0YwfEysCqdv/++2343bxmvXF6A2OuOkf2wtPqyb9uwMBPUQGlQ6h baAht3hX+9qLTFw13eS/zHAQiMBOR1Iem7bA8J5hv3tSdairp3QVy6dRss+OwqsCBngdQqn6S8e CYJYhF9E= X-Gm-Gg: ASbGnct+yts4sinCamKguNtMk5U+Dl8npOfaU5btguSKdL+3g7g7mEZ+K+dOGVmtCmq IPKvMdEXGcnivB9uFP2LHHCquBZLlyO7kMASTPIhsreQAc+oQ4duLHtIK2nE5TlPQuvhJrdA+C4 Ye6YU5ptoTDMpZcsrcXkQIkkLbzrEBr/E/YrO5VKS6zWGi5Bs3x/aAPvQtmRPc4F12Rty5ZDjG3 t7uoVvHuj/jtDClk7EldGf9OxEvvQAhRFW/GwrWgJJAs9HbJ5ovA9bUSRA8UqIAvXP54UhfDiUi F5j/b2t2GojzOtDspnx+aNpw3gM0TSD58WaRepa6SeKBN0JHxplMywACCDP7HH6u66vcSy6QuvK xM7UDvG5sUh+tklAypLTCvfYbxg== X-Google-Smtp-Source: AGHT+IGpIU6bqi9tHLKSnlbnPgoHBYYUhqL5PacYSKCcPFhYTjcgmh1Qh08pquNKGc7RHpH/UywLeg== X-Received: by 2002:a05:6a20:6a11:b0:243:971d:cda8 with SMTP id adf61e73a8af0-243971dd0cfmr3530410637.25.1756257131639; Tue, 26 Aug 2025 18:12:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 61/61] target/arm: Extend TTBR system registers to 128-bit Date: Wed, 27 Aug 2025 11:04:52 +1000 Message-ID: <20250827010453.4059782-66-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250827010453.4059782-1-richard.henderson@linaro.org> References: <20250827010453.4059782-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.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, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1756257452883124100 Content-Type: text/plain; charset="utf-8" So far, just extend the data type and check access; do not yet consume the 128-bit table format. Signed-off-by: Richard Henderson --- target/arm/cpu.h | 31 +++++++++------- target/arm/helper.c | 86 ++++++++++++++++++++++++++++++++++++--------- target/arm/ptw.c | 14 +++++--- 3 files changed, 96 insertions(+), 35 deletions(-) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 57e298363c..4c929de5ab 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -343,25 +343,30 @@ typedef struct CPUArchState { uint32_t c1_xscaleauxcr; /* XScale auxiliary control register. */ uint64_t sder; /* Secure debug enable register. */ uint32_t nsacr; /* Non-secure access control register. */ - union { /* MMU translation table base 0. */ + /* MMU translation table bases. */ + union { struct { - uint64_t _unused_ttbr0_0; - uint64_t ttbr0_ns; - uint64_t _unused_ttbr0_1; - uint64_t ttbr0_s; + uint64_t HOST_ENDIAN_FIELDS(ttbr0_ns, _unused_ttbr0_0); + uint64_t HOST_ENDIAN_FIELDS(ttbr1_ns, _unused_ttbr1_0); }; - uint64_t ttbr0_el[4]; + Int128 ttbr_el1[2]; }; - union { /* MMU translation table base 1. */ + union { struct { - uint64_t _unused_ttbr1_0; - uint64_t ttbr1_ns; - uint64_t _unused_ttbr1_1; - uint64_t ttbr1_s; + uint64_t HOST_ENDIAN_FIELDS(httbr, _unused_httbr_0); }; - uint64_t ttbr1_el[4]; + Int128 ttbr_el2[2]; + }; + union { + uint64_t ttbr0_el3; + uint64_t ttbr_s[2]; + }; + union { + struct { + uint64_t HOST_ENDIAN_FIELDS(vttbr, _unused_vttbr_0); + }; + Int128 vttbr_el2; }; - uint64_t vttbr_el2; /* Virtualization Translation Table Base. */ uint64_t vsttbr_el2; /* Secure Virtualization Translation Table. */ /* MMU translation table base control. */ uint64_t tcr_el[4]; diff --git a/target/arm/helper.c b/target/arm/helper.c index e8442731d4..ebe59a5765 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -512,6 +512,16 @@ static CPAccessResult access_d128(CPUARMState *env, co= nst ARMCPRegInfo *ri, return CP_ACCESS_OK; } =20 +static CPAccessResult access_tvm_trvm_d128(CPUARMState *env, + const ARMCPRegInfo *ri, bool is= read) +{ + CPAccessResult ret =3D access_tvm_trvm(env, ri, isread); + if (ret =3D=3D CP_ACCESS_OK) { + ret =3D access_d128(env, ri, isread); + } + return ret; +} + static void dacr_write(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t = value) { ARMCPU *cpu =3D env_archcpu(env); @@ -2923,6 +2933,17 @@ static void vmsa_ttbr_write(CPUARMState *env, const = ARMCPRegInfo *ri, raw_write(env, ri, value); } =20 +static void vmsa_ttbr_write128(CPUARMState *env, const ARMCPRegInfo *ri, + Int128 value) +{ + flush_if_asid_change(env, int128_getlo(raw_read128(env, ri)), + int128_getlo(value), + ARMMMUIdxBit_E10_1 | + ARMMMUIdxBit_E10_1_PAN | + ARMMMUIdxBit_E10_0); + raw_write128(env, ri, value); +} + static void vmsa_tcr_ttbr_el2_write(CPUARMState *env, const ARMCPRegInfo *= ri, uint64_t value) { @@ -2941,6 +2962,19 @@ static void vmsa_tcr_ttbr_el2_write(CPUARMState *env= , const ARMCPRegInfo *ri, raw_write(env, ri, value); } =20 +static void vmsa_tcr_ttbr_el2_write128(CPUARMState *env, const ARMCPRegInf= o *ri, + Int128 value) +{ + if (arm_hcr_el2_eff(env) & HCR_E2H) { + flush_if_asid_change(env, int128_getlo(raw_read128(env, ri)), + int128_getlo(value), + ARMMMUIdxBit_E20_2 | + ARMMMUIdxBit_E20_2_PAN | + ARMMMUIdxBit_E20_0); + } + raw_write128(env, ri, value); +} + static void vttbr_write(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value) { @@ -2952,6 +2986,14 @@ static void vttbr_write(CPUARMState *env, const ARMC= PRegInfo *ri, raw_write(env, ri, value); } =20 +static void vttbr_write128(CPUARMState *env, const ARMCPRegInfo *ri, + Int128 value) +{ + flush_if_asid_change(env, int128_getlo(raw_read128(env, ri)), + int128_getlo(value), alle1_tlbmask(env)); + raw_write128(env, ri, value); +} + static const ARMCPRegInfo vmsa_pmsa_cp_reginfo[] =3D { { .name =3D "DFSR", .cp =3D 15, .crn =3D 5, .crm =3D 0, .opc1 =3D 0, .= opc2 =3D 0, .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .type =3D ARM_CP_= ALIAS, @@ -3327,30 +3369,36 @@ static void define_ttbr_registers(ARMCPU *cpu) { .name =3D "TTBR0_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 0, .opc2 =3D 0, .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, - .fgt =3D FGT_TTBR0_EL1, + .access128fn =3D access_tvm_trvm_d128, + .fgt =3D FGT_TTBR0_EL1, .type =3D ARM_CP_128BIT, .nv2_redirect_offset =3D 0x200 | NV2_REDIR_NV1, .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 2, 0, 0), .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 2, 0, 0), .writefn =3D vmsa_ttbr_write, .raw_writefn =3D raw_write, - .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr0_el[1]) }, + .write128fn =3D vmsa_ttbr_write128, .raw_write128fn =3D raw_writ= e128, + .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr_el1[0]) }, { .name =3D "TTBR1_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 2, .crm =3D 0, .opc2 =3D 1, .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, - .fgt =3D FGT_TTBR1_EL1, + .access128fn =3D access_tvm_trvm_d128, + .fgt =3D FGT_TTBR1_EL1, .type =3D ARM_CP_128BIT, .nv2_redirect_offset =3D 0x210 | NV2_REDIR_NV1, .vhe_redir_to_el2 =3D ENCODE_AA64_CP_REG(3, 4, 2, 0, 1), .vhe_redir_to_el01 =3D ENCODE_AA64_CP_REG(3, 5, 2, 0, 1), .writefn =3D vmsa_ttbr_write, .raw_writefn =3D raw_write, - .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr1_el[1]) }, + .write128fn =3D vmsa_ttbr_write128, .raw_write128fn =3D raw_writ= e128, + .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr_el1[1]) }, { .name =3D "TTBR0_EL2", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 2, .crm =3D 0, .opc2 =3D 0, - .access =3D PL2_RW, .resetvalue =3D 0, + .access =3D PL2_RW, .access128fn =3D access_d128, .type =3D ARM_= CP_128BIT, .writefn =3D vmsa_tcr_ttbr_el2_write, .raw_writefn =3D raw_write, - .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr0_el[2]) }, + .write128fn =3D vmsa_tcr_ttbr_el2_write128, + .raw_write128fn =3D raw_write128, + .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr_el2[0]) }, { .name =3D "TTBR0_EL3", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 6, .crn =3D 2, .crm =3D 0, .opc2 =3D 0, .access =3D PL3_RW, .resetvalue =3D 0, - .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr0_el[3]) }, + .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr0_el3) }, }; =20 static ARMCPRegInfo ttbr64_reginfo[] =3D { @@ -3365,7 +3413,7 @@ static void define_ttbr_registers(ARMCPU *cpu) [0].fieldoffset =3D offsetof(CPUARMState, cp15.ttbr0_ns), [1].name =3D "TTBR0_S", [1].secure =3D ARM_CP_SECSTATE_S, - [1].fieldoffset =3D offsetof(CPUARMState, cp15.ttbr0_s), + [1].fieldoffset =3D offsetof(CPUARMState, cp15.ttbr_s[0]), =20 [2 ... 3].opc1 =3D 1, [2].name =3D "TTBR1", @@ -3373,12 +3421,12 @@ static void define_ttbr_registers(ARMCPU *cpu) [2].fieldoffset =3D offsetof(CPUARMState, cp15.ttbr1_ns), [3].name =3D "TTBR1_S", [3].secure =3D ARM_CP_SECSTATE_S, - [3].fieldoffset =3D offsetof(CPUARMState, cp15.ttbr1_s), + [3].fieldoffset =3D offsetof(CPUARMState, cp15.ttbr_s[1]), =20 [4] =3D { .name =3D "HTTBR", .cp =3D 15, .crm =3D 2, .opc1 =3D 4, .access =3D PL2_RW, .type =3D ARM_CP_64BIT, - .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr0_el[2]) + .fieldoffset =3D offsetof(CPUARMState, cp15.httbr) }, }; =20 @@ -3386,12 +3434,12 @@ static void define_ttbr_registers(ARMCPU *cpu) { .name =3D "TTBR0", .cp =3D 15, .opc1 =3D 0, .crn =3D 2, .crm =3D= 0, .opc2 =3D 0, .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .writefn =3D vmsa_ttbr_write, .raw_writefn =3D raw_write, - .bank_fieldoffsets =3D { offsetof(CPUARMState, cp15.ttbr0_s), + .bank_fieldoffsets =3D { offsetof(CPUARMState, cp15.ttbr_s[0]), offsetof(CPUARMState, cp15.ttbr0_ns) } }, { .name =3D "TTBR1", .cp =3D 15, .opc1 =3D 0, .crn =3D 2, .crm =3D= 0, .opc2 =3D 1, .access =3D PL1_RW, .accessfn =3D access_tvm_trvm, .writefn =3D vmsa_ttbr_write, .raw_writefn =3D raw_write, - .bank_fieldoffsets =3D { offsetof(CPUARMState, cp15.ttbr1_s), + .bank_fieldoffsets =3D { offsetof(CPUARMState, cp15.ttbr_s[1]), offsetof(CPUARMState, cp15.ttbr1_ns) } }, }; =20 @@ -4460,11 +4508,14 @@ static const ARMCPRegInfo el2_cp_reginfo[] =3D { .cp =3D 15, .opc1 =3D 6, .crm =3D 2, .type =3D ARM_CP_64BIT | ARM_CP_ALIAS, .access =3D PL2_RW, .accessfn =3D access_el3_aa32ns, - .fieldoffset =3D offsetof(CPUARMState, cp15.vttbr_el2), + .fieldoffset =3D offsetof(CPUARMState, cp15.vttbr), .writefn =3D vttbr_write, .raw_writefn =3D raw_write }, { .name =3D "VTTBR_EL2", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 2, .crm =3D 1, .opc2 =3D 0, - .access =3D PL2_RW, .writefn =3D vttbr_write, .raw_writefn =3D raw_w= rite, + .type =3D ARM_CP_128BIT, + .access =3D PL2_RW, .access128fn =3D access_d128, + .writefn =3D vttbr_write, .raw_writefn =3D raw_write, + .write128fn =3D vttbr_write128, .raw_write128fn =3D raw_write128, .nv2_redirect_offset =3D 0x20, .fieldoffset =3D offsetof(CPUARMState, cp15.vttbr_el2) }, { .name =3D "SCTLR_EL2", .state =3D ARM_CP_STATE_BOTH, @@ -6016,9 +6067,10 @@ static const ARMCPRegInfo contextidr_el2 =3D { static const ARMCPRegInfo vhe_reginfo[] =3D { { .name =3D "TTBR1_EL2", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 2, .crm =3D 0, .opc2 =3D 1, - .access =3D PL2_RW, .writefn =3D vmsa_tcr_ttbr_el2_write, - .raw_writefn =3D raw_write, - .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr1_el[2]) }, + .access =3D PL2_RW, .access128fn =3D access_d128, .type =3D ARM_CP_1= 28BIT, + .writefn =3D vmsa_tcr_ttbr_el2_write, .raw_writefn =3D raw_write, + .write128fn =3D vmsa_tcr_ttbr_el2_write128, .raw_write128fn =3D raw_= write128, + .fieldoffset =3D offsetof(CPUARMState, cp15.ttbr_el2[1]) }, #ifndef CONFIG_USER_ONLY { .name =3D "CNTHV_CVAL_EL2", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 4, .crn =3D 14, .crm =3D 3, .opc2 =3D 2, diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 561bf2678e..105c2cb07b 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -208,7 +208,7 @@ static bool regime_translation_big_endian(CPUARMState *= env, ARMMMUIdx mmu_idx) return (regime_sctlr(env, mmu_idx) & SCTLR_EE) !=3D 0; } =20 -/* Return the TTBR associated with this translation regime */ +/* Return the 64-bit TTBR associated with this translation regime */ static uint64_t regime_ttbr(CPUARMState *env, ARMMMUIdx mmu_idx, int ttbrn) { if (mmu_idx =3D=3D ARMMMUIdx_Stage2) { @@ -217,11 +217,15 @@ static uint64_t regime_ttbr(CPUARMState *env, ARMMMUI= dx mmu_idx, int ttbrn) if (mmu_idx =3D=3D ARMMMUIdx_Stage2_S) { return env->cp15.vsttbr_el2; } - if (ttbrn =3D=3D 0) { - return env->cp15.ttbr0_el[regime_el(env, mmu_idx)]; - } else { - return env->cp15.ttbr1_el[regime_el(env, mmu_idx)]; + switch (regime_el(env, mmu_idx)) { + case 1: + return int128_getlo(env->cp15.ttbr_el1[ttbrn]); + case 2: + return int128_getlo(env->cp15.ttbr_el2[ttbrn]); + case 3: + return env->cp15.ttbr_s[ttbrn]; } + g_assert_not_reached(); } =20 /* Return true if the specified stage of address translation is disabled */ --=20 2.43.0