aboutsummaryrefslogtreecommitdiff
path: root/target-m68k
diff options
context:
space:
mode:
authorpbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162>2007-05-28 02:20:34 +0000
committerpbrook <pbrook@c046a42c-6fe2-441c-8c8c-71466251a162>2007-05-28 02:20:34 +0000
commit821f7e76100f71d9ad104be9d1e12835e201ce80 (patch)
tree4c754e59155c7f7a74d54407f5f68b7b5090b239 /target-m68k
parent5fc4adf6cedc991c0ee9f16a5d2431bcca07c902 (diff)
Implement ColdFire ff1.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2883 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-m68k')
-rw-r--r--target-m68k/op.c10
-rw-r--r--target-m68k/translate.c5
2 files changed, 14 insertions, 1 deletions
diff --git a/target-m68k/op.c b/target-m68k/op.c
index 69d1fde9a7..d483488be8 100644
--- a/target-m68k/op.c
+++ b/target-m68k/op.c
@@ -170,6 +170,16 @@ OP(btest)
FORCE_RET();
}
+OP(ff1)
+{
+ uint32_t arg = get_op(PARAM2);
+ int n;
+ for (n = 32; arg; n--)
+ arg >>= 1;
+ set_op(PARAM1, n);
+ FORCE_RET();
+}
+
OP(subx_cc)
{
uint32_t op1 = get_op(PARAM1);
diff --git a/target-m68k/translate.c b/target-m68k/translate.c
index 52f38e4c0c..7c91760278 100644
--- a/target-m68k/translate.c
+++ b/target-m68k/translate.c
@@ -1929,7 +1929,10 @@ DISAS_INSN(shift_reg)
DISAS_INSN(ff1)
{
- cpu_abort(NULL, "Unimplemented insn: ff1");
+ int reg;
+ reg = DREG(insn, 0);
+ gen_logic_cc(s, reg);
+ gen_op_ff1(reg, reg);
}
static int gen_get_sr(DisasContext *s)