From patchwork Thu Feb 14 19:05:45 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 158441 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp1762812jaa; Thu, 14 Feb 2019 11:23:39 -0800 (PST) X-Google-Smtp-Source: AHgI3IbYelOFuRAMbC91MwkdQ7yAGMt6pOsnULvaFC5DKGGRQhn2F47BVCcyKlZ1LZAqfQcIsSGV X-Received: by 2002:a25:dc49:: with SMTP id y70mr4853756ybe.288.1550172219321; Thu, 14 Feb 2019 11:23:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550172219; cv=none; d=google.com; s=arc-20160816; b=HeGgCDtcTkGlsyJeCAP6z0noFH3CAAU6shlAyu64v9Dwr+3PnQ7MpvGGiNO4tehzGy 5VXYI5YfZyZcq/ZwPLxxliIzm+eabFpQCGrNgGJSw43w1jIAlFUlv39GOE5+KXzDXf2b hGiu9OS9VEaEL/HBstngMlFIr6zsHtFL3ES6kPucQFkMA2GRSwhmU2wrf2qU6iBCZSeF GNrEr5g2nDjF/N0HM5p4ZKqur+4a4wYs+uV+gkuhvgqDRHm+TVODkuA214SBZE7Vu6EN U+8IqCyqZ6ZUIC+c2+KmNnS6lz5/A28SU1DV0KuOhGgf6dKiSHwGLxG6RVyhp2JXYUrL f2VQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=5j4rXGjVgvY3s9QkcEZduEdu+tbGw8yHEbDdy7Si5QE=; b=vE7t4oJYMOwYt9J2XE66sh/RW3EnZcN6uEdvcMKQepemlQ75Vva0UZZ9fsE7/+sEaC WjDBBqYSPwHylrPoIJCtxbP17KjOJ9nD5OCS6Hw+gaZ0DN1qdJEqVfwcdWV6qPswUXrn iacAx34nu3KSSRwD2I0DFoDTKmChRrn/uoxxIaJ/lg3coYSDvYhNEmDb0Uqn/gcWZYBx OMKvdWI9vBfF50qNIAiUc4KXzOn9rmDUwI5nDv7U3hVTU8xG7lHCrZdSEJ7LnVqAZTo0 c4v/kSzHvbQzE7VybDpu2o2V3IRMrsTWFF1CidFgC2V/1ONQWiMzXP5dec/B83F4hp+q nmJg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=pfnAb1nR; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id a141si1921707ywe.136.2019.02.14.11.23.39 for (version=TLS1 cipher=AES128-SHA bits=128/128); Thu, 14 Feb 2019 11:23:39 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=pfnAb1nR; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([127.0.0.1]:53746 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMbi-0004Gt-OF for patch@linaro.org; Thu, 14 Feb 2019 14:23:38 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53862) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1guMKx-0007mf-MS for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1guMKv-0004iI-GL for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:18 -0500 Received: from mail-wm1-x341.google.com ([2a00:1450:4864:20::341]:54235) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1guMKv-0004hr-A8 for qemu-devel@nongnu.org; Thu, 14 Feb 2019 14:06:17 -0500 Received: by mail-wm1-x341.google.com with SMTP id d15so7512852wmb.3 for ; Thu, 14 Feb 2019 11:06:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=5j4rXGjVgvY3s9QkcEZduEdu+tbGw8yHEbDdy7Si5QE=; b=pfnAb1nRpZVYeHZYxxF8h+EJrYGjJzW9Hntp9m21lY/aT89TlnbyMkDdRfgpNGu0q9 rfkLvmuTVxaFRNiiD7rKOK/T+ZN7a7KMZSizcePgRPCB/0LZhCfjumWcwBeOSzDOtQzo IHqIY9Q7j83uD4beyrq8iBsiwRemUQmyJucxLQnlai0NXiWks6BzHdl2Y6tLVlhQ47Sl 4yrvJ+klzF8hra4UKahTILyI/24IIYKIJUdYzjKbxcQ/bFLMUjPUQp5OJyokPs5fMJ6N 2IHMpBkVpfXqsMlroVgoOpmYGTywb/0M5SknIAqbLet8cmwDNAXRRcEuQUXJq3hQOO9j HIIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5j4rXGjVgvY3s9QkcEZduEdu+tbGw8yHEbDdy7Si5QE=; b=KFX9Lc/cxN3nLr82pgaNOPznTeMrO8MOod0B8ACV5KVkikzJw98v6IVza6lV//mrI4 sKYAZ4kpiATlIlrfZDfB2kMcomDOImzlz+QrFszIYxmgmPHt17YYIPmDmwVIoGJp17Gi BMbowkbhSVsUZrUD62r2wKE7SyJqNqNV9mlv4uJRPGUSidb5C5rFfZ+zuZnvst9tFZzJ pc6g458mN2XvHhjMayBfk1y6z+CzhBG25oO00pQ53tcZ0XIISKiVWe6zsA/8HITP7Cv+ ueHRfdEV52QEQtBGkdNd/4CmQT4apG7YDEngiPISGY/TGLp78VB45lZ60mjjPumbH6aA dyIw== X-Gm-Message-State: AHQUAuafN3BTmJlZY1vhAbPLf7MZlbrq04xK49VSnG57z+8eGY5JeOgl HdKSo6efxeBrDdZXoLC3m4cN02RI7RdS3Q== X-Received: by 2002:a1c:1d15:: with SMTP id d21mr3570101wmd.132.1550171175897; Thu, 14 Feb 2019 11:06:15 -0800 (PST) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n184sm7798471wmf.5.2019.02.14.11.06.14 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Feb 2019 11:06:15 -0800 (PST) From: Peter Maydell To: qemu-devel@nongnu.org Date: Thu, 14 Feb 2019 19:05:45 +0000 Message-Id: <20190214190603.25030-10-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190214190603.25030-1-peter.maydell@linaro.org> References: <20190214190603.25030-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::341 Subject: [Qemu-devel] [PULL 09/27] target/arm: expose remaining CPUID registers as RAZ X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Alex Bennée There are a whole bunch more registers in the CPUID space which are currently not used but are exposed as RAZ. To avoid too much duplication we expand ARMCPRegUserSpaceInfo to understand glob patterns so we only need one entry to tweak whole ranges of registers. Signed-off-by: Alex Bennée Message-id: 20190205190224.2198-5-alex.bennee@linaro.org Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target/arm/cpu.h | 3 +++ target/arm/helper.c | 26 +++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) -- 2.20.1 diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 7c31e5a2d10..f0334413ece 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -2474,6 +2474,9 @@ typedef struct ARMCPRegUserSpaceInfo { /* Name of register */ const char *name; + /* Is the name actually a glob pattern */ + bool is_glob; + /* Only some bits are exported to user space */ uint64_t exported_bits; diff --git a/target/arm/helper.c b/target/arm/helper.c index 77c73056948..5ac335f598c 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -6109,19 +6109,27 @@ void register_cp_regs_for_features(ARMCPU *cpu) .fixed_bits = 0x0000000000000011 }, { .name = "ID_AA64PFR1_EL1", .exported_bits = 0x00000000000000f0 }, + { .name = "ID_AA64PFR*_EL1_RESERVED", + .is_glob = true }, { .name = "ID_AA64ZFR0_EL1" }, { .name = "ID_AA64MMFR0_EL1", .fixed_bits = 0x00000000ff000000 }, { .name = "ID_AA64MMFR1_EL1" }, + { .name = "ID_AA64MMFR*_EL1_RESERVED", + .is_glob = true }, { .name = "ID_AA64DFR0_EL1", .fixed_bits = 0x0000000000000006 }, { .name = "ID_AA64DFR1_EL1" }, - { .name = "ID_AA64AFR0_EL1" }, - { .name = "ID_AA64AFR1_EL1" }, + { .name = "ID_AA64DFR*_EL1_RESERVED", + .is_glob = true }, + { .name = "ID_AA64AFR*", + .is_glob = true }, { .name = "ID_AA64ISAR0_EL1", .exported_bits = 0x00fffffff0fffff0 }, { .name = "ID_AA64ISAR1_EL1", .exported_bits = 0x000000f0ffffffff }, + { .name = "ID_AA64ISAR*_EL1_RESERVED", + .is_glob = true }, REGUSERINFO_SENTINEL }; modify_arm_cp_regs(v8_idregs, v8_user_idregs); @@ -7020,8 +7028,17 @@ void modify_arm_cp_regs(ARMCPRegInfo *regs, const ARMCPRegUserSpaceInfo *mods) ARMCPRegInfo *r; for (m = mods; m->name; m++) { + GPatternSpec *pat = NULL; + if (m->is_glob) { + pat = g_pattern_spec_new(m->name); + } for (r = regs; r->type != ARM_CP_SENTINEL; r++) { - if (strcmp(r->name, m->name) == 0) { + if (pat && g_pattern_match_string(pat, r->name)) { + r->type = ARM_CP_CONST; + r->access = PL0U_R; + r->resetvalue = 0; + /* continue */ + } else if (strcmp(r->name, m->name) == 0) { r->type = ARM_CP_CONST; r->access = PL0U_R; r->resetvalue &= m->exported_bits; @@ -7029,6 +7046,9 @@ void modify_arm_cp_regs(ARMCPRegInfo *regs, const ARMCPRegUserSpaceInfo *mods) break; } } + if (pat) { + g_pattern_spec_free(pat); + } } }