From patchwork Tue Feb 5 19:02:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 157525 Delivered-To: patch@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp5566422jaa; Tue, 5 Feb 2019 11:45:28 -0800 (PST) X-Google-Smtp-Source: AHgI3Iab2uf3T7ZEJmrRil/CAnsIrYjzg9lBbHINUWYqls+MxmZ+S5fLYqVGEOyLivoyVkj11MAd X-Received: by 2002:a81:2b04:: with SMTP id r4mr5494262ywr.511.1549395928500; Tue, 05 Feb 2019 11:45:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549395928; cv=none; d=google.com; s=arc-20160816; b=ChWByr4Vk/uKa0ALA1hKgPAJBuueX47/oisUwgQt4wwSJ0mLNlDheEwXddXaOyCVCs btetKCY+7X02lhB7r7l8aj5jfHL6eg/ZUFjTr97QequG8SvlSIfKpYMFYFEERtCMVZ0K kwEpNoEzv8+oSV9bkx6Of/zNe+SC31XazgZb/mtxa6y5OKHnyNNxMkDM4Y49utKnV44H +Pf/ODPcha3vpN7Ky7Dp8/oppFR9eo9ry6eQWDieiTuaJj1K3PxuQcx0P+o4R2/R69SZ D8C/oeJrkjRXoyNu3ektsuu1jeEj+QVjZYUCY3QgjZhfQP/FQcinwWgFBqLOZ7Ah1ous cI5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc: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=ZLy6kz/6AjHnhkCqfnV/PRmZe1fLFRArOryBT2bgJ3I=; b=vbC/6O8QpamfIuiqdQV5XlFgF8yhGmz1z5vCCdUHuX106MEaYSmnd7xJZHWl2h9t8a qhyXlqra877dXmvhaA3f2PFTUKa9ji5XwXBeB1b5Ebsxgg3C6D+LX4YZ2KJss/mrKY/q 29xSQTVQ8SvgKGJ5gc77Pv9qYryzYVw+hO/vS3XdyGA2YHIyzzruFuEc8EOLuXt5G1iB BmJRnJDJK0m1NWA4t2/oMWVIbrZ8575ZCiDm/0lX9doR3lWQEGB2VxFVdtTfQTHtVSNy MxwSfWeAO9k9M1Af+EnzZDtQVvOVK4EH0YgHipMfFzgFzXlAam9w0vq/wFoz5E05QOoe pKsw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=kLV7IU3n; 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 k76si992578ywe.420.2019.02.05.11.45.28 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 05 Feb 2019 11:45:28 -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=kLV7IU3n; 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]:39145 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gr6et-00007b-Uv for patch@linaro.org; Tue, 05 Feb 2019 14:45:27 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53004) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gr5zd-0007sq-V8 for qemu-devel@nongnu.org; Tue, 05 Feb 2019 14:02:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gr5zc-0004KM-8o for qemu-devel@nongnu.org; Tue, 05 Feb 2019 14:02:49 -0500 Received: from mail-wr1-x441.google.com ([2a00:1450:4864:20::441]:46113) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gr5za-0004CJ-Ka for qemu-devel@nongnu.org; Tue, 05 Feb 2019 14:02:47 -0500 Received: by mail-wr1-x441.google.com with SMTP id l9so4813749wrt.13 for ; Tue, 05 Feb 2019 11:02:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZLy6kz/6AjHnhkCqfnV/PRmZe1fLFRArOryBT2bgJ3I=; b=kLV7IU3nVhfeaqXncfUjkOAJHxQ8fHz7Il0errUFcAVfmXm769NfVHjuoH5sJCE24Y rFW10E6yRn7eCLB4pIanool5poX9yCgsF3rEJf80Y6Sw26agATwXLuAJgIwJATf/w8Fq Dg9UN3KxEJUhyq5zqHcRnLMntHxkSonQenzPHYH6nAEfoYDMFLYJ5SzWVcyF0tE2igLP 02VF4Qaakj24Bxx70qmsznSAzygTKu/69nKWR18Z/f7LQy3twauX5owizAVqoYOf37m3 mMYUihaBZDyjy5r+WDBZrNIYFv9ig11wG4j3XFjUxAU3zP2FhJIJ8Xu4kQaotdmTKOyi mkeA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ZLy6kz/6AjHnhkCqfnV/PRmZe1fLFRArOryBT2bgJ3I=; b=OuVtK8EakSBKGk053gRT3BvztrRJJcSTgrNfayJEvFLCn6HzpdXRW9nSmQ37pnAnAF NCC+EG2gyfQz5y40fLBlXy3a7ee4VZI/+yPUD6wIk4YNwsmfL3irkQAhjdGgBR9vVsvv 90jvSKN5MeEZwzbJV1AQ4kAaPr8t/S8z9wCtA+WX2j7yIU0IQOjm71g//xOl90r7g1Ua FotB67qNLSCVlgLF+LUL7Ejg74qligM8WohYNcg4yM/w/Q0yOuEW7QHpj7RVYMzhQx/V gqlBD5I/VriYF4T68G0q2HCqGnNfk1zbAAFP0Eqjd17mMOkOmSJeq7h6v0j2BqtNrYzs CgJw== X-Gm-Message-State: AHQUAuai5ekgZCsI8UmJJkDtQNWZPctv1QUz0zSzzNc3lsqnlp56SlpN hBBm3cHdO0tdQOhZJdAxSkSI657fN5s= X-Received: by 2002:adf:a58a:: with SMTP id g10mr4789236wrc.3.1549393352408; Tue, 05 Feb 2019 11:02:32 -0800 (PST) Received: from zen.linaroharston ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id l20sm36878159wrb.93.2019.02.05.11.02.30 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 05 Feb 2019 11:02:30 -0800 (PST) Received: from zen.linaroharston. (localhost [127.0.0.1]) by zen.linaroharston (Postfix) with ESMTP id AD8B21FF84; Tue, 5 Feb 2019 19:02:24 +0000 (UTC) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Date: Tue, 5 Feb 2019 19:02:22 +0000 Message-Id: <20190205190224.2198-5-alex.bennee@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190205190224.2198-1-alex.bennee@linaro.org> References: <20190205190224.2198-1-alex.bennee@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::441 Subject: [Qemu-devel] [PATCH v2 4/6] 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: , Cc: qemu-arm@nongnu.org, =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" 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 --- 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 354df22102..ae8ccc7dec 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -2459,6 +2459,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 f2f868ff92..e999da165b 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -6103,19 +6103,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); @@ -7014,8 +7022,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; @@ -7023,6 +7040,9 @@ void modify_arm_cp_regs(ARMCPRegInfo *regs, const ARMCPRegUserSpaceInfo *mods) break; } } + if (pat) { + g_pattern_spec_free(pat); + } } }