X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fsoc%2Ffu%2Fspr%2Ftest%2Ftest_pipe_caller.py;h=3ba1ac3dff97afa9ce637a599e5337f27363a174;hb=7437d1e94dc91c0807b6e7a073a68b7c444dd7d8;hp=c05ea950fe794f8eeb65d8d373daeda0055df782;hpb=d7a941e3ca6b9ceb8a0f667efc8c7d10483fefed;p=soc.git diff --git a/src/soc/fu/spr/test/test_pipe_caller.py b/src/soc/fu/spr/test/test_pipe_caller.py index c05ea950..3ba1ac3d 100644 --- a/src/soc/fu/spr/test/test_pipe_caller.py +++ b/src/soc/fu/spr/test/test_pipe_caller.py @@ -11,6 +11,8 @@ from soc.decoder.selectable_int import SelectableInt from soc.simulator.program import Program from soc.decoder.isa.all import ISA from soc.config.endian import bigendian +from soc.consts import MSR + from soc.fu.test.common import (TestCase, ALUHelpers) from soc.fu.spr.pipeline import SPRBasePipe @@ -50,6 +52,7 @@ def set_alu_inputs(alu, dec2, sim): yield from ALUHelpers.set_fast_spr1(alu, dec2, inp) yield from ALUHelpers.set_slow_spr1(alu, dec2, inp) + return inp # This test bench is a bit different than is usual. Initially when I @@ -78,8 +81,10 @@ class SPRTestCase(FHDLTestCase): super().__init__(name) self.test_name = name - def run_tst_program(self, prog, initial_regs=None, initial_sprs=None): - tc = TestCase(prog, self.test_name, initial_regs, initial_sprs) + def run_tst_program(self, prog, initial_regs=None, initial_sprs=None, + initial_msr=0): + tc = TestCase(prog, self.test_name, initial_regs, initial_sprs, + msr=initial_msr) self.test_data.append(tc) def test_1_mfspr(self): @@ -126,6 +131,23 @@ class SPRTestCase(FHDLTestCase): self.run_tst_program(Program(lst, bigendian), initial_regs, initial_sprs) + @unittest.skip("spr does not have TRAP in it. has to be done another way") + def test_3_mtspr_priv(self): + lst = ["mtspr 26, 1", # SRR0 + "mtspr 27, 2", # SRR1 + "mtspr 1, 3", # XER + "mtspr 9, 4",] # CTR + initial_regs = [0] * 32 + initial_regs[1] = 0x129518230011feed + initial_regs[2] = 0x123518230011feed + initial_regs[3] = 0xe00c0000 + initial_regs[4] = 0x1010101010101010 + initial_sprs = {'SRR0': 0x12345678, 'SRR1': 0x5678, 'LR': 0x1234, + 'XER': 0x0} + msr = 1<