from nmutil.iocontrol import RecordObject
from nmigen import Signal
-# https://bugs.libre-soc.org/show_bug.cgi?id=465
-class LDSTException(RecordObject):
- _exc_types = ['alignment', 'instr_fault', 'invalid', 'badtree',
- 'perm_error', 'rc_error', 'segment_fault',]
- def __init__(self, name=None):
- RecordObject.__init__(self, name=name)
- self.happened = Signal()
- for f in self._exc_types:
- setattr(self, f, Signal())
+from openpower.exceptions import LDSTException
class DCacheToLoadStore1Type(RecordObject):
def __init__(self, name=None):
super().__init__(name=name)
self.valid = Signal()
+ self.hold = Signal()
self.load = Signal() # this is a load
self.dcbz = Signal()
self.nc = Signal()
self.reserve = Signal()
+ self.atomic = Signal() # part of a multi-transfer atomic op
+ self.atomic_last = Signal()
self.virt_mode = Signal()
self.priv_mode = Signal()
self.addr = Signal(64)
- self.data = Signal(64)
+ self.data = Signal(64) # valid the cycle after valid=1
self.byte_sel = Signal(8)