This patch refactors the stxsdx instruction. Reusable code is extracted into a macro which will be used in subsequent patches in this series.
Signed-off-by: Tom Musta <tommu...@gmail.com> Reviewed-by: Richard Henderson <r...@twiddle.net> --- target-ppc/translate.c | 27 +++++++++++++++------------ 1 files changed, 15 insertions(+), 12 deletions(-) diff --git a/target-ppc/translate.c b/target-ppc/translate.c index ad40d27..52e487d 100644 --- a/target-ppc/translate.c +++ b/target-ppc/translate.c @@ -7086,20 +7086,23 @@ static void gen_lxvw4x(DisasContext *ctx) tcg_temp_free(tmp); } -static void gen_stxsdx(DisasContext *ctx) -{ - TCGv EA; - if (unlikely(!ctx->vsx_enabled)) { - gen_exception(ctx, POWERPC_EXCP_VSXU); - return; - } - gen_set_access_type(ctx, ACCESS_INT); - EA = tcg_temp_new(); - gen_addr_reg_index(ctx, EA); - gen_qemu_st64(ctx, cpu_vsrh(xS(ctx->opcode)), EA); - tcg_temp_free(EA); +#define VSX_STORE_SCALAR(name, operation) \ +static void gen_##name(DisasContext *ctx) \ +{ \ + TCGv EA; \ + if (unlikely(!ctx->vsx_enabled)) { \ + gen_exception(ctx, POWERPC_EXCP_VSXU); \ + return; \ + } \ + gen_set_access_type(ctx, ACCESS_INT); \ + EA = tcg_temp_new(); \ + gen_addr_reg_index(ctx, EA); \ + gen_qemu_##operation(ctx, cpu_vsrh(xS(ctx->opcode)), EA); \ + tcg_temp_free(EA); \ } +VSX_STORE_SCALAR(stxsdx, st64) + static void gen_stxvd2x(DisasContext *ctx) { TCGv EA; -- 1.7.1