add TRAP function, stub
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 7 Jun 2020 06:33:47 +0000 (07:33 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 7 Jun 2020 06:33:47 +0000 (07:33 +0100)
src/soc/decoder/isa/caller.py
src/soc/decoder/pseudo/parser.py

index 61aa451a1d10bbf72586d3d41ce28454d37e3f80..ae5d479a86d01db764fe662df9fce3322aa56bae 100644 (file)
@@ -233,6 +233,11 @@ class ISACaller:
         self.decoder = decoder2.dec
         self.dec2 = decoder2
 
+    def TRAP(self, trap_addr=0x700):
+        print ("TRAP: TODO")
+        # store PC in SRR0, set PC to 0x700
+        # store MSR in SRR1, set MSR to um errr something
+
     def memassign(self, ea, sz, val):
         self.mem.memassign(ea, sz, val)
 
index daf75df62fee6f431fec13cf76f29f3d2c27f96b..d2466eac3320d2d175b90bb769e39d2b5d6b88db 100644 (file)
@@ -333,6 +333,11 @@ class PowerParser:
                       | expr_stmt"""
         if isinstance(p[1], ast.Call):
             p[0] = ast.Expr(p[1])
+        elif isinstance(p[1], ast.Name) and p[1].id == 'TRAP':
+            # TRAP needs to actually be a function
+            name = ast.Name("self", ast.Load())
+            name = ast.Attribute(name, "TRAP", ast.Load())
+            p[0] = ast.Call(name, [], [])
         else:
             p[0] = p[1]