[Libre-soc-isa] [Bug 1056] questions and feedback (v2) on OPF RFC ls010
    bugzilla-daemon at libre-soc.org 
    bugzilla-daemon at libre-soc.org
       
    Tue Jun  6 16:27:29 BST 2023
    
    
  
https://bugs.libre-soc.org/show_bug.cgi?id=1056
--- Comment #66 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Paul Mackerras from comment #57)
> (In reply to Luke Kenneth Casson Leighton from comment #50)
> > https://libre-soc.org/openpower/sv/remap/?#svstate_remap_area
> > 
> > ```
> >     |32:33|34:35|36:37|38:39|40:41| 42:46 | 62     |
> >     | --  | --  | --  | --  | --  | ----- | ------ |
> >     |mi0  |mi1  |mi2  |mo0  |mo1  | SVme  | RMpst  |
> > ```
> 
> Hmmm, I think a user program will expect the REMAP SPRs not to change
> underneath it even if those SVSTATE bits are zero.
turns out that "if zero equals disabled" not just for SVme...
now i think about it *only* SVme=zero means "REMAP entirely off"
which is nice...
... if SVme=0 *or* if SVSHAPE0-3 are zero, REMAP is disabled.
this allows programs to set up SVSHAPEn confident that nothing bad
will happen, and only when SVme gets set *later* to nonzero does
REMAP activate.
> So it looks like the only way to avoid having to save/restore the REMAP SPRs
> is if there is a facility enable bit for SV (or something like that) that
> would cause an interrupt if the program accesses any SV SPR.
ahhh i love the concept, let me think it through.
first thought: in some way those 5 bits of SVme *are* the "facility
enable" bits (of REMAP rather than the whole of SV).
but in this case you really *do* want to be able to "establish"
SVSHAPE0-3 well in advance: particularly for Indexed-REMAP high
performance implementations want as "advance notice" as they can
possibly get, even to the extent in the chacha20 implementation
the svindex instructions are done *once* as part of "setup".
https://git.libre-soc.org/?p=openpower-isa.git;a=blob;f=src/openpower/decoder/isa/test_caller_svp64_chacha20.py;h=0a0feac1e#l132
second thought, testing beforehand rather than just "mfspr r4, SVSTATE"
and be done with it may actually be more costly!  but five SPRs is a
bit much.
ahhh i know.  a Trap Offset.  instead of 0x700, jump to 0x720 if REMAP is
active (when SVme != 0b00000).  or, jump to an entirely new set:
     REMAP_BASE_SPR[0:48] || 0x0700
just like Raptor's KAIVP SPR. (must do that as an RFC btw)
hmmm it might have to be:
     REMAP_BASE_SPR[0:63] + (0x0700 or other Trap addr)
what do you think?
-- 
You are receiving this mail because:
You are on the CC list for the bug.
    
    
More information about the Libre-SOC-ISA
mailing list