From: Alexander Graf <agraf@suse.de>
To: qemu-ppc@nongnu.org
Cc: Blue Swirl <blauwirbel@gmail.com>,
qemu-devel Developers <qemu-devel@nongnu.org>,
Aurelien Jarno <aurelien@aurel32.net>
Subject: [Qemu-devel] [PATCH 12/21] PPC: booke206: move avail check to tlbwe
Date: Thu, 2 Feb 2012 02:49:35 +0100 [thread overview]
Message-ID: <1328147384-10387-13-git-send-email-agraf@suse.de> (raw)
In-Reply-To: <1328147384-10387-1-git-send-email-agraf@suse.de>
We can have TLBs that only support a single page size. This is defined
by the absence of the AVAIL flag in TLBnCFG. If this is the case, we
currently write invalid size info into the TLB, but override it on
internal fault.
Let's move the check over to tlbwe, so we don't have the AVAIL check in
the hotter fault path.
Signed-off-by: Alexander Graf <agraf@suse.de>
---
target-ppc/helper.c | 8 +-------
target-ppc/op_helper.c | 9 +++++++++
2 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/target-ppc/helper.c b/target-ppc/helper.c
index 672494c..31a9897 100644
--- a/target-ppc/helper.c
+++ b/target-ppc/helper.c
@@ -1298,13 +1298,7 @@ target_phys_addr_t booke206_tlb_to_page_size(CPUState *env, ppcmas_tlb_t *tlb)
int tlbm_size;
tlbncfg = env->spr[SPR_BOOKE_TLB0CFG + tlbn];
-
- if (tlbncfg & TLBnCFG_AVAIL) {
- tlbm_size = (tlb->mas1 & MAS1_TSIZE_MASK) >> MAS1_TSIZE_SHIFT;
- } else {
- tlbm_size = (tlbncfg & TLBnCFG_MINSIZE) >> TLBnCFG_MINSIZE_SHIFT;
- tlbm_size <<= 1;
- }
+ tlbm_size = (tlb->mas1 & MAS1_TSIZE_MASK) >> MAS1_TSIZE_SHIFT;
return 1024ULL << tlbm_size;
}
diff --git a/target-ppc/op_helper.c b/target-ppc/op_helper.c
index be4e539..0d1206a 100644
--- a/target-ppc/op_helper.c
+++ b/target-ppc/op_helper.c
@@ -4282,6 +4282,15 @@ void helper_booke206_tlbwe(void)
tlb->mas7_3 = ((uint64_t)env->spr[SPR_BOOKE_MAS7] << 32) |
env->spr[SPR_BOOKE_MAS3];
tlb->mas1 = env->spr[SPR_BOOKE_MAS1];
+
+ /* MAV 1.0 only */
+ if (!(tlbncfg & TLBnCFG_AVAIL)) {
+ /* force !AVAIL TLB entries to correct page size */
+ tlb->mas1 &= ~MAS1_TSIZE_MASK;
+ /* XXX can be configured in MMUCSR0 */
+ tlb->mas1 |= (tlbncfg & TLBnCFG_MINSIZE) >> 12;
+ }
+
/* XXX needs to change when supporting 64-bit e500 */
tlb->mas2 = env->spr[SPR_BOOKE_MAS2] & 0xffffffff;
--
1.6.0.2
next prev parent reply other threads:[~2012-02-02 1:49 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-02 1:49 [Qemu-devel] [PULL 00/21] ppc patch queue 2012-02-02 Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 01/21] KVM: Update headers (except HIOR mess) Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 02/21] PPC: KVM: Update HIOR code to new interface Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 03/21] PPC: Add IVOR 38-42 Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 04/21] PPC: e500mc: add missing IVORs to bitmap Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 05/21] PPC: e500: msync is 440 only, e500 has real sync Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 06/21] PPC: rename msync to msync_4xx Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 07/21] PPC: booke206: allow NULL raddr in ppcmas_tlb_check Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 08/21] PPC: booke: add tlbnps handling Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 09/21] PPC: booke206: Check for min/max TLB entry size Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 10/21] PPC: booke206: Implement tlbilx Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 11/21] PPC: booke206: Check for TLB overrun Alexander Graf
2012-02-02 1:49 ` Alexander Graf [this message]
2012-02-02 1:49 ` [Qemu-devel] [PATCH 13/21] KVM: Fix compilation on non-x86 Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 14/21] PPC: E500: Add some more excp vectors Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 15/21] PPC: E500: Add doorbell defines Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 16/21] PPC: Add CPU feature for processor control Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 17/21] PPC: Enable doorbell excp handlers Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 18/21] PPC: E500: Implement msgclr Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 19/21] PPC: E500: Implement msgsnd Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 20/21] PPC: e500mc: Enable processor control Alexander Graf
2012-02-02 1:49 ` [Qemu-devel] [PATCH 21/21] PPC: E500: Populate L1CFG0 SPR Alexander Graf
2012-02-02 10:43 ` [Qemu-devel] [PULL 00/21] ppc patch queue 2012-02-02 Andreas Färber
2012-02-04 10:18 ` Blue Swirl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1328147384-10387-13-git-send-email-agraf@suse.de \
--to=agraf@suse.de \
--cc=aurelien@aurel32.net \
--cc=blauwirbel@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).