Libre RISC-V Mailing list Archives (accessible via public-inbox)
 help / color / Atom feed
* [libre-riscv-dev] [Bug 348] New: POWER9 SPR pipeline needed
@ 2020-05-24 21:46 bugzilla-daemon
  2020-05-24 21:49 ` [libre-riscv-dev] [Bug 348] " bugzilla-daemon
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: bugzilla-daemon @ 2020-05-24 21:46 UTC (permalink / raw)
  To: libre-riscv-dev

https://bugs.libre-soc.org/show_bug.cgi?id=348

            Bug ID: 348
           Summary: POWER9 SPR pipeline needed
           Product: Libre-SOC's first SoC
           Version: unspecified
          Hardware: PC
                OS: Mac OS
            Status: CONFIRMED
          Severity: enhancement
          Priority: ---
         Component: Source Code
          Assignee: lkcl@lkcl.net
          Reporter: lkcl@lkcl.net
                CC: libre-riscv-dev@lists.libre-riscv.org
   NLnet milestone: ---

OP_MTSPR, OP_MFSPR operations to be added to an SPR pipeline.
with some of the SPRs being in a separate regfile (XER, LR, CTR, SRR1, SRR2)
this pipeline is slightly more involved than it seems.   it also requires
quite a lot of regfile ports.

-- 
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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [libre-riscv-dev] [Bug 348] POWER9 SPR pipeline needed
  2020-05-24 21:46 [libre-riscv-dev] [Bug 348] New: POWER9 SPR pipeline needed bugzilla-daemon
@ 2020-05-24 21:49 ` " bugzilla-daemon
  2020-05-27 14:57 ` bugzilla-daemon
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: bugzilla-daemon @ 2020-05-24 21:49 UTC (permalink / raw)
  To: libre-riscv-dev

https://bugs.libre-soc.org/show_bug.cgi?id=348

--- Comment #1 from Luke Kenneth Casson Leighton <lkcl@lkcl.net> ---
OP_MFSPR - note that XER is "constructed"

report "MFSPR to SPR " & integer'image(decode_spr_num(e_in.insn)) &
    "=" & to_hstring(a_in);
if is_fast_spr(e_in.read_reg1) then
    result := a_in;
    if decode_spr_num(e_in.insn) = SPR_XER then
        -- bits 0:31 and 35:43 are treated as reserved and return 0s
        -- when read using mfxer
        result(63 downto 32) := (others => '0');
        result(63-32) := v.e.xerc.so;
        result(63-33) := v.e.xerc.ov;
        result(63-34) := v.e.xerc.ca;
        result(63-35 downto 63-43) := "000000000";
        result(63-44) := v.e.xerc.ov32;
        result(63-45) := v.e.xerc.ca32;
else
    case decode_spr_num(e_in.insn) is
    when SPR_TB =>              result := ctrl.tb;
    when SPR_DEC =>             result := ctrl.dec;
    when others =>              result := (others => '0');
    end case;

-- 
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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [libre-riscv-dev] [Bug 348] POWER9 SPR pipeline needed
  2020-05-24 21:46 [libre-riscv-dev] [Bug 348] New: POWER9 SPR pipeline needed bugzilla-daemon
  2020-05-24 21:49 ` [libre-riscv-dev] [Bug 348] " bugzilla-daemon
@ 2020-05-27 14:57 ` bugzilla-daemon
  2020-05-27 17:40 ` bugzilla-daemon
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: bugzilla-daemon @ 2020-05-27 14:57 UTC (permalink / raw)
  To: libre-riscv-dev

https://bugs.libre-soc.org/show_bug.cgi?id=348

--- Comment #2 from Luke Kenneth Casson Leighton <lkcl@lkcl.net> ---
OP_MTSPR:

if is_fast_spr(e_in.write_reg) then
    result := c_in;
    result_en := '1';
    if decode_spr_num(e_in.insn) = SPR_XER then
        v.e.xerc.so := c_in(63-32);
        v.e.xerc.ov := c_in(63-33);
        v.e.xerc.ca := c_in(63-34);
        v.e.xerc.ov32 := c_in(63-44);
        v.e.xerc.ca32 := c_in(63-45);
        v.e.write_xerc_enable := '1';
else
    -- slow spr
    case decode_spr_num(e_in.insn) is
    when SPR_DEC =>
        ctrl_tmp.dec <= c_in;
    when others =>
        -- mtspr to unimplemented SPRs should be a nop in
        -- supervisor mode and a program interrupt for user mode
        if ctrl.msr(MSR_PR) = '1' then
              illegal := '1';
    end case;

-- 
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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [libre-riscv-dev] [Bug 348] POWER9 SPR pipeline needed
  2020-05-24 21:46 [libre-riscv-dev] [Bug 348] New: POWER9 SPR pipeline needed bugzilla-daemon
  2020-05-24 21:49 ` [libre-riscv-dev] [Bug 348] " bugzilla-daemon
  2020-05-27 14:57 ` bugzilla-daemon
@ 2020-05-27 17:40 ` bugzilla-daemon
  2020-05-27 17:58 ` bugzilla-daemon
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: bugzilla-daemon @ 2020-05-27 17:40 UTC (permalink / raw)
  To: libre-riscv-dev

https://bugs.libre-soc.org/show_bug.cgi?id=348

Jacob Lifshay <programmerjake@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |programmerjake@gmail.com

