summaryrefslogtreecommitdiff
path: root/parse-opcodes
diff options
context:
space:
mode:
Diffstat (limited to 'parse-opcodes')
-rwxr-xr-xparse-opcodes11
1 files changed, 7 insertions, 4 deletions
diff --git a/parse-opcodes b/parse-opcodes
index 6857c58..45d16db 100755
--- a/parse-opcodes
+++ b/parse-opcodes
@@ -24,6 +24,9 @@ arglut['imm12lo'] = (16,10)
arglut['shamt'] = (15,10)
arglut['shamtw'] = (14,10)
+arglut['crd5'] = (9,5)
+arglut['cimm6'] = (15,10)
+
typelut = {} # 0=unimp,1=j,2=lui,3=imm,4=r,5=r4,6=ish,7=ishw,10=b
typelut[0x00] = 0
typelut[0x03] = 3
@@ -126,18 +129,18 @@ def make_switch(match,mask):
print ' #include "insns/%s.h"' % name2
print ' break;'
print ' }'
- print ' #include "insns/unimp.h"'
+ print ' throw trap_illegal_instruction;'
print ' }'
print ' default:'
print ' {'
- print ' #include "insns/unimp.h"'
+ print ' throw trap_illegal_instruction;'
print ' }'
print ' }'
print ' break;'
print ' }'
print ' default:'
print ' {'
- print ' #include "insns/unimp.h"'
+ print ' throw trap_illegal_instruction;'
print ' }'
print '}'
@@ -781,7 +784,7 @@ for line in sys.stdin:
else:
sys.exit("%s: unknown token %s" % (name,token))
- if cover != 0xFFFFFFFF:
+ if not (cover == 0xFFFFFFFF or cover == 0xFFFF):
sys.exit("%s: not all bits are covered" % name)
for name2,match2 in match.iteritems():