All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christopher Covington <cov@codeaurora.org>
To: Peter Maydell <peter.maydell@linaro.org>,
	QEMU Developers <qemu-devel@nongnu.org>
Cc: Andrew Jones <drjones@redhat.com>,
	Riku Voipio <riku.voipio@iki.fi>, qemu-arm <qemu-arm@nongnu.org>,
	Patch Tracking <patches@linaro.org>
Subject: Re: [Qemu-devel] [Qemu-arm] [PATCH] linux-user: arm: Remove ARM_cpsr and similar #defines
Date: Thu, 3 Mar 2016 08:38:06 -0500	[thread overview]
Message-ID: <56D83E3E.1070007@codeaurora.org> (raw)
In-Reply-To: <CAFEAcA_+dZYr=m3ZYOR+qfwFsXn3QuLyMxgrcAR2_FfX8RFTrg@mail.gmail.com>

On 03/03/2016 07:18 AM, Peter Maydell wrote:
> Typoed qemu-devel email address again, sorry. I must figure out a
> way to automate "cc the usual suspects"...
> 
> thanks
> -- PMM
> 
> On 3 March 2016 at 12:11, Peter Maydell <peter.maydell@linaro.org> wrote:
>> The #defines of ARM_cpsr and friends in linux-user/arm/target-syscall.h
>> can clash with versions in the system headers if building on an
>> ARM or AArch64 build (though this seems to be dependent on the version
>> of the system headers). The QEMU defines are not very useful (it's
>> not clear that they're intended for use with the target_pt_regs struct
>> rather than (say) the CPUARMState structure) and we only use them in one
>> function in elfload.c anyway. So just remove the #defines and directly
>> access regs->uregs[].
>>
>> Reported-by: Christopher Covington <cov@codeaurora.org>
>> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
>> ---
>> Christopher, can you check that this resolves your compile issues, please?

It does. Thanks Peter!

Tested-by: Christopher Covington <cov@codeaurora.org>

>> NB that I have not touched the similar code in bsd-user/elfload.c because
>> that's clearly dead code, since there's no bsd-user/arm support anyway.
>>
>>  linux-user/arm/target_syscall.h | 20 +-------------------
>>  linux-user/elfload.c            | 19 ++++++++++---------
>>  2 files changed, 11 insertions(+), 28 deletions(-)
>>
>> diff --git a/linux-user/arm/target_syscall.h b/linux-user/arm/target_syscall.h
>> index ea863db..11077b7 100644
>> --- a/linux-user/arm/target_syscall.h
>> +++ b/linux-user/arm/target_syscall.h
>> @@ -4,29 +4,11 @@
>>  /* this struct defines the way the registers are stored on the
>>     stack during a system call. */
>>
>> +/* uregs[0..15] are r0 to r15; uregs[16] is CPSR; uregs[17] is ORIG_r0 */
>>  struct target_pt_regs {
>>      abi_long uregs[18];
>>  };
>>
>> -#define ARM_cpsr       uregs[16]
>> -#define ARM_pc         uregs[15]
>> -#define ARM_lr         uregs[14]
>> -#define ARM_sp         uregs[13]
>> -#define ARM_ip         uregs[12]
>> -#define ARM_fp         uregs[11]
>> -#define ARM_r10                uregs[10]
>> -#define ARM_r9         uregs[9]
>> -#define ARM_r8         uregs[8]
>> -#define ARM_r7         uregs[7]
>> -#define ARM_r6         uregs[6]
>> -#define ARM_r5         uregs[5]
>> -#define ARM_r4         uregs[4]
>> -#define ARM_r3         uregs[3]
>> -#define ARM_r2         uregs[2]
>> -#define ARM_r1         uregs[1]
>> -#define ARM_r0         uregs[0]
>> -#define ARM_ORIG_r0    uregs[17]
>> -
>>  #define ARM_SYSCALL_BASE       0x900000
>>  #define ARM_THUMB_SYSCALL      0
>>
>> diff --git a/linux-user/elfload.c b/linux-user/elfload.c
>> index 19dc7f5..ad014da 100644
>> --- a/linux-user/elfload.c
>> +++ b/linux-user/elfload.c
>> @@ -273,19 +273,20 @@ static inline void init_thread(struct target_pt_regs *regs,
>>      abi_long stack = infop->start_stack;
>>      memset(regs, 0, sizeof(*regs));
>>
>> -    regs->ARM_cpsr = 0x10;
>> -    if (infop->entry & 1)
>> -        regs->ARM_cpsr |= CPSR_T;
>> -    regs->ARM_pc = infop->entry & 0xfffffffe;
>> -    regs->ARM_sp = infop->start_stack;
>> +    regs->uregs[16] = ARM_CPU_MODE_USR;
>> +    if (infop->entry & 1) {
>> +        regs->uregs[16] |= CPSR_T;
>> +    }
>> +    regs->uregs[15] = infop->entry & 0xfffffffe;
>> +    regs->uregs[13] = infop->start_stack;
>>      /* FIXME - what to for failure of get_user()? */
>> -    get_user_ual(regs->ARM_r2, stack + 8); /* envp */
>> -    get_user_ual(regs->ARM_r1, stack + 4); /* envp */
>> +    get_user_ual(regs->uregs[2], stack + 8); /* envp */
>> +    get_user_ual(regs->uregs[1], stack + 4); /* envp */
>>      /* XXX: it seems that r0 is zeroed after ! */
>> -    regs->ARM_r0 = 0;
>> +    regs->uregs[0] = 0;
>>      /* For uClinux PIC binaries.  */
>>      /* XXX: Linux does this only on ARM with no MMU (do we care ?) */
>> -    regs->ARM_r10 = infop->start_data;
>> +    regs->uregs[10] = infop->start_data;
>>  }
>>
>>  #define ELF_NREG    18
>> --
>> 1.9.1
>>
>>


-- 
Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project

  reply	other threads:[~2016-03-03 13:38 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-03 12:11 [Qemu-arm] [PATCH] linux-user: arm: Remove ARM_cpsr and similar #defines Peter Maydell
2016-03-03 12:18 ` Peter Maydell
2016-03-03 12:18   ` [Qemu-devel] " Peter Maydell
2016-03-03 13:38   ` Christopher Covington [this message]
2016-03-03 13:44   ` Christopher Covington
2016-03-03 13:50     ` Peter Maydell
2016-03-03 13:50       ` [Qemu-devel] " Peter Maydell

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=56D83E3E.1070007@codeaurora.org \
    --to=cov@codeaurora.org \
    --cc=drjones@redhat.com \
    --cc=patches@linaro.org \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=riku.voipio@iki.fi \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.