qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Graf <agraf@suse.de>
To: David Gibson <david@gibson.dropbear.id.au>
Cc: qemu-ppc@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [Qemu-ppc] [PATCH 2/4] target-ppc: Extend FPU state for newer POWER CPUs
Date: Tue, 9 Oct 2012 13:41:02 +0200	[thread overview]
Message-ID: <ED179862-AD67-45AA-8DBB-DA0A00546311@suse.de> (raw)
In-Reply-To: <DB5AB956-32DE-4F62-81FD-A0E513F2DF44@suse.de>


On 09.10.2012, at 13:38, Alexander Graf wrote:

> 
> On 09.10.2012, at 06:17, David Gibson wrote:
> 
>> This patch adds some extra FPU state to CPUPPCState.  Specifically,
>> fpscr is extended to a target_ulong bits, since some recent (64 bit)
>> CPUs now have more status bits than fit inside 32 bits.  Also, we add
>> the 32 VSR registers present on CPUs with VSX (these extend the
>> standard FP regs, which together with the Altivec/VMX registers form a
>> 64 x 128bit register file for VSX).
>> 
>> We don't actually support the instructions using these extra registers
>> in TCG yet, but we still need a place to store the state so we can
>> sync it with KVM and savevm/loadvm it.  This patch updates the savevm
>> code to not fail on the extended state, but also does not actually
>> save it - that's a project for another patch.
>> 
>> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
>> ---
>> 
>> v2:
>> * Used target_ulong instead of uint64_t, since the extended state is used
>> only on ppc64 targets.
>> * Fixed the TCG mapping of fpscr to match the new type.
>> ---
>> target-ppc/cpu.h       |    4 +++-
>> target-ppc/machine.c   |    8 ++++++--
>> target-ppc/translate.c |    4 ++--
>> 3 files changed, 11 insertions(+), 5 deletions(-)
>> 
>> diff --git a/target-ppc/cpu.h b/target-ppc/cpu.h
>> index faf4404..7627722 100644
>> --- a/target-ppc/cpu.h
>> +++ b/target-ppc/cpu.h
>> @@ -963,7 +963,7 @@ struct CPUPPCState {
>>    /* floating point registers */
>>    float64 fpr[32];
>>    /* floating point status and control register */
>> -    uint32_t fpscr;
>> +    target_ulong fpscr;
> 
> This will still break TCG for qemu-system-ppc64, no?

To be more precise:

agraf@lychee:/home/agraf/release/qemu> grep -R cpu_fpscr target-ppc
target-ppc/translate.c:static TCGv_i32 cpu_fpscr;
target-ppc/translate.c:    cpu_fpscr = tcg_global_mem_new_i32(TCG_AREG0,
target-ppc/translate.c:    tcg_gen_shri_i32(cpu_crf[crfD(ctx->opcode)], cpu_fpscr, bfa);
target-ppc/translate.c:    tcg_gen_andi_i32(cpu_fpscr, cpu_fpscr, ~(0xF << bfa));
target-ppc/translate.c:    tcg_gen_extu_i32_i64(cpu_fpr[rD(ctx->opcode)], cpu_fpscr);
target-ppc/translate.c:        tcg_gen_shri_i32(cpu_crf[1], cpu_fpscr, FPSCR_OX);
target-ppc/translate.c:        tcg_gen_shri_i32(cpu_crf[1], cpu_fpscr, FPSCR_OX);
target-ppc/translate.c:        tcg_gen_shri_i32(cpu_crf[1], cpu_fpscr, FPSCR_OX);
target-ppc/translate.c:        tcg_gen_shri_i32(cpu_crf[1], cpu_fpscr, FPSCR_OX);

All those functions assume cpu_fpscr is a TCGv32. They need to be adjusted to work on tl instead.

Please test compile your code with configure --enable-tcg-debug.


Alex

  reply	other threads:[~2012-10-09 11:41 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-09  4:17 [Qemu-devel] [0/4] Pending ppc and pseries patches David Gibson
2012-10-09  4:17 ` [Qemu-devel] [PATCH 1/4] pseries: Don't allow duplicate registration of hcalls or RTAS calls David Gibson
2012-10-09  4:17 ` [Qemu-devel] [PATCH 2/4] target-ppc: Extend FPU state for newer POWER CPUs David Gibson
2012-10-09 11:38   ` Alexander Graf
2012-10-09 11:41     ` Alexander Graf [this message]
2012-10-09 12:50       ` [Qemu-devel] [Qemu-ppc] " David Gibson
2012-10-09 15:03         ` Alexander Graf
2012-10-09  4:17 ` [Qemu-devel] [PATCH 3/4] target-ppc: Rework storage of VPA registration state David Gibson
2012-10-09  4:17 ` [Qemu-devel] [PATCH 4/4] pseries: Implement qemu initiated shutdowns using EPOW events David Gibson
2012-10-13  8:39   ` Blue Swirl
2012-10-09 11:44 ` [Qemu-devel] [0/4] Pending ppc and pseries patches Alexander Graf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ED179862-AD67-45AA-8DBB-DA0A00546311@suse.de \
    --to=agraf@suse.de \
    --cc=david@gibson.dropbear.id.au \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-ppc@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).