some opcodes such as tlbie and dcbz as well as those setting pte all really need tobe in their own pipeline.
decision here, anything to do with tlbie, or dcbz and cache or mmu in general goes into this Function Unit.
means creating a new FU in the CSV files (adding to power_enums.py)
it will need to be a FSM not a pipeline because it gets too complex otherwise.
changing tlbie etc not expected to be particularly common so this is ok.
-- send MMU-related SPRs to loadstore1
case sprn is
when SPR_DAR | SPR_DSISR | SPR_PID | SPR_PRTBL =>
v.decode.unit := LDST;
in PowerDecoder2 must redirect these SPRs to the MMU FU
majorop := unsigned(f_in.insn(31 downto 26));
if f_in.fetch_failed = '1' then
v.valid := '1';
-- Only send down a single OP_FETCH_FAILED
if r.decode.insn_type = OP_FETCH_FAILED then
v.valid := '0';
v.decode := fetch_fail_inst;
also, like interrupts, if a fetch fails run a new op (microcode style)