From 7437d1e94dc91c0807b6e7a073a68b7c444dd7d8 Mon Sep 17 00:00:00 2001 From: Luke Kenneth Casson Leighton Date: Thu, 16 Jul 2020 11:24:09 +0100 Subject: [PATCH] whoops tried doing mtspr priv, it failed but failed by trying to run TRAP which is of course not in this pipeline --- src/soc/fu/spr/test/test_pipe_caller.py | 31 ++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) 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<