Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c44b4c6a authored by Bandan Das's avatar Bandan Das Committed by Paolo Bonzini
Browse files

KVM: emulate: clean up initializations in init_decode_cache



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: default avatarBandan Das <bsd@redhat.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 02357bdc
Loading
Loading
Loading
Loading
+11 −9
Original line number Diff line number Diff line
@@ -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;
+2 −5
Original line number Diff line number Diff line
@@ -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;
}