[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH 6/6] PPC: booke206: Implement tlbilx
From: |
Alexander Graf |
Subject: |
Re: [Qemu-ppc] [PATCH 6/6] PPC: booke206: Implement tlbilx |
Date: |
Sat, 21 Jan 2012 03:57:42 +0100 |
On 20.01.2012, at 21:40, Scott Wood wrote:
> On 01/19/2012 09:17 PM, Alexander Graf wrote:
>> + case 3:
>> + /* flush by pid and ea */
>> + for (i = 0; i < BOOKE206_MAX_TLBN; i++) {
>> + int ways = booke206_tlb_ways(env, i);
>> +
>> + for (j = 0; j < ways; j++) {
>> + tlb = booke206_get_tlbm(env, i, address, j);
>> + if ((ppcmas_tlb_check(env, tlb, NULL, address, pid) != 0) ||
>> + (tlb->mas1 & MAS1_IPROT) ||
>> + ((tlb->mas1 & MAS1_TS) != ts) ||
>> + ((tlb->mas1 & MAS1_IND) != ind) ||
>> + ((tlb->mas1 & MAS1_TSIZE_MASK) != size) ||
>> + ((tlb->mas8 & MAS8_TGS) != sgs)) {
>> + continue;
>> + }
>> + tlb->mas1 &= ~MAS1_VALID;
>> + }
>
> ISIZE is only supported on MAV=2.0, and then only if TLB write
> conditional or Hardware Entry Select is supported.
Actually ISIZE is even more tricky than that. According to ISA 2.06 the
instruction is treated as invalid instruction if ISIZE doesn't work for the TLB
it's invalidating in:
If T = 3 and the implementation requires the page size to be specified by
MAS6ISIZE (MMUCFG[TWC] = 1 or, for any TLB array, TLBnCFG[HES] = 1) and the
page size specified by MAS6ISIZE is not supported by the implementation, the
instruction is treated as if the instruction form is invalid.
But since it's MAV 2.0 only we can leave it out for now. I'll try to make the
code obvious enough on where to put it back in later.
> Also, I don't know to what extent you want to emulate particular cores
> versus a generic implementation of the architecture, but e500mc does not
> filter on MAS6[SAS]. This is permitted as noted in 6.7.1's Programming
> Note allowing generous TLB invalidations, and is documented this way in
> the e500mc manual so software could be relying on it.
We can leave SAS matching out and just always conform to the spec that way. If
any guest OS later needs specific core behavior to actually match on SAS, we
can still add it back in.
Alex
- [Qemu-ppc] [PATCH 0/6] Make -cpu e500mc useful in TCG, Alexander Graf, 2012/01/19
- [Qemu-ppc] [PATCH 3/6] PPC: e500: msync is 440 only, e500 has real sync, Alexander Graf, 2012/01/19
- [Qemu-ppc] [PATCH 6/6] PPC: booke206: Implement tlbilx, Alexander Graf, 2012/01/19
- [Qemu-ppc] [PATCH 5/6] PPC: booke206: Check for min/max TLB entry size, Alexander Graf, 2012/01/19
- Re: [Qemu-ppc] [Qemu-devel] [PATCH 5/6] PPC: booke206: Check for min/max TLB entry size, Andreas Färber, 2012/01/20
- [Qemu-ppc] [PATCH] PPC: booke206: Check for min/max TLB entry size, Alexander Graf, 2012/01/20
- Re: [Qemu-ppc] [PATCH] PPC: booke206: Check for min/max TLB entry size, Scott Wood, 2012/01/20
- Re: [Qemu-ppc] [PATCH] PPC: booke206: Check for min/max TLB entry size, Alexander Graf, 2012/01/20
- Re: [Qemu-ppc] [PATCH] PPC: booke206: Check for min/max TLB entry size, Scott Wood, 2012/01/23
- Re: [Qemu-ppc] [PATCH] PPC: booke206: Check for min/max TLB entry size, Alexander Graf, 2012/01/23
[Qemu-ppc] [PATCH 4/6] PPC: booke206: allow NULL raddr in ppcmas_tlb_check, Alexander Graf, 2012/01/19
[Qemu-ppc] [PATCH 1/6] PPC: Add IVOR 38-42, Alexander Graf, 2012/01/19