[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