[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 6/6] target/ppc: Implement HEIR SPR
From: |
Nicholas Piggin |
Subject: |
Re: [PATCH v2 6/6] target/ppc: Implement HEIR SPR |
Date: |
Sun, 02 Apr 2023 12:48:06 +1000 |
On Wed Mar 29, 2023 at 3:51 PM AEST, Michael Neuling wrote:
> Nick,
>
> > + case POWERPC_EXCP_HV_EMU:
> > + env->spr[SPR_HEIR] = insn;
> > + if (is_prefix_excp(env, insn)) {
> > + uint32_t insn2 = ppc_ldl_code(env, env->nip + 4);
> > + env->spr[SPR_HEIR] |= (uint64_t)insn2 << 32;
>
> Are inst and inst2 in the right locations here? I think you might need
> insn in the top half and insn2 in the bottom.
>
> I wrote the little test case below. I'd expect GPR0 and GPR1 to end up
> with the same value, but they don't with this code
You're right. I was a bit confused becaue the prefix instructions are
treated as two words, so ld (insn) in little endian doesn't match
HEIR, for example.
The ISA uses the term "image", but that's only really defined for 4
byte instructions AFAIKS. You can deduce though,
There may be circumstances in which the suffix cannot be loaded [...]
In such circumstances, bits 32:63 are set to 0s.
So prefix word goes in the high bits. Real P10 agrees, so does
systemsim. I'll fix and re-send.
Is there any better semantics in the ISA or should I raise an issue to
clarify instruction image for prefix?
Thanks,
Nick
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH v2 6/6] target/ppc: Implement HEIR SPR,
Nicholas Piggin <=