From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59390) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WsF1O-00011g-FP for qemu-devel@nongnu.org; Wed, 04 Jun 2014 13:30:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WsF1I-0006JP-8Y for qemu-devel@nongnu.org; Wed, 04 Jun 2014 13:30:42 -0400 Message-ID: <538F57B5.40509@gmail.com> Date: Wed, 04 Jun 2014 12:30:29 -0500 From: Tom Musta MIME-Version: 1.0 References: <1401886265-6589-1-git-send-email-aik@ozlabs.ru> <1401886265-6589-30-git-send-email-aik@ozlabs.ru> In-Reply-To: <1401886265-6589-30-git-send-email-aik@ozlabs.ru> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v5 29/30] spapr_hcall: Split h_set_mode() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Alexey Kardashevskiy , qemu-devel@nongnu.org Cc: qemu-ppc@nongnu.org, Alexander Graf , Greg Kurz On 6/4/2014 7:51 AM, Alexey Kardashevskiy wrote: > This moves H_SET_MODE_RESOURCE_LE handler to a separate function > as there are other "resources" coming and this is going to become ugly. > > Signed-off-by: Alexey Kardashevskiy > --- > Changes: > v2: > * s/becode/become/ in commit log > --- > hw/ppc/spapr_hcall.c | 67 +++++++++++++++++++++++++++------------------------- > 1 file changed, 35 insertions(+), 32 deletions(-) > > diff --git a/hw/ppc/spapr_hcall.c b/hw/ppc/spapr_hcall.c > index a7460ab..cff3b0f 100644 > --- a/hw/ppc/spapr_hcall.c > +++ b/hw/ppc/spapr_hcall.c > @@ -712,46 +712,49 @@ static target_ulong h_logical_dcbf(PowerPCCPU *cpu, sPAPREnvironment *spapr, > return H_SUCCESS; > } > > +static target_ulong h_set_mode_resouce_le(PowerPCCPU *cpu, > + target_ulong mflags, > + target_ulong value1, > + target_ulong value2) > +{ > + CPUState *cs; > + > + if (value1) { > + return H_P3; > + } > + if (value2) { > + return H_P4; > + } > + > + switch (mflags) { > + case H_SET_MODE_ENDIAN_BIG: > + CPU_FOREACH(cs) { > + set_spr(cs, SPR_LPCR, 0, LPCR_ILE); > + } > + return H_SUCCESS; > + > + case H_SET_MODE_ENDIAN_LITTLE: > + CPU_FOREACH(cs) { > + set_spr(cs, SPR_LPCR, LPCR_ILE, LPCR_ILE); > + } > + return H_SUCCESS; > + } > + > + return H_UNSUPPORTED_FLAG; > +} > + > static target_ulong h_set_mode(PowerPCCPU *cpu, sPAPREnvironment *spapr, > target_ulong opcode, target_ulong *args) > { > - CPUState *cs; > - target_ulong mflags = args[0]; > target_ulong resource = args[1]; > - target_ulong value1 = args[2]; > - target_ulong value2 = args[3]; > target_ulong ret = H_P2; > > - if (resource == H_SET_MODE_RESOURCE_LE) { > - if (value1) { > - ret = H_P3; > - goto out; > - } > - if (value2) { > - ret = H_P4; > - goto out; > - } > - switch (mflags) { > - case H_SET_MODE_ENDIAN_BIG: > - CPU_FOREACH(cs) { > - set_spr(cs, SPR_LPCR, 0, LPCR_ILE); > - } > - ret = H_SUCCESS; > - break; > - > - case H_SET_MODE_ENDIAN_LITTLE: > - CPU_FOREACH(cs) { > - set_spr(cs, SPR_LPCR, LPCR_ILE, LPCR_ILE); > - } > - ret = H_SUCCESS; > - break; > - > - default: > - ret = H_UNSUPPORTED_FLAG; > - } > + switch (resource) { > + case H_SET_MODE_RESOURCE_LE: > + ret = h_set_mode_resouce_le(cpu, args[0], args[2], args[3]); > + break; > } > > -out: > return ret; > } > > Reviewed-by: Tom Musta