KVM: emulate: clean up initializations in init_decode_cache
authorBandan Das <bsd@redhat.com>
Wed, 16 Apr 2014 16:46:12 +0000 (12:46 -0400)
committerPaolo Bonzini <pbonzini@redhat.com>
Fri, 11 Jul 2014 07:14:00 +0000 (09:14 +0200)
A lot of initializations are unnecessary as they get set to
appropriate values before actually being used. Optimize
placement of fields in x86_emulate_ctxt

Signed-off-by: Bandan Das <bsd@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/include/asm/kvm_emulate.h
arch/x86/kvm/emulate.c

index c22bd9af4311775860682bfd062484f49c2b5fea..d40a10a38a80dcc7f19076d7056e4483b8f3531a 100644 (file)
@@ -288,30 +288,32 @@ struct x86_emulate_ctxt {
        u8 opcode_len;
        u8 b;
        u8 intercept;
-       u8 lock_prefix;
-       u8 rep_prefix;
        u8 op_bytes;
        u8 ad_bytes;
-       u8 rex_prefix;
        struct operand src;
        struct operand src2;
        struct operand dst;
-       bool has_seg_override;
-       u8 seg_override;
-       u64 d;
        int (*execute)(struct x86_emulate_ctxt *ctxt);
        int (*check_perm)(struct x86_emulate_ctxt *ctxt);
+       bool has_seg_override;
+       bool rip_relative;
+       u8 rex_prefix;
+       u8 lock_prefix;
+       u8 rep_prefix;
+       u8 seg_override;
+       /* bitmaps of registers in _regs[] that can be read */
+       u32 regs_valid;
+       /* bitmaps of registers in _regs[] that have been written */
+       u32 regs_dirty;
        /* modrm */
        u8 modrm;
        u8 modrm_mod;
        u8 modrm_reg;
        u8 modrm_rm;
        u8 modrm_seg;
-       bool rip_relative;
+       u64 d;
        unsigned long _eip;
        struct operand memop;
-       u32 regs_valid;  /* bitmaps of registers in _regs[] that can be read */
-       u32 regs_dirty;  /* bitmaps of registers in _regs[] that have been written */
        /* Fields above regs are cleared together. */
        unsigned long _regs[NR_VCPU_REGS];
        struct operand *memopp;
index 94f5f8b94ce941f522300ba0a3ca1dd22ecb9903..3e9bbdc4c76accf728983f8a32341c0bdc3fa968 100644 (file)
@@ -4534,14 +4534,11 @@ static int fastop(struct x86_emulate_ctxt *ctxt, void (*fop)(struct fastop *))
 
 void init_decode_cache(struct x86_emulate_ctxt *ctxt)
 {
-       memset(&ctxt->opcode_len, 0,
-              (void *)&ctxt->_regs - (void *)&ctxt->opcode_len);
+       memset(&ctxt->has_seg_override, 0,
+              (void *)&ctxt->modrm - (void *)&ctxt->has_seg_override);
 
-       ctxt->fetch.start = 0;
-       ctxt->fetch.end = 0;
        ctxt->io_read.pos = 0;
        ctxt->io_read.end = 0;
-       ctxt->mem_read.pos = 0;
        ctxt->mem_read.end = 0;
 }