add TT.size and use it in PowerDecoder and trap input record
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 22 Jul 2020 11:59:13 +0000 (12:59 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 22 Jul 2020 11:59:13 +0000 (12:59 +0100)
src/soc/consts.py
src/soc/decoder/decode2execute1.py
src/soc/fu/trap/trap_input_record.py

index ee5b4baef4458da9130f1e20b9596612333f12c8..27d5b37d76f75b56993b081571e426301438910e 100644 (file)
@@ -50,3 +50,5 @@ class TT:
     TRAP = 1<<2
     ADDR = 1<<3
     ILLEG = 1<<4 # currently the max, therefore traptype must be 5 bits
+    # TODO: support for TM_BAD_THING (not included yet in trap main_stage.py)
+    size = 5 # MUST update this to contain the full number of Trap Types
index 410cb7eca0b003afad8a9d8775fa1e27c100a8eb..c5c2094527aa417945475d737ac7a93fd699f3e0 100644 (file)
@@ -6,6 +6,7 @@ based on Anton Blanchard microwatt decode2.vhdl
 from nmigen import Signal, Record
 from nmutil.iocontrol import RecordObject
 from soc.decoder.power_enums import MicrOp, CryIn, Function, SPR, LDSTMode
+from soc.consts import TT
 
 
 class Data(Record):
@@ -54,7 +55,7 @@ class Decode2ToOperand(RecordObject):
         self.byte_reverse  = Signal(reset_less=True)
         self.sign_extend  = Signal(reset_less=True)# do we need this?
         self.ldst_mode  = Signal(LDSTMode, reset_less=True) # LD/ST mode
-        self.traptype  = Signal(5, reset_less=True) # see trap main_stage.py
+        self.traptype  = Signal(TT.size, reset_less=True) # trap main_stage.py
         self.trapaddr  = Signal(13, reset_less=True)
         self.read_cr_whole = Signal(reset_less=True)
         self.write_cr_whole = Signal(reset_less=True)
index f7613790058fc9d5146a2ac3caa1206dcf96f40c..dd87f30ffa6f2bab85b1e957ebd6efba15e5fbec 100644 (file)
@@ -1,5 +1,6 @@
 from soc.fu.base_input_record import CompOpSubsetBase
 from soc.decoder.power_enums import (MicrOp, Function)
+from soc.consts import TT
 
 
 class CompTrapOpSubset(CompOpSubsetBase):
@@ -16,7 +17,7 @@ class CompTrapOpSubset(CompOpSubsetBase):
                   ('msr', 64), # TODO: "state" in separate Record
                   ('cia', 64), # likewise
                   ('is_32bit', 1),
-                  ('traptype', 5), # see trap main_stage.py and PowerDecoder2
+                  ('traptype', TT.size), # see trap main_stage.py, PowerDecoder2
                   ('trapaddr', 13),
                   )