mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Andrey Smirnov <andrew.smirnov@gmail.com>
To: ranquet.guillaume@gmail.com
Cc: "Barebox List" <barebox@lists.infradead.org>,
	"Raphaël Poggi" <poggi.raph@gmail.com>
Subject: Re: Troubles running qemu64 target
Date: Thu, 28 Jun 2018 17:46:00 -0700	[thread overview]
Message-ID: <CAHQ1cqGJ=-TJJGA=eJRgkFnZOUdxm0Ys-Wwrfqy99Oq1aWVT9Q@mail.gmail.com> (raw)
In-Reply-To: <CAD+NunZeq6S72tt2BKH-PYKTVPjVMyWG4f78uAdxfn0jazV3wA@mail.gmail.com>

Guillaume:

I haven't used QEMU ARM64 version of the code, but I have spent some
time on i.MX8M which is ARM64 as well. See my comments below.

On Thu, Jun 28, 2018 at 6:46 AM ranquet guillaume
<ranquet.guillaume@gmail.com> wrote:
>
> Hello.
>
> I'm pretty new to barebox and I'm having some troubles running the
> qemu64 target.
> to top it off, I'm also new to the ARM world... and this is my first
> attempt at looking at a bootloader...
>
> I'm having trouble porting some hardware to barebox... and while I'm
> waiting for a JTAG probe, I though I could have some fun with qemu64
> :)
>
> The boot stops pretty early in the flow. way before anything can be
> printed on the serial. I have attached gdb to the qemu-system.
> The "qemu-system" seems to be stuck when trying to execute an stp with
> the stack pointer as the destination.
>
> I'm having the feeling that I have a configuration issue because sp = 0x0
>
> x27            0x0      0
> x28            0x0      0
> x29            0x0      0
> x30            0x0      0
> sp             0x0      0x0
> pc             0x40000000       0x40000000 <start>
> cpsr           0x400003c5       1073742789
> fpsr           0x0      0
> fpcr           0x0      0
> (gdb) disassemble
> Dump of assembler code for function start:
> => 0x0000000040000000 <+0>:     b       0x40000048 <start+72>
>    0x0000000040000004 <+4>:     nop
>    0x0000000040000008 <+8>:     nop
>    0x000000004000000c <+12>:    nop
> ...
>   0x0000000040000048 <+72>:    b       0x40013444 <barebox_arm_reset_vector>
>
>
> then we are branching to <barebox_arm_reset_vector>
> Dump of assembler code for function barebox_arm_reset_vector:
> => 0x0000000040013444 <+0>:     stp     x29, x30, [sp, #-16]!
>    0x0000000040013448 <+4>:     mov     x29, sp

The above looks like barebox_arm_reset_vector's preamble to me, which
it would have since:

a) It is not declared as __naked

b) AFAIK, __naked is not supported on AArch64 version of GCC, so even
if it was it wouldn't help

>    0x000000004001344c <+8>:     bl      0x40000050 <arm_cpu_lowlevel_init>
>
> with sp still equals to 0x0.
>
> stepping from there seems to get me "stuck"...
> when interrupting gdb (Ctrl-C) and dumping the registers, I'm getting
> the feeling I'm out of barebox code with pc equals 0x200
>
> x29            0x0      0
> x30            0x0      0
> sp             0x0      0x0
> pc             0x200    0x200
> cpsr           0x3c5    965
> fpsr           0x0      0
>
>
> It's probably some kind of configuration issue...? though I see no
> code to set sp before that stp instruction.

IMHO this doesn't look like a configuration issue and I agree there's
no code to set SP up.

> I tried toying with the memory map, setting stack and text base
> addresses, but it doesn't seem to fix my issue.
> Or maybe it's okay to decrement sp while it's equal to 0x0?

AFAIK, it would be OK if underlying emulated hardware had any kind of
memory mapped at the end of address space (sp would wrap in that
case), but as far as I can tell QEMU ARM64 virt platform doesn't,
which I think is the reason you are seeing the result you are seeing.

> Any ideas? comments?

I am not sure about the proper way to resolve this, I'd be curious to
hear from Raphael (original author, CC'd in this reply) and how this
worked for him first. However you can very quickly verify/disprove
your bad SP value theory by doing:

set $sp=0xBFFFFFF0

before letting the processor hit those SP instructions when you step
through it and see if barebox runs fine after that.

Thanks,
Andrey Smirnov

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  reply	other threads:[~2018-06-29  0:46 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-28 13:46 ranquet guillaume
2018-06-29  0:46 ` Andrey Smirnov [this message]
2018-06-29  9:01   ` Raphaël Poggi
2018-06-29 17:59     ` Andrey Smirnov
2018-07-03  4:03       ` ranquet guillaume

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='CAHQ1cqGJ=-TJJGA=eJRgkFnZOUdxm0Ys-Wwrfqy99Oq1aWVT9Q@mail.gmail.com' \
    --to=andrew.smirnov@gmail.com \
    --cc=barebox@lists.infradead.org \
    --cc=poggi.raph@gmail.com \
    --cc=ranquet.guillaume@gmail.com \
    /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