From: bugzilla-daemon@libre-soc.org
To: libre-riscv-dev@lists.libre-riscv.org
Subject: [libre-riscv-dev] [Bug 325] create POWER9 TRAP pipeline
Date: Tue, 19 May 2020 23:31:05 +0000
Message-ID: <bug-325-13-kZE2RGbn8g@https.bugs.libre-soc.org/> (raw)
In-Reply-To: <bug-325-13@https.bugs.libre-soc.org/>
https://bugs.libre-soc.org/show_bug.cgi?id=325
--- Comment #8 from Luke Kenneth Casson Leighton <lkcl@lkcl.net> ---
here is the continuation of that process (the FSM in microwatt which has to
take a couple of cycles to write out SRR0/1)
the first bit drops SRR1 into the SPR regfile (we can do 1 cycle) then moves on
the second elsif is near identical to TRAP except it sets the priv bit in the
outgoing MSR.
this we would need to detect at the instruction issue phase (MSR PR bit set)
and yes that is a pain in the neck, for *issue* phase to have to do that.
however once detected, again, an internal OP_INTPRIVthing can be created, sent
to the Trap pipeline for it to action and generate SRR1 and 0
elsif irq_valid = '1' and e_in.valid = '1' then
-- we need two cycles to write srr0 and 1
-- will need more when we have to write HEIR
-- Don't deliver the interrupt until we have a valid instruction
-- coming in, so we have a valid NIA to put in SRR0.
exception := '1';
ctrl_tmp.srr1 <= msr_copy(ctrl.msr);
elsif e_in.valid = '1' and ctrl.msr(MSR_PR) = '1' and
instr_is_privileged(e_in.insn_type, e_in.insn) then
-- generate a program interrupt
exception := '1';
ctrl_tmp.irq_nia <= std_logic_vector(to_unsigned(16#700#, 64));
ctrl_tmp.srr1 <= msr_copy(ctrl.msr);
-- set bit 45 to indicate privileged instruction type interrupt
ctrl_tmp.srr1(63 - 45) <= '1';
report "privileged instruction";
--
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev
next prev parent reply index
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-19 12:28 [libre-riscv-dev] [Bug 325] New: " bugzilla-daemon
2020-05-19 12:29 ` [libre-riscv-dev] [Bug 325] " bugzilla-daemon
2020-05-19 12:30 ` bugzilla-daemon
2020-05-19 14:11 ` bugzilla-daemon
2020-05-19 14:57 ` bugzilla-daemon
2020-05-19 15:49 ` bugzilla-daemon
2020-05-19 16:54 ` bugzilla-daemon
2020-05-19 18:09 ` bugzilla-daemon
2020-05-19 18:13 ` bugzilla-daemon
2020-05-19 20:43 ` bugzilla-daemon
2020-05-19 23:19 ` bugzilla-daemon
2020-05-19 23:31 ` bugzilla-daemon [this message]
2020-05-24 3:41 ` bugzilla-daemon
2020-05-24 3:43 ` bugzilla-daemon
2020-05-25 2:41 ` bugzilla-daemon
2020-05-27 14:43 ` bugzilla-daemon
2020-05-27 14:48 ` bugzilla-daemon
2020-05-27 14:49 ` bugzilla-daemon
2020-06-01 19:05 ` bugzilla-daemon
2020-06-02 11:21 ` bugzilla-daemon
2020-06-02 14:06 ` bugzilla-daemon
2020-06-02 17:54 ` bugzilla-daemon
2020-06-02 23:07 ` bugzilla-daemon
2020-06-02 23:07 ` bugzilla-daemon
2020-06-02 23:46 ` bugzilla-daemon
2020-06-02 23:54 ` bugzilla-daemon
2020-06-02 23:59 ` bugzilla-daemon
2020-06-03 0:11 ` bugzilla-daemon
2020-06-03 0:38 ` bugzilla-daemon
2020-06-03 0:47 ` bugzilla-daemon
2020-06-03 1:13 ` bugzilla-daemon
2020-06-03 1:28 ` bugzilla-daemon
2020-06-03 1:35 ` bugzilla-daemon
2020-06-03 1:41 ` bugzilla-daemon
2020-06-03 1:50 ` bugzilla-daemon
2020-06-03 2:31 ` bugzilla-daemon
2020-06-03 3:27 ` bugzilla-daemon
2020-06-04 0:29 ` bugzilla-daemon
2020-06-04 0:34 ` bugzilla-daemon
2020-06-04 22:41 ` bugzilla-daemon
2020-06-05 0:32 ` bugzilla-daemon
2020-06-05 0:35 ` bugzilla-daemon
2020-06-05 1:06 ` bugzilla-daemon
2020-06-05 1:09 ` bugzilla-daemon
2020-06-05 1:25 ` bugzilla-daemon
2020-06-05 2:13 ` bugzilla-daemon
2020-06-05 2:34 ` bugzilla-daemon
2020-06-05 3:37 ` bugzilla-daemon
2020-06-05 3:52 ` bugzilla-daemon
2020-06-05 4:19 ` bugzilla-daemon
2020-06-05 14:16 ` bugzilla-daemon
2020-06-05 15:12 ` bugzilla-daemon
2020-06-05 15:21 ` bugzilla-daemon
2020-06-05 15:33 ` bugzilla-daemon
2020-06-05 15:43 ` bugzilla-daemon
2020-06-05 15:46 ` bugzilla-daemon
2020-06-05 16:14 ` bugzilla-daemon
2020-06-05 18:14 ` bugzilla-daemon
2020-06-05 19:08 ` bugzilla-daemon
2020-06-05 19:15 ` bugzilla-daemon
2020-06-05 19:49 ` bugzilla-daemon
2020-06-05 20:12 ` bugzilla-daemon
2020-06-05 21:59 ` bugzilla-daemon
2020-06-05 22:02 ` bugzilla-daemon
2020-06-05 23:25 ` bugzilla-daemon
2020-06-05 23:46 ` bugzilla-daemon
2020-06-06 2:23 ` bugzilla-daemon
2020-06-07 0:31 ` bugzilla-daemon
2020-06-07 0:38 ` bugzilla-daemon
2020-06-07 0:39 ` bugzilla-daemon
2020-06-07 0:44 ` bugzilla-daemon
2020-06-07 0:51 ` bugzilla-daemon
2020-06-07 1:32 ` bugzilla-daemon
2020-06-07 1:42 ` bugzilla-daemon
2020-06-07 1:52 ` bugzilla-daemon
2020-06-07 2:09 ` bugzilla-daemon
2020-06-07 2:36 ` bugzilla-daemon
2020-06-07 3:09 ` bugzilla-daemon
2020-06-07 3:23 ` bugzilla-daemon
2020-06-07 6:11 ` bugzilla-daemon
2020-06-07 6:26 ` bugzilla-daemon
2020-06-07 20:42 ` bugzilla-daemon
2020-06-07 20:45 ` bugzilla-daemon
2020-06-07 20:51 ` bugzilla-daemon
2020-06-07 21:11 ` bugzilla-daemon
2020-06-07 21:18 ` bugzilla-daemon
2020-06-07 21:23 ` bugzilla-daemon
2020-06-07 21:31 ` bugzilla-daemon
2020-06-07 22:32 ` bugzilla-daemon
2020-06-07 22:34 ` bugzilla-daemon
2020-06-08 12:59 ` bugzilla-daemon
2020-06-08 13:42 ` bugzilla-daemon
2020-06-08 21:03 ` bugzilla-daemon
2020-06-08 22:51 ` bugzilla-daemon
2020-06-09 19:32 ` bugzilla-daemon
2020-06-09 20:59 ` bugzilla-daemon
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=bug-325-13-kZE2RGbn8g@https.bugs.libre-soc.org/ \
--to=bugzilla-daemon@libre-soc.org \
--cc=libre-riscv-dev@lists.libre-riscv.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
Libre RISC-V Mailing list Archives (accessible via public-inbox)
Archives are clonable: git clone --mirror https://inbox.libre-soc.org/libre-riscv-dev
Example config snippet for mirrors
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git