From patchwork Tue Mar 12 16:18:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 160126 Delivered-To: patch@linaro.org Received: by 2002:a02:5cc1:0:0:0:0:0 with SMTP id w62csp13312621jad; Tue, 12 Mar 2019 09:38:17 -0700 (PDT) X-Google-Smtp-Source: APXvYqzFsoXco7VT8C4fB13i2rnEx/NIDi9TVPdtuwzMkFjYU7XZjx4cdwRLHk81ZY5aMOLgsUQG X-Received: by 2002:a0d:f7c1:: with SMTP id h184mr2302084ywf.170.1552408697062; Tue, 12 Mar 2019 09:38:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552408697; cv=none; d=google.com; s=arc-20160816; b=C4eEMi1lmOubk+Q25rWtQM8YJlVxcT8kTg3IAwViF/NPrQqdKJKn2hmJJYx2e8QMnf ByxPVYL62rgDTYoPiuKSVDzCa2YM36D8iqnknaCW6CUi3RUlSEX7Hi17oCu9I2vhQooa KV5WnaSErnbiBuhjhec1w7XY7Cgg9GmURCvVjhYA17Dg1SCGtvD5pqhRXix7phljttbm RheQ9ffasFS2ojpmrVGVI2gn3dL+QzzBi0oJ9Gyqvt0TD/UrKVax2ZZIf5dzqXS4NTuo c8LbFbEWzcmJJFAAf1PLZq/w8AozqU2anfEOa7Ii/GHj31Qn//YxunY/tFlF9ynsu0RD bPKA== 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:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=FbaVxm/TsZJvR2OuDOVMoD8m1rAoYZpNENsEpdiMaYk=; b=eKOXhY89VKW5k8Iaam931Z+YDdk57FjNSKQADRaaAyzqHOK15j0DLnHzFfiN9IAqqg V35TSWgGct8oiDGBS8wDPwuX8XqR/aUgLbBTxiRZkUuYPsXqN+nDGu5S6BGnXZ2ySMP+ Zd93me89W7EXpkxzP8+PYUQ9IehN7ffmp/7b+fhepT+LzZnrMP5U0r7to8lTHzzYppEc Dh8k1Oyz4dI+qyjI9PHC8VbWTagDXXo4FmVTvS8SPSUDs7fFqUd6Gv0nfsZ1nvsQJj0M lSudSmWQC16UTrBVsww67ysnX4TzIqpHaYfnMwlOt2r/psJA8JpXLaSkWJQO6qvYsH9w PeKQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=BJq3DgAD; 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 y84si5634785ywg.213.2019.03.12.09.38.16 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 12 Mar 2019 09:38:17 -0700 (PDT) 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=BJq3DgAD; 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]:55523 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h3kPw-0004jK-G5 for patch@linaro.org; Tue, 12 Mar 2019 12:38:16 -0400 Received: from eggs.gnu.org ([209.51.188.92]:36670) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h3k7Y-0005xH-Sk for qemu-devel@nongnu.org; Tue, 12 Mar 2019 12:19:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h3k7X-0003sk-6x for qemu-devel@nongnu.org; Tue, 12 Mar 2019 12:19:16 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]:46162) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h3k7V-0003rK-IQ for qemu-devel@nongnu.org; Tue, 12 Mar 2019 12:19:15 -0400 Received: by mail-pf1-x42a.google.com with SMTP id s23so2152016pfe.13 for ; Tue, 12 Mar 2019 09:19:13 -0700 (PDT) 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; bh=FbaVxm/TsZJvR2OuDOVMoD8m1rAoYZpNENsEpdiMaYk=; b=BJq3DgADOerEnSp/yqW4wRrVctkH97akeHu5vFq9CCgL0TDjoL1bZG0fngY7Daw3Yh 3rajLGfPgcgmHmF9rpwzJfdx95W8LXpcKG1dozJXo1cPDjZuqax/jwRBUokv/LSN5NqM lzMyebiTLslei6LWy7TXGBSAf6kThkMzXlZnk4Ty0mZDzqxXN3UvjZZ8bJOx0l/1+5EZ kBjXhqMzRNpDIHw2rmXQIpX8un2AgamIkRvENQdeFO8+gwZh4DRIi8je0VMewGHzwFHz NYOuVf8FWfwnYhyTWCiZo54vjSA85k68IkEp+uN6uf9XSsCG3oTQMc9mMYbvgxaBKiXE /+UA== 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; bh=FbaVxm/TsZJvR2OuDOVMoD8m1rAoYZpNENsEpdiMaYk=; b=cRMAwvuVm6z0XiKOHsuCoAC0c3xRtv7+763SKAV+qCHh4+xXqC+RS+mxyFn1cAnAB4 Ka2xbJ1zU5SLZw6UsOTwkP1kRwQH4HMfh266jN1VwTMkZ1UZ8/lPQPpHx0GsSHI5IkpS z6J2Ttz2rMAp1r7KxtUywzaKHK3jqxw3EmE8ju7D5Rpzze4gfhWjm0t/Hf6BE9gy+rQ7 gE+MJ9o7vSbvKVwS3zuuO1o3wWSr9IUW/wFMmqxlKU7c8hEMrwyzHqw22sqRXkS3qeJU e3OTfOqWnQy5zFRL852UMW4iZiBsqXPUzUgX0kz0acLIe2yilkQjQUjvQbN+qiEzmeC/ jnfQ== X-Gm-Message-State: APjAAAVtSNfUncpAkGOI++R9YRbxZr+XVvpuYLdh1vglJz3prWunF9Df RRvMR+6A+qMejiZx2XGrgzeVjGz01jE= X-Received: by 2002:a63:eb56:: with SMTP id b22mr36005118pgk.287.1552407552106; Tue, 12 Mar 2019 09:19:12 -0700 (PDT) Received: from cloudburst.twiddle.net (97-113-188-82.tukw.qwest.net. [97.113.188.82]) by smtp.gmail.com with ESMTPSA id q62sm12605644pga.32.2019.03.12.09.19.10 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 12 Mar 2019 09:19:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Tue, 12 Mar 2019 09:18:56 -0700 Message-Id: <20190312161904.31130-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.17.2 In-Reply-To: <20190312161904.31130-1-richard.henderson@linaro.org> References: <20190312161904.31130-1-richard.henderson@linaro.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::42a Subject: [Qemu-devel] [PULL 03/11] target/hppa: fix TLB handling for page 0 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: peter.maydell@linaro.org, Sven Schnelle Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Sven Schnelle Assume the following sequence: pitlbe r0(sr0,r0) iitlba r4,(sr0,r0) ldil L%3000000,r5 iitlbp r5,(sr0,r0) This will purge the whole TLB and add an entry for page 0. However the current TLB implementation in helper_iitlba() will store to the last empty TLB entry, while helper_iitlbp() will write to the first empty entry. That is because an empty entry will match address 0 in helper_iitlba() Signed-off-by: Sven Schnelle Message-Id: <20190311191602.25796-3-svens@stackframe.org> Reviewed-by: Richard Henderson Signed-off-by: Richard Henderson --- target/hppa/mem_helper.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) -- 2.17.2 diff --git a/target/hppa/mem_helper.c b/target/hppa/mem_helper.c index aecf3075f6..648b94cc12 100644 --- a/target/hppa/mem_helper.c +++ b/target/hppa/mem_helper.c @@ -242,11 +242,13 @@ void HELPER(itlba)(CPUHPPAState *env, target_ulong addr, target_ureg reg) /* Zap any old entries covering ADDR; notice empty entries on the way. */ for (i = 0; i < ARRAY_SIZE(env->tlb); ++i) { hppa_tlb_entry *ent = &env->tlb[i]; - if (!ent->entry_valid) { - empty = ent; - } else if (ent->va_b <= addr && addr <= ent->va_e) { - hppa_flush_tlb_ent(env, ent); - empty = ent; + if (ent->va_b <= addr && addr <= ent->va_e) { + if (ent->entry_valid) { + hppa_flush_tlb_ent(env, ent); + } + if (!empty) { + empty = ent; + } } }