summary refs log tree commit diff stats
path: root/disas/mips.c
diff options
context:
space:
mode:
authorYongbok Kim <yongbok.kim@imgtec.com>2016-02-03 12:31:07 +0000
committerLeon Alrae <leon.alrae@imgtec.com>2016-02-26 08:59:17 +0000
commit01bc435b44b8802cc4697faa07d908684afbce4e (patch)
treeeb377fa81c980fba2f2c08941e43ba526d395041 /disas/mips.c
parentbee62662a312b99b4418b558a99b3963a4cbff07 (diff)
downloadfocaccia-qemu-01bc435b44b8802cc4697faa07d908684afbce4e.tar.gz
focaccia-qemu-01bc435b44b8802cc4697faa07d908684afbce4e.zip
target-mips: implement R6 multi-threading
MIPS Release 6 provides multi-threading features which replace
pre-R6 MT Module. CP0.Config3.MT is always 0 in R6, instead there is new
CP0.Config5.VP (Virtual Processor) bit which indicates presence of
multi-threading support which includes CP0.GlobalNumber register and
DVP/EVP instructions.

Signed-off-by: Yongbok Kim <yongbok.kim@imgtec.com>
Signed-off-by: Leon Alrae <leon.alrae@imgtec.com>
Diffstat (limited to 'disas/mips.c')
-rw-r--r--disas/mips.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/disas/mips.c b/disas/mips.c
index 0e488d8578..249931b735 100644
--- a/disas/mips.c
+++ b/disas/mips.c
@@ -1405,6 +1405,10 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"cmp.sor.d",  "D,S,T", 0x46a00019, 0xffe0003f, RD_S|RD_T|WR_D|FP_D,  0, I32R6},
 {"cmp.sune.d", "D,S,T", 0x46a0001a, 0xffe0003f, RD_S|RD_T|WR_D|FP_D,  0, I32R6},
 {"cmp.sne.d",  "D,S,T", 0x46a0001b, 0xffe0003f, RD_S|RD_T|WR_D|FP_D,  0, I32R6},
+{"dvp",        "",      0x41600024, 0xffffffff, TRAP,                 0, I32R6},
+{"dvp",        "t",     0x41600024, 0xffe0ffff, TRAP|WR_t,            0, I32R6},
+{"evp",        "",      0x41600004, 0xffffffff, TRAP,                 0, I32R6},
+{"evp",        "t",     0x41600004, 0xffe0ffff, TRAP|WR_t,            0, I32R6},
 
 /* MSA */
 {"sll.b",   "+d,+e,+f", 0x7800000d, 0xffe0003f, WR_VD|RD_VS|RD_VT,  0, MSA},