From patchwork Mon Jan 21 18:51:12 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 156245 Delivered-To: patches@linaro.org Received: by 2002:a02:48:0:0:0:0:0 with SMTP id 69csp6701230jaa; Mon, 21 Jan 2019 10:51:40 -0800 (PST) X-Received: by 2002:a5d:43d0:: with SMTP id v16mr30919471wrr.67.1548096700449; Mon, 21 Jan 2019 10:51:40 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1548096700; cv=none; d=google.com; s=arc-20160816; b=pzXxMhIF51Y4qq+ZyhMRLN8+vGLVF6uFz4pWlq95hxa5YX03YSWWXQPR7JRCcM2Sy+ 1Ey+MtV4338u4WuaJwI+gQmEEw2DivsBOYujBatR+ZGBwPmzKiKYbeRHQXg3cMnoS9Eu jzXSmQ2EkB1brq6fXG7T7KMheNpLu9licrEUDgTc6g5xSFZ6viugGbCk0l/TfRFzZMQX kGdA/9liFYQHsM5wCZ8GtBxAODvglAgY5e86xRGF6nG0pa9kM520IMdDsfJQdG0UozSz Ks0LsNohwbuEXEFcO8GC9yvGXljIN1AqjeAWW+oZClAU861lQt77N/G+rFFqG2w3gXYy BPow== 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=16YcVXkNI0qZQIE9OU/93mNUdU9hbKw0nKOMHfNAYQc=; b=muSX5YcvDNPLTcAKSOaHQ1YT+yiqa07Xwu7ALe4RnbuJgZB4yNX6rum/yje6bcXZB0 m5O/OCXbNYjJO7MzMgRgDjJR76R8bnQf3i1BRjO9lfBEvq+ED2Jka07FNldHk0+/n2n0 a04JTkKaq82PNKnheUR1w4xbctX958aQMJPqRAtVqIBW2zAakSRJwDRp5wASEAJqKlcC WLGS+5BtIC6aJYQAhGTr1Xd49snweczR6FUtBc5B2H2gFODFfgavlEHCr97wW3rTdYvi 7F6Z3P5t9psWVoHJ+ChHf6wpINm7AdelzIoax+EL1UJh8QVNZy/Wj5HZ/RhlYpW9fvnq KHmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=RRyB9+r1; 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 z13sor64630325wrl.43.2019.01.21.10.51.40 for (Google Transport Security); Mon, 21 Jan 2019 10:51:40 -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=RRyB9+r1; 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=16YcVXkNI0qZQIE9OU/93mNUdU9hbKw0nKOMHfNAYQc=; b=RRyB9+r1E4aTDZK4X/LljGD24LU6DFmbEl+Dgrb40u5v9tttO5ToKm4rgdX2rqxkva MG4hVDu6AjK+kHLE+cm/K6IFt8oEkvGIwAGAzFvNk7hRCsCneFHVaitePfhvv+SIVwJ+ tLGN+7vZBz4ooX1E2WevPKd7kr9YEsQyHzccw= 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=16YcVXkNI0qZQIE9OU/93mNUdU9hbKw0nKOMHfNAYQc=; b=K5jcuTeEuov3N5MqqEeKNLGC3i+RTomhoWoumQ7ix9dS6SnpIUqV/JI5XtvpPUCWhU OBPp+ksuE/Q5P9JyyvIOLNVqKLysVIyaKphcc/OeAvNQDm0T7FCSxI4zoavPjJdQIO33 Hz1ElZO4s3s3tr6XMytKWOy+TGSSnzgIume8qCaxntlIeMSsa8jfUbN+f/nidN5RXQsr dpAxGsmQ5yxSb/OKS9J+iWyhHfxG8FxRnRk0YJ9EqhOQOHIXrOMywmrkgG1jyXqklxtf Takt4zkVd0kyQ9+8YzJ1dKPsqKnhvpSS5vyfBddSoH/v/UKcsunWRaOZZkskBAVvWYhi Z55w== X-Gm-Message-State: AJcUuke2w6UltuA6vAEGBpUtICkrLI8LsBjLP4YveXCdsnNM6CyeTTDh IlAbNCe7EU31//dSaq+fwu2gX1+C X-Google-Smtp-Source: ALg8bN4huX0n6vA9wOioumb58JSq3w0TB5hTQJ21O0Fg71HWtcKBv76BttZZVyhSu9h37MM3K3QJZQ== X-Received: by 2002:a5d:568c:: with SMTP id f12mr27701887wrv.101.1548096700023; Mon, 21 Jan 2019 10:51:40 -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.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 21 Jan 2019 10:51:39 -0800 (PST) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Cc: patches@linaro.org Subject: [PATCH 17/23] hw/arm/armsse: Add unimplemented-device stub for cache control registers Date: Mon, 21 Jan 2019 18:51:12 +0000 Message-Id: <20190121185118.18550-18-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 gives each CPU a register bank to use to control its L1 instruction cache. Put in an unimplemented-device stub for this. Signed-off-by: Peter Maydell --- include/hw/arm/armsse.h | 1 + hw/arm/armsse.c | 39 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 1 deletion(-) -- 2.20.1 Reviewed-by: Richard Henderson diff --git a/include/hw/arm/armsse.h b/include/hw/arm/armsse.h index 9855ec5f269..9d830057d5c 100644 --- a/include/hw/arm/armsse.h +++ b/include/hw/arm/armsse.h @@ -150,6 +150,7 @@ typedef struct ARMSSE { UnimplementedDeviceState mhu[2]; UnimplementedDeviceState ppu[NUM_PPUS]; + UnimplementedDeviceState cachectrl[SSE_MAX_CPUS]; /* * 'container' holds all devices seen by all CPUs. diff --git a/hw/arm/armsse.c b/hw/arm/armsse.c index 280ba5c78be..41e4a781e11 100644 --- a/hw/arm/armsse.c +++ b/hw/arm/armsse.c @@ -32,6 +32,7 @@ struct ARMSSEInfo { SysConfigFormat sys_config_format; bool has_mhus; bool has_ppus; + bool has_cachectrl; }; static const ARMSSEInfo armsse_variants[] = { @@ -43,6 +44,7 @@ static const ARMSSEInfo armsse_variants[] = { .sys_config_format = IoTKitFormat, .has_mhus = false, .has_ppus = false, + .has_cachectrl = false, }, }; @@ -290,6 +292,16 @@ static void armsse_init(Object *obj) g_free(name); } } + if (info->has_cachectrl) { + for (i = 0; i < info->num_cpus; i++) { + char *name = g_strdup_printf("cachectrl%d", i); + + sysbus_init_child_obj(obj, name, &s->cachectrl[i], + sizeof(s->cachectrl[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); @@ -795,7 +807,32 @@ static void armsse_realize(DeviceState *dev, Error **errp) qdev_connect_gpio_out(DEVICE(&s->ppc_irq_orgate), 0, armsse_get_common_irq_in(s, 10)); - /* 0x40010000 .. 0x4001ffff: private CPU region: unused in IoTKit */ + /* + * 0x40010000 .. 0x4001ffff (and the 0x5001000... secure-only alias): + * private per-CPU region (all these devices are SSE-200 only): + * 0x50010000: L1 icache control registers + * 0x50011000: CPUSECCTRL (CPU local security control registers) + * 0x4001f000 and 0x5001f000: CPU_IDENTITY register block + */ + if (info->has_cachectrl) { + for (i = 0; i < info->num_cpus; i++) { + char *name = g_strdup_printf("cachectrl%d", i); + MemoryRegion *mr; + + qdev_prop_set_string(DEVICE(&s->cachectrl[i]), "name", name); + g_free(name); + qdev_prop_set_uint64(DEVICE(&s->cachectrl[i]), "size", 0x1000); + object_property_set_bool(OBJECT(&s->cachectrl[i]), true, + "realized", &err); + if (err) { + error_propagate(errp, err); + return; + } + + mr = sysbus_mmio_get_region(SYS_BUS_DEVICE(&s->cachectrl[i]), 0); + memory_region_add_subregion(&s->cpu_container[i], 0x50010000, mr); + } + } /* 0x40020000 .. 0x4002ffff : ARMSSE system control peripheral region */ /* Devices behind APB PPC1: