From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH 1/2] KVM: x86 emulator: put register operand write back to a function Date: Sun, 15 Aug 2010 14:30:13 +0300 Message-ID: <4C67CFC5.6060900@redhat.com> References: <4C63F947.7020808@cn.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset=GB2312 Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org To: Wei Yongjun Return-path: Received: from mx1.redhat.com ([209.132.183.28]:8005 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932245Ab0HOQC6 (ORCPT ); Sun, 15 Aug 2010 12:02:58 -0400 In-Reply-To: <4C63F947.7020808@cn.fujitsu.com> Sender: kvm-owner@vger.kernel.org List-ID: On 08/12/2010 04:38 PM, Wei Yongjun wrote: > Introduce function write_register_operand() to write back the > register operand. > > > > +static void write_register_operand(struct operand *op, unsigned long val, > + unsigned int bytes) > +{ > + /* The 4-byte case *is* correct: in 64-bit mode we zero-extend. */ > + switch (bytes) { > + case 1: > + *(u8 *)op->addr.reg = (u8)val; > + break; > + case 2: > + *(u16 *)op->addr.reg = (u16)val; > + break; > + case 4: > + *op->addr.reg = (u32)val; > + break; /* 64b: zero-extend */ > + case 8: > + *op->addr.reg = val; > + break; > + } > +} It's cleaner to take val and bytes from struct operand, and do the assignment from the callers, no? -- error compiling committee.c: too many arguments to function