summaryrefslogtreecommitdiff
path: root/sys/src/libmach
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-05-04 18:40:05 +0200
committercinap_lenrek <cinap_lenrek@gmx.de>2013-05-04 18:40:05 +0200
commit3e8a38dfb33e26395d63467669dbf896ec774eaa (patch)
tree81f28599e85eba0abaf1753b3fa8263ab9d33044 /sys/src/libmach
parentcf76ca4f3214c3aed03bc99c48e74d87f4dd0756 (diff)
libmach: update mips disassembler (from sources)
Diffstat (limited to 'sys/src/libmach')
-rw-r--r--sys/src/libmach/vcodas.c8
-rw-r--r--sys/src/libmach/vdb.c10
2 files changed, 14 insertions, 4 deletions
diff --git a/sys/src/libmach/vcodas.c b/sys/src/libmach/vcodas.c
index 355ae81c8..7ab8fb5f5 100644
--- a/sys/src/libmach/vcodas.c
+++ b/sys/src/libmach/vcodas.c
@@ -492,9 +492,13 @@ cop0(Instr *i)
case 16:
m = "rfe";
break;
-
- case 32:
+
+ case 24:
m = "eret";
+ break;
+
+ case 32:
+ m = "wait";
break;
}
if (m) {
diff --git a/sys/src/libmach/vdb.c b/sys/src/libmach/vdb.c
index d62521fcd..de67905ff 100644
--- a/sys/src/libmach/vdb.c
+++ b/sys/src/libmach/vdb.c
@@ -415,7 +415,9 @@ static void
sll(Opcode *o, Instr *i)
{
if (i->w0 == 0)
- bprint(i, "NOOP");
+ bprint(i, "NOOP"); /* unofficial nop */
+ else if (i->w0 == 0xc0) /* 0xc0: SLL $3,R0 */
+ bprint(i, "EHB");
else if (i->rd == i->rt)
format(o->mnemonic, i, "$%a,R%d");
else
@@ -962,9 +964,13 @@ cop0(Instr *i)
m = "RFE";
break;
- case 32:
+ case 24:
m = "ERET";
break;
+
+ case 32:
+ m = "WAIT";
+ break;
}
if (m) {
format(m, i, 0);