From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35297) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VnsNK-00035E-6a for qemu-devel@nongnu.org; Tue, 03 Dec 2013 10:59:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VnsNB-0006Of-Of for qemu-devel@nongnu.org; Tue, 03 Dec 2013 10:59:02 -0500 From: Tom Musta Date: Tue, 3 Dec 2013 09:58:15 -0600 Message-Id: <1386086305-8163-5-git-send-email-tommusta@gmail.com> In-Reply-To: <1386086305-8163-1-git-send-email-tommusta@gmail.com> References: <1386086305-8163-1-git-send-email-tommusta@gmail.com> Subject: [Qemu-devel] [V3 PATCH 04/14] target-ppc: VSX Stage 4: Refactor stxsdx List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Tom Musta , qemu-ppc@nongnu.org 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 --- 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