aboutsummaryrefslogtreecommitdiff
path: root/target-ppc/translate.c
diff options
context:
space:
mode:
authoraurel32 <aurel32@c046a42c-6fe2-441c-8c8c-71466251a162>2008-11-30 16:24:13 +0000
committeraurel32 <aurel32@c046a42c-6fe2-441c-8c8c-71466251a162>2008-11-30 16:24:13 +0000
commit37d269dfc6ccbfc3871d458c426e089e0c4403b6 (patch)
tree5f39ce517b50e2099b6f7e2e6ba464542c3f262b /target-ppc/translate.c
parent799a8c8d0a33ee8732407530f1a06a649be3b0bc (diff)
target-ppc: convert icbi instruction to TCG
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5827 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-ppc/translate.c')
-rw-r--r--target-ppc/translate.c19
1 files changed, 4 insertions, 15 deletions
diff --git a/target-ppc/translate.c b/target-ppc/translate.c
index b429a5d66e..aff9a30753 100644
--- a/target-ppc/translate.c
+++ b/target-ppc/translate.c
@@ -4165,25 +4165,14 @@ GEN_HANDLER2(dcbz_970, "dcbz", 0x1F, 0x16, 0x1F, 0x03C00001, PPC_CACHE_DCBZT)
}
/* icbi */
-#define op_icbi() (*gen_op_icbi[ctx->mem_idx])()
-#define gen_op_icbi_le_raw gen_op_icbi_raw
-#define gen_op_icbi_le_user gen_op_icbi_user
-#define gen_op_icbi_le_kernel gen_op_icbi_kernel
-#define gen_op_icbi_le_hypv gen_op_icbi_hypv
-#define gen_op_icbi_le_64_raw gen_op_icbi_64_raw
-#define gen_op_icbi_le_64_user gen_op_icbi_64_user
-#define gen_op_icbi_le_64_kernel gen_op_icbi_64_kernel
-#define gen_op_icbi_le_64_hypv gen_op_icbi_64_hypv
-static GenOpFunc *gen_op_icbi[NB_MEM_FUNCS] = {
- GEN_MEM_FUNCS(icbi),
-};
-
GEN_HANDLER(icbi, 0x1F, 0x16, 0x1E, 0x03E00001, PPC_CACHE_ICBI)
{
+ TCGv t0 = tcg_temp_new();
/* NIP cannot be restored if the memory exception comes from an helper */
gen_update_nip(ctx, ctx->nip - 4);
- gen_addr_reg_index(cpu_T[0], ctx);
- op_icbi();
+ gen_addr_reg_index(t0, ctx);
+ gen_helper_icbi(t0);
+ tcg_temp_free(t0);
}
/* Optional: */