From patchwork Mon Jan 21 18:51:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 156246 Delivered-To: patches@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp6701252jaa; Mon, 21 Jan 2019 10:51:41 -0800 (PST) X-Received: by 2002:adf:9c8a:: with SMTP id d10mr28233201wre.244.1548096701493; Mon, 21 Jan 2019 10:51:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548096701; cv=none; d=google.com; s=arc-20160816; b=mbkbkpC/CGmJ1KUSX9R+S+CXjmElXqAsx/Vr/WIoHjxe0zB0iegt2t1HJfke646tXJ AVDb2NWcuRBinfM9fmdGshgWR159edNziSivj1Mwu5qnGdUwaZJKX/Fs9FA7Rf+fXI84 yd0Ll6LCCYlJbkxKgR8P73cJ9deqacYXnUuHgAE+0IoplUEyfifodNJJbDY99iniBAky ZatbTDdJ4Nmwf3/LkeLCEYO1PRmGuUKHBDA//j0ahBqmbBTqxZM6528iHI5rhSQdeHSz BK4dPWmtjxoZHP7hVh56hWbZU/mJVvlzHjevyXhjRBdiW09fdgXu7+n73UO0ue3mTTV5 14tQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=5oXNf8YbRJ27W92QaQUg2Jg/rlBLxD7V8QWz6bSn8Tg=; b=DG9PuYJtFiwTrhWGNzvPTgOomsIzDr/xybBisMyeB35bpahPv0qUKAa5MLPesjOu2h 3bgIsG5zpMYYLChKFDNSYQNNdDwn7ERjahsEeIqzm3mp7LYC7XlBuZqKLJ9Dsh/L8c2y WcIcn6pUYpKy81BrdB6E7/CyjrSOCEsv5ugh1l/bap+x7X5U6i9A1YZls3gSI+EWstUY mosW+90IUIuJwcbGMGdBZ5SR5dupRKUrlV9Ga7G8W3jCjQC5rVG6SpQ/VIdsVjCfm5nk TKgglJrvj6cpJWXd7nM/0yllaAFMeTimGk3CzzhLl0xm7BdS8n4bNTcfHSQv+XxWgav9 H5yw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=NMEiUA6j; spf=pass (google.com: domain of peter.maydell@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=peter.maydell@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id n12sor64618784wrm.10.2019.01.21.10.51.41 for (Google Transport Security); Mon, 21 Jan 2019 10:51:41 -0800 (PST) Received-SPF: pass (google.com: domain of peter.maydell@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=NMEiUA6j; spf=pass (google.com: domain of peter.maydell@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=peter.maydell@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org 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=5oXNf8YbRJ27W92QaQUg2Jg/rlBLxD7V8QWz6bSn8Tg=; b=NMEiUA6jC+0+m1CiYmjfyxKZWyJRx0xr6H4P9drgvZ5QPfqBhY/BKSqZk/IPbrU/Xf OGNPviQ/5fYaPqA18k0svK4vT1RQaKgBapMB2EvRQiEnTxO/pZJ0pETAcz0p12JMtNLg bx580M/WbdelgqUl1aoX8/tCqBjJSdjgqtGlE= 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=5oXNf8YbRJ27W92QaQUg2Jg/rlBLxD7V8QWz6bSn8Tg=; b=XkExrsZR4B+zzuEdWefGn7hGX+MJdejkMCGkMNJxpz4GsnHRcTvqxKGQ4I4JnZndiu 7Efs143Tya10NfVIvTZel+tGWZNvWK+Em56r6gTa7/xzEJIgIDfdRaUCG90CcHUiNKQp 1fjtQWjFuWKc7ZsJG2v0f6LiKE9Gybdj3mMkkzMga/WokAptxhVH/TQdekCvC4skjSlK 0nsSNw1kYSj8EBUZNuuXwhFAjTcl/UglLaXoTzBxQnV9SMVorWUcg1YMRRzMVJWnzvKP i6AJ0EuU8qsJQJogcAU+okvOai0Lb6Eu01YFw/kxE9/oltTsvjYte7u2jmQTWe7/GhG9 cnZg== X-Gm-Message-State: AJcUukeL34UC7QPlTinsr7Sgj79mtGrAos8Z36tXEL64Rd6ta1sqoMCK VgZh8JpYGGGGRdTqWcZjM3r864oDkW/nSi5F X-Google-Smtp-Source: ALg8bN74c/3XSF9S+ykrcrnY28J2F5cQo6oflXsSA29QWkMqYizS0wBi+4xODclwajSVej8N5quI9A== X-Received: by 2002:adf:9c01:: with SMTP id f1mr30514330wrc.286.1548096701027; Mon, 21 Jan 2019 10:51:41 -0800 (PST) Return-Path: Received: from orth.archaic.org.uk (orth.archaic.org.uk. [81.2.115.148]) by smtp.gmail.com with ESMTPSA id n82sm50386660wma.42.2019.01.21.10.51.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 21 Jan 2019 10:51:40 -0800 (PST) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Cc: patches@linaro.org Subject: [PATCH 18/23] hw/arm/armsse: Add unimplemented-device stub for CPU local control registers Date: Mon, 21 Jan 2019 18:51:13 +0000 Message-Id: <20190121185118.18550-19-peter.maydell@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190121185118.18550-1-peter.maydell@linaro.org> References: <20190121185118.18550-1-peter.maydell@linaro.org> MIME-Version: 1.0 The SSE-200 has a "CPU local security control" register bank; add an unimplemented-device stub for it. (The register bank has only one interesting register, which allows the guest to lock down changes to various CPU registers so they cannot be modified further. We don't support that in our Cortex-M33 model anyway.) Signed-off-by: Peter Maydell --- include/hw/arm/armsse.h | 1 + hw/arm/armsse.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) -- 2.20.1 Reviewed-by: Richard Henderson diff --git a/include/hw/arm/armsse.h b/include/hw/arm/armsse.h index 9d830057d5c..961dbb3032a 100644 --- a/include/hw/arm/armsse.h +++ b/include/hw/arm/armsse.h @@ -151,6 +151,7 @@ typedef struct ARMSSE { UnimplementedDeviceState mhu[2]; UnimplementedDeviceState ppu[NUM_PPUS]; UnimplementedDeviceState cachectrl[SSE_MAX_CPUS]; + UnimplementedDeviceState cpusecctrl[SSE_MAX_CPUS]; /* * 'container' holds all devices seen by all CPUs. diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c index 41e4a781e11..9c111ac6a40 100644 --- a/hw/arm/armsse.c +++ b/hw/arm/armsse.c @@ -33,6 +33,7 @@ struct ARMSSEInfo { bool has_mhus; bool has_ppus; bool has_cachectrl; + bool has_cpusecctrl; }; static const ARMSSEInfo armsse_variants[] = { @@ -45,6 +46,7 @@ static const ARMSSEInfo armsse_variants[] = { .has_mhus = false, .has_ppus = false, .has_cachectrl = false, + .has_cpusecctrl = false, }, }; @@ -302,6 +304,16 @@ static void armsse_init(Object *obj) g_free(name); } } + if (info->has_cpusecctrl) { + for (i = 0; i < info->num_cpus; i++) { + char *name = g_strdup_printf("cpusecctrl%d", i); + + sysbus_init_child_obj(obj, name, &s->cpusecctrl[i], + sizeof(s->cpusecctrl[i]), + TYPE_UNIMPLEMENTED_DEVICE); + g_free(name); + } + } object_initialize_child(obj, "nmi-orgate", &s->nmi_orgate, sizeof(s->nmi_orgate), TYPE_OR_IRQ, &error_abort, NULL); @@ -833,6 +845,25 @@ static void armsse_realize(DeviceState *dev, Error **errp) memory_region_add_subregion(&s->cpu_container[i], 0x50010000, mr); } } + if (info->has_cpusecctrl) { + for (i = 0; i < info->num_cpus; i++) { + char *name = g_strdup_printf("CPUSECCTRL%d", i); + MemoryRegion *mr; + + qdev_prop_set_string(DEVICE(&s->cpusecctrl[i]), "name", name); + g_free(name); + qdev_prop_set_uint64(DEVICE(&s->cpusecctrl[i]), "size", 0x1000); + object_property_set_bool(OBJECT(&s->cpusecctrl[i]), true, + "realized", &err); + if (err) { + error_propagate(errp, err); + return; + } + + mr = sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->cpusecctrl[i]), 0); + memory_region_add_subregion(&s->cpu_container[i], 0x50011000, mr); + } + } /* 0x40020000 .. 0x4002ffff : ARMSSE system control peripheral region */ /* Devices behind APB PPC1: