set ISACaller.msr rather than namespace[MSR]
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Tue, 21 Jul 2020 14:23:04 +0000 (15:23 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Tue, 21 Jul 2020 14:23:04 +0000 (15:23 +0100)
src/soc/decoder/isa/caller.py

index 5c8d6b6f06a12d0dadf43d9d5db114209f984e7e..85b8aa5caa0532c7faf9850fc3eb5e9876c9007f 100644 (file)
@@ -341,7 +341,7 @@ class ISACaller:
         self.dec2 = decoder2
 
     def TRAP(self, trap_addr=0x700, trap_bit=PI.TRAP):
-        print ("TRAP:", hex(trap_addr))
+        print ("TRAP:", hex(trap_addr), hex(self.namespace['MSR'].value))
         # store CIA(+4?) in SRR0, set NIA to 0x700
         # store MSR in SRR1, set MSR to um errr something, have to check spec
         self.spr['SRR0'].value = self.pc.CIA.value
@@ -353,13 +353,13 @@ class ISACaller:
         # in figure 66 p1065 V3.0B and the table figure 65 p1063 set these
         # bits appropriately.  however it turns out that *for now* in all
         # cases (all trap_addrs) the exact same thing is needed.
-        self.namespace['MSR'][63-MSR.SF] = 1
-        self.namespace['MSR'][63-MSR.EE] = 0
-        self.namespace['MSR'][63-MSR.PR] = 0
-        self.namespace['MSR'][63-MSR.IR] = 0
-        self.namespace['MSR'][63-MSR.DR] = 0
-        self.namespace['MSR'][63-MSR.RI] = 0
-        self.namespace['MSR'][63-MSR.LE] = 1
+        self.msr[63-MSR.SF] = 1
+        self.msr[63-MSR.EE] = 0
+        self.msr[63-MSR.PR] = 0
+        self.msr[63-MSR.IR] = 0
+        self.msr[63-MSR.DR] = 0
+        self.msr[63-MSR.RI] = 0
+        self.msr[63-MSR.LE] = 1
 
     def memassign(self, ea, sz, val):
         self.mem.memassign(ea, sz, val)