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
# 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)