--- Comment #3 from Jacob Lifshay <programmerjake@gmail.com> ---
(In reply to Luke Kenneth Casson Leighton from comment #1)
>     if decode_spr_num(e_in.insn) = SPR_XER then
> 	-- bits 0:31 and 35:43 are treated as reserved and return 0s
>         -- when read using mfxer

from what I recall, at least some of the reserved XER bits are software
writable and need to be implemented.

-- 
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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [libre-riscv-dev] [Bug 348] POWER9 SPR pipeline needed
  2020-05-24 21:46 [libre-riscv-dev] [Bug 348] New: POWER9 SPR pipeline needed bugzilla-daemon
                   ` (2 preceding siblings ...)
  2020-05-27 17:40 ` bugzilla-daemon
@ 2020-05-27 17:58 ` bugzilla-daemon
  2020-05-28 16:20 ` bugzilla-daemon
  2020-06-05  4:02 ` bugzilla-daemon
  5 siblings, 0 replies; 7+ messages in thread
From: bugzilla-daemon @ 2020-05-27 17:58 UTC (permalink / raw)
  To: libre-riscv-dev

https://bugs.libre-soc.org/show_bug.cgi?id=348

--- Comment #4 from Luke Kenneth Casson Leighton <lkcl@lkcl.net> ---
(In reply to Jacob Lifshay from comment #3)
> (In reply to Luke Kenneth Casson Leighton from comment #1)
> >     if decode_spr_num(e_in.insn) = SPR_XER then
> > 	-- bits 0:31 and 35:43 are treated as reserved and return 0s
> >         -- when read using mfxer
> 
> from what I recall, at least some of the reserved XER bits are software
> writable and need to be implemented.

can you recall where and drop the relevant text and ref here?  technically it
is possible to shadow the bits from the slow SPR regfile but it is messy.

-- 
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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [libre-riscv-dev] [Bug 348] POWER9 SPR pipeline needed
  2020-05-24 21:46 [libre-riscv-dev] [Bug 348] New: POWER9 SPR pipeline needed bugzilla-daemon
                   ` (3 preceding siblings ...)
  2020-05-27 17:58 ` bugzilla-daemon
@ 2020-05-28 16:20 ` bugzilla-daemon
  2020-06-05  4:02 ` bugzilla-daemon
  5 siblings, 0 replies; 7+ messages in thread
From: bugzilla-daemon @ 2020-05-28 16:20 UTC (permalink / raw)
  To: libre-riscv-dev

https://bugs.libre-soc.org/show_bug.cgi?id=348

--- Comment #5 from Jacob Lifshay <programmerjake@gmail.com> ---
(In reply to Luke Kenneth Casson Leighton from comment #4)
> (In reply to Jacob Lifshay from comment #3)
> > (In reply to Luke Kenneth Casson Leighton from comment #1)
> > >     if decode_spr_num(e_in.insn) = SPR_XER then
> > > 	-- bits 0:31 and 35:43 are treated as reserved and return 0s
> > >         -- when read using mfxer
> > 
> > from what I recall, at least some of the reserved XER bits are software
> > writable and need to be implemented.
> 
> can you recall where and drop the relevant text and ref here?  technically
> it is possible to shadow the bits from the slow SPR regfile but it is messy.

it's in section
3.2.2 Fixed-Point Exception Register page 50 (74 of PDF)
of Power ISA v3.1
<describing XER bit fields>
46:56 Reserved
Bits 48:55 are implemented, and can be read
and written by software as if the bits contained
a defined field.
57:63 This field specifies the number of bytes to be
transferred by a Load String Indexed or Store
String Indexed instruction.

Bits 48:55 of the XER correspond to bits 16:23 of
the XER in the POWER Architecture. In the
POWER Architecture bits 16:23 of the XER contain
the comparison byte for the lscbx instruction.
Power ISA lacks the lscbx instruction, but some
application programs that run on processors that
implement Power ISA may still use lscbx, and
privileged software may emulate the instruction.
XER48:55 may be assigned a meaning in a future
version of the architecture, when POWER compati-
bility for lscbx is no longer needed, so these bits
should not be used for purposes other than the
lscbx comparison byte.

-- 
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

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [libre-riscv-dev] [Bug 348] POWER9 SPR pipeline needed
  2020-05-24 21:46 [libre-riscv-dev] [Bug 348] New: POWER9 SPR pipeline needed bugzilla-daemon
                   ` (4 preceding siblings ...)
  2020-05-28 16:20 ` bugzilla-daemon
@ 2020-06-05  4:02 ` bugzilla-daemon
  5 siblings, 0 replies; 7+ messages in thread
From: bugzilla-daemon @ 2020-06-05  4:02 UTC (permalink / raw)
  To: libre-riscv-dev

https://bugs.libre-soc.org/show_bug.cgi?id=348

--- Comment #6 from Luke Kenneth Casson Leighton <lkcl@lkcl.net> ---
TODO: MFSPR/MTSPR need fast-reg decoding in PowerDecoder2 DecodeA and DecodeOut

-- 
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

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, back to index

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-24 21:46 [libre-riscv-dev] [Bug 348] New: POWER9 SPR pipeline needed bugzilla-daemon
2020-05-24 21:49 ` [libre-riscv-dev] [Bug 348] " bugzilla-daemon
2020-05-27 14:57 ` bugzilla-daemon
2020-05-27 17:40 ` bugzilla-daemon
2020-05-27 17:58 ` bugzilla-daemon
2020-05-28 16:20 ` bugzilla-daemon
2020-06-05  4:02 ` bugzilla-daemon

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