[Libre-soc-bugs] [Bug 1207] evaluate compatibility with microwatt's sc

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Thu Nov 9 02:29:30 GMT 2023


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

--- Comment #2 from Jacob Lifshay <programmerjake at gmail.com> ---
(In reply to Luke Kenneth Casson Leighton from bug #1177 comment #23)
> (In reply to Jacob Lifshay from bug #1177 comment #22)
> > (edit: please continue conversation on sc on bug #1207)

apparently you missed that...

> > well, my changes make us *compatible* with microwatt again:
> 
> okaay,interesting. can you check that they don't set the LEV bit,
> in OP_SC? implementing Hypervisor is completely off-limits.

yup. they ignore LEV.

https://git.libre-soc.org/?p=microwatt.git;a=commit;h=5c5456ef20448a09f661bfe70420f7d3f683a8dc

before sc:
SRR0 = 0x0000000012345678 SRR1 = 0x0000000000005678 MSR = 0x90000000783F2903
sc 0
after sc:
SRR0 = 0x0000000000001020 SRR1 = 0x8000000000002903 MSR = 0x80000000783F0001
before sc:
SRR0 = 0x0000000012345678 SRR1 = 0x0000000000005678 MSR = 0x9000000000000003
sc 0
after sc:
SRR0 = 0x0000000000001020 SRR1 = 0x8000000000000003 MSR = 0x8000000000000001
before sc:
SRR0 = 0x0000000012345678 SRR1 = 0x0000000000005678 MSR = 0x9000000000000003
sc 1
after sc:
SRR0 = 0x000000000000105C SRR1 = 0x8000000000000003 MSR = 0x8000000000000001
before sc:
SRR0 = 0x0000000012345678 SRR1 = 0x0000000000005678 MSR = 0x9000000000000003
sc 2
after sc:
SRR0 = 0x0000000000001098 SRR1 = 0x8000000000000003 MSR = 0x8000000000000001

> 
> > on sc-test branch (based off latest master):
> > https://git.libre-soc.org/?p=microwatt.git;a=commitdiff;
> > h=44eab364aee1a7cb6198cb148d68a065715a434a
> 
> oh! good idea. niice teeest :)

thx!

> yes use a "None" option but
> make sure it is documented.

done in:
https://git.libre-soc.org/?p=openpower-isa.git;a=commitdiff;h=7062e72765b37640e435a8551f19fcbaef81aa3b

+++ b/src/openpower/decoder/isa/caller.py
@@ -1357,6 +1357,11 @@ class ISACaller(ISACallerHelper, ISAFPHelpers,
StepLoop):
         TRAP function is callable from inside the pseudocode itself,
         hence the default arguments.  when calling from inside ISACaller
         it is best to use call_trap()
+
+        trap_addr: int | SelectableInt
+            the address to go to (before any modifications from `KAIVB`)
+        trap_bit: int | None
+            the bit in `SRR1` to set, `None` means don't set any bits.
         """
         if isinstance(trap_addr, SelectableInt):
             trap_addr = trap_addr.value

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the libre-soc-bugs mailing list