From: blueswir1 Date: Sat, 7 Mar 2009 20:52:22 +0000 (+0000) Subject: Implment tlbiel X-Git-Tag: v0.11.0-rc0~1199 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bf14b1cef1835d176d7c247eb8094e14375b24ab;p=thirdparty%2Fqemu.git Implment tlbiel Linux uses tlbiel to flush TLB entries in PPC64 mode. This special TLB flush opcode only flushes an entry for the CPU it runs on, not across all CPUs in the system. Signed-off-by: Alexander Graf git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6749 c046a42c-6fe2-441c-8c8c-71466251a162 --- diff --git a/target-ppc/translate.c b/target-ppc/translate.c index cbf1a358993..09b3945ee47 100644 --- a/target-ppc/translate.c +++ b/target-ppc/translate.c @@ -4394,6 +4394,20 @@ GEN_HANDLER(tlbia, 0x1F, 0x12, 0x0B, 0x03FFFC01, PPC_MEM_TLBIA) #endif } +/* tlbiel */ +GEN_HANDLER(tlbiel, 0x1F, 0x12, 0x08, 0x03FF0001, PPC_MEM_TLBIE) +{ +#if defined(CONFIG_USER_ONLY) + gen_inval_exception(ctx, POWERPC_EXCP_PRIV_OPC); +#else + if (unlikely(!ctx->mem_idx)) { + gen_inval_exception(ctx, POWERPC_EXCP_PRIV_OPC); + return; + } + gen_helper_tlbie(cpu_gpr[rB(ctx->opcode)]); +#endif +} + /* tlbie */ GEN_HANDLER(tlbie, 0x1F, 0x12, 0x09, 0x03FF0001, PPC_MEM_TLBIE) {