[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC 04/16] tcg: Compress TCGLabelQemuLdst
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [RFC 04/16] tcg: Compress TCGLabelQemuLdst |
Date: |
Thu, 19 Sep 2013 14:24:56 -0700 |
Pack all of the non-pointer data into one 32-bit word.
Use TCGReg.
Signed-off-by: Richard Henderson <address@hidden>
---
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
- [Qemu-devel] [RFC 00/16] TCG indirect registers, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 02/16] tcg: Introduce TCGTempType, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 01/16] tcg: Change tcg_global_mem_new_* to take a TCGv_ptr, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 03/16] tcg: Change ts->mem_reg to ts->mem_base, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 04/16] tcg: Compress TCGLabelQemuLdst,
Richard Henderson <=
- [Qemu-devel] [RFC 05/16] tcg: More use of TCGReg where appropriate, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 06/16] tcg: Remove tcg_get_arg_str_i32/64, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 07/16] tcg: Change reg_to_temp to TCGTemp pointer, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 08/16] tcg: Change temp_dead argument to TCGTemp, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 09/16] tcg: Change temp_sync argument to TCGTemp, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 10/16] tcg: Change temp_save argument to TCGTemp, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 11/16] tcg: Introduce temp_load, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 12/16] tcg: Tidy temporary allocation, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 13/16] tcg: Use temp_idx, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 14/16] tcg: Implement indirect memory registers, Richard Henderson, 2013/09/19