[libre-riscv-dev] [Bug 325] create POWER9 TRAP pipeline
bugzilla-daemon at libre-soc.org
bugzilla-daemon at libre-soc.org
Fri Jun 5 04:37:24 BST 2020
https://bugs.libre-soc.org/show_bug.cgi?id=325
--- Comment #43 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Luke Kenneth Casson Leighton from comment #42)
> from microwatt decode1.vhdl
>
> elsif v.decode.insn_type = OP_RFID then
> report "PPC RFID";
> v.ispr1 := fast_spr_num(SPR_SRR0);
> v.ispr2 := fast_spr_num(SPR_SRR1);
> end if;
>
> that's what needs to go in PowerDecode2
done. DecodeOut --> SRR0, DecodeOut2 --> SRR1
so.
when the TRAP pipeline is called, SRR0 will go into spr1, SRR1 will go into
spr2.
--- a/src/soc/decoder/power_decoder2.py
+++ b/src/soc/decoder/power_decoder2.py
@@ -241,6 +241,12 @@ class DecodeOut(Elaboratable):
with m.If(~self.dec.BO[2]): # 3.0B p38 BO2=0, use CTR reg
comb += self.fast_out.data.eq(FastRegs.CTR) # constant: CTR
comb += self.fast_out.ok.eq(1)
+
+ # RFID 1st spr (fast)
+ with m.If(op.internal_op == InternalOp.OP_RFID):
+ comb += self.fast_out.data.eq(FastRegs.SRR0) # constant: SRR0
+ comb += self.fast_out.ok.eq(1)
+
return m
@@ -275,6 +281,11 @@ class DecodeOut2(Elaboratable):
comb += self.fast_out.data.eq(FastRegs.LR) # constant: LR
comb += self.fast_out.ok.eq(1)
+ # RFID 2nd spr (fast)
+ with m.If(op.internal_op == InternalOp.OP_RFID):
+ comb += self.fast_out.data.eq(FastRegs.SRR1) # constant: SRR1
+ comb += self.fast_out.ok.eq(1)
+
return m
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the libre-riscv-dev
mailing list