diff options
author | Anthony Green <green@moxielogic.com> | 2014-04-02 23:55:57 -0400 |
---|---|---|
committer | Anthony Green <green@moxielogic.com> | 2014-04-02 23:58:01 -0400 |
commit | 048ea17465ce5effe702895cd644fa3d9dd94680 (patch) | |
tree | 65b35c66b79726315b596779feb26717cc79e283 /sim/moxie/interp.c | |
parent | 2493504aa84aceffcdb5f3febddca03e7c3d8176 (diff) | |
download | gdb-048ea17465ce5effe702895cd644fa3d9dd94680.zip gdb-048ea17465ce5effe702895cd644fa3d9dd94680.tar.gz gdb-048ea17465ce5effe702895cd644fa3d9dd94680.tar.bz2 |
Add support for two new moxie sign-extension instructions
Diffstat (limited to 'sim/moxie/interp.c')
-rw-r--r-- | sim/moxie/interp.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/sim/moxie/interp.c b/sim/moxie/interp.c index a3f238a..4362c66 100644 --- a/sim/moxie/interp.c +++ b/sim/moxie/interp.c @@ -586,8 +586,24 @@ sim_resume (sd, step, siggnal) break; case 0x0f: /* nop */ break; - case 0x10: /* bad */ - case 0x11: /* bad */ + case 0x10: /* sex.b */ + { + int a = (inst >> 4) & 0xf; + int b = inst & 0xf; + signed char bv = cpu.asregs.regs[b]; + TRACE("sex.b"); + cpu.asregs.regs[a] = (int) bv; + } + break; + case 0x11: /* sex.s */ + { + int a = (inst >> 4) & 0xf; + int b = inst & 0xf; + signed short bv = cpu.asregs.regs[b]; + TRACE("sex.s"); + cpu.asregs.regs[a] = (int) bv; + } + break; case 0x12: /* bad */ case 0x13: /* bad */ case 0x14: /* bad */ |