|
From: | yangxiaojuan |
Subject: | Re: [RFC PATCH v7 09/29] target/loongarch: Add TLB instruction support |
Date: | Thu, 31 Mar 2022 09:09:14 +0800 |
User-agent: | Mozilla/5.0 (X11; Linux loongarch64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 |
On 2022/3/29 上午4:12, Richard Henderson wrote:
On 3/28/22 06:57, Xiaojuan Yang wrote:+static void output_empty(DisasContext *ctx, arg_empty *a, + const char *mnemonic) +{ +}No, you must still do output(ctx, mnemonic, "");+static bool trans_tlbwr(DisasContext *ctx, arg_tlbwr *a) +{ + if (check_plv(ctx)) { + return false; + } + gen_helper_tlbwr(cpu_env); + + if (ctx->mem_idx != MMU_DA_IDX) { + tcg_gen_movi_tl(cpu_pc, ctx->base.pc_next + 4); + ctx->base.is_jmp = DISAS_EXIT; + }You may want to create a helper function for this condition.
in translate.c, like this: static void gen_disas_exit(DisasContext *ctx) { tcg_gen_movi_tl(cpu_pc, ctx->base.pc_next + 4); ctx->base.is_jmp = DISAS_EXIT; }
+static bool trans_tlbclr(DisasContext *ctx, arg_tlbclr *a) +{ + if (check_plv(ctx)) { + return false; + } + gen_helper_tlbclr(cpu_env); + tcg_gen_movi_tl(cpu_pc, ctx->base.pc_next + 4); + ctx->base.is_jmp = DISAS_EXIT;Missing it here...
gen_disas_exit()
+static bool trans_tlbflush(DisasContext *ctx, arg_tlbflush *a) +{ + if (check_plv(ctx)) { + return false; + } + gen_helper_tlbflush(cpu_env); + tcg_gen_movi_tl(cpu_pc, ctx->base.pc_next + 4); + ctx->base.is_jmp = DISAS_EXIT; + return true; +}... and here.
The same. Thanks. Xiaojuan
r~
[Prev in Thread] | Current Thread | [Next in Thread] |