Add MIPS support

This commit is contained in:
rvantonder 2014-09-23 15:38:01 -04:00
parent 893abb8218
commit 0228d34b87
3 changed files with 24 additions and 2 deletions

View File

@ -44,6 +44,20 @@ for i in range(32):
AARCH64REGS[0][8+31] = "sp"
AARCH64REGS[0].append("pc")
MIPSREGS = (['$zero', '$at', '$v0', '$v1', '$a0', '$a1', '$a2', '$a3'], 4, True, "mips", ["jal\t","jr\t","jal","jr"])
for i in range(8):
MIPSREGS[0].append('$t'+str(i))
for i in range(8):
MIPSREGS[0].append('$s'+str(i))
MIPSREGS[0].append('$t8')
MIPSREGS[0].append('$t9')
MIPSREGS[0].append('$k0')
MIPSREGS[0].append('$k1')
MIPSREGS[0].append('$gp')
MIPSREGS[0].append('$sp')
MIPSREGS[0].append('$fp')
MIPSREGS[0].append('$ra')
ARMREGS = (['R0','R1','R2','R3','R4','R5','R6','R7','R8','R9','R10','R11','R12','SP','LR','PC'], 4, False, "arm", ["bl\t", "blx\t"])
X86REGS = (['EAX', 'ECX', 'EDX', 'EBX', 'ESP', 'EBP', 'ESI', 'EDI', 'EIP'], 4, False, "i386", ["call ", "call\t"])
X64REGS = (['RAX', 'RCX', 'RDX', 'RBX', 'RSP', 'RBP', 'RSI', 'RDI', "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15", 'RIP'], 8, False, "x86-64", ["call ", "callq ", "call\t"])
@ -171,6 +185,9 @@ class Program:
use_lib('powerpc')
self.tregs = PPCREGS
self.qirabinary = qemu_dir + "qira-ppc"
elif self.fb == 0x800:
self.tregs = MIPSREGS
self.qirabinary = qemu_dir + 'qira-mips'
else:
raise Exception("binary type "+hex(self.fb)+" not supported")

View File

@ -27,6 +27,7 @@ if [ ! -d qemu/qemu-latest ]; then
ln -s qemu-latest/x86_64-linux-user/qemu-x86_64 qira-x86_64
ln -s qemu-latest/ppc-linux-user/qemu-ppc qira-ppc
ln -s qemu-latest/aarch64-linux-user/qemu-aarch64 qira-aarch64
ln -s qemu-latest/mips-linux-user/qemu-mips qira-mips
cd qemu-latest
mv tci.c tci.c.bak
@ -45,6 +46,6 @@ ln -sf ../../../qemu_mods/qemu.h linux-user/qemu.h
ln -sf ../../../qemu_mods/main.c linux-user/main.c
ln -sf ../../../qemu_mods/strace.c linux-user/strace.c
ln -sf ../../../qemu_mods/strace.list linux-user/strace.list
./configure --target-list=i386-linux-user,x86_64-linux-user,arm-linux-user,ppc-linux-user,aarch64-linux-user --enable-tcg-interpreter --enable-debug-tcg --cpu=unknown
./configure --target-list=i386-linux-user,x86_64-linux-user,arm-linux-user,ppc-linux-user,aarch64-linux-user --enable-tcg-interpreter --enable-debug-tcg --cpu=unknown,mips-linux-user --enable-tcg-interpreter --enable-debug-tcg --cpu=unknown
make -j $(grep processor < /proc/cpuinfo | wc -l)

View File

@ -132,13 +132,17 @@ function on_registers(msg) { DS("registers");
var regviewer = "";
for (i in msg) {
var r = msg[i];
r.display_name = r.name;
if (r.name.indexOf("$") != -1) { // MIPS registers use '$' in display name
r.name = r.name.replace("$", "r"); // but '$' can't be part of div id
}
draw_hflag(r.value, r.name, regcolors[r.num]);
var exclass = get_data_type(r.value);
if (exclass !== "") {
exclass += " addr addr_"+r.value;
}
regviewer += '<div class="reg '+r.regactions+'">'+
'<div class="register data data_'+hex(r.address)+'" id="data_'+hex(r.address)+'" style="color:'+regcolors[r.num]+'">'+r.name+': </div>'+
'<div class="register data data_'+hex(r.address)+'" id="data_'+hex(r.address)+'" style="color:'+regcolors[r.num]+'">'+r.display_name+': </div>'+
'<span class="'+exclass+'">'+r.value+'</span>'+
'</div>';
}