From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40792) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VMljj-0002sa-G2 for qemu-devel@nongnu.org; Thu, 19 Sep 2013 17:26:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VMljS-0005NU-8n for qemu-devel@nongnu.org; Thu, 19 Sep 2013 17:26:07 -0400 Received: from mail-yh0-x234.google.com ([2607:f8b0:4002:c01::234]:52940) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VMljS-0005Mw-4G for qemu-devel@nongnu.org; Thu, 19 Sep 2013 17:25:50 -0400 Received: by mail-yh0-f52.google.com with SMTP id v1so4323000yhn.25 for ; Thu, 19 Sep 2013 14:25:49 -0700 (PDT) Sender: Richard Henderson From: Richard Henderson Date: Thu, 19 Sep 2013 14:24:56 -0700 Message-Id: <1379625908-27964-5-git-send-email-rth@twiddle.net> In-Reply-To: <1379625908-27964-1-git-send-email-rth@twiddle.net> References: <1379625908-27964-1-git-send-email-rth@twiddle.net> Subject: [Qemu-devel] [RFC 04/16] tcg: Compress TCGLabelQemuLdst List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: blauwirbel@gmail.com, aurelien@aurel32.net Pack all of the non-pointer data into one 32-bit word. Use TCGReg. Signed-off-by: Richard Henderson --- tcg/tcg.h | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/tcg/tcg.h b/tcg/tcg.h index b99302a..16048ca 100644 --- a/tcg/tcg.h +++ b/tcg/tcg.h @@ -216,14 +216,17 @@ typedef tcg_target_ulong TCGArg; TCG_MAX_HELPER_LABELS is defined as same as OPC_BUF_SIZE in exec-all.h. */ #define TCG_MAX_QEMU_LDST 640 +QEMU_BUILD_BUG_ON(TCG_TARGET_NB_REGS > 64); +QEMU_BUILD_BUG_ON(NB_MMU_MODES > 8); + typedef struct TCGLabelQemuLdst { - int is_ld:1; /* qemu_ld: 1, qemu_st: 0 */ - int opc:4; - int addrlo_reg; /* reg index for low word of guest virtual addr */ - int addrhi_reg; /* reg index for high word of guest virtual addr */ - int datalo_reg; /* reg index for low word to be loaded or stored */ - int datahi_reg; /* reg index for high word to be loaded or stored */ - int mem_index; /* soft MMU memory index */ + int is_ld : 1; /* qemu_ld: 1, qemu_st: 0 */ + int opc : 4; + unsigned mem_index : 3; /* asserted max idx < 8 */ + TCGReg addrlo_reg : 6; /* asserted max regno < 64 */ + TCGReg addrhi_reg : 6; + TCGReg datalo_reg : 6; + TCGReg datahi_reg : 6; uint8_t *raddr; /* gen code addr of the next IR of qemu_ld/st IR */ uint8_t *label_ptr[2]; /* label pointers to be updated */ } TCGLabelQemuLdst; -- 1.8.1.4