2015-09-30 0:59 GMT+02:00 Peter Maydell <peter.mayd...@linaro.org>:

> On 29 September 2015 at 23:40, Alistair Francis <alistai...@gmail.com>
> wrote:
> > On Thu, Sep 24, 2015 at 11:58 AM, mar.krzeminski
> > <mar.krzemin...@gmail.com> wrote:
> >>
> >>
> >> W dniu 24.09.2015 o 20:38, Peter Crosthwaite pisze:
> >>
> >>> On Thu, Sep 24, 2015 at 10:14 AM, mar.krzeminski
> >>> <mar.krzemin...@gmail.com> wrote:
> >>>> Today I stacked on other interesting think - and I do not want to spam
> >>>> this
> >>>> list - it is hack in cortex-m3
> >>>> from armv7m.
> >>>>
> >>>>      /* Hack to map an additional page of ram at the top of the
> address
> >>>>         space.  This stops qemu complaining about executing code
> outside
> >>>> RAM
> >>>>         when returning from an exception.  */
> >>>>      memory_region_init_ram(hack, NULL, "armv7m.hack", 0x1000,
> >>>> &error_abort);
>
> >> Then took me a while to understand why qemu crash while serving M3
> exception
> >> because I haven't took this hack :)
> >
> > It sounds like you figured out why it's there. From memory it is to
> > handle an exception, because the guest would just to a really high
> > memory area and if there is no memory there QEMU will throw an error.
>
> Sort of. This is for the exception-return mechanism, which on
> M-profile works by having the function-return instructions
> special-case attempts to "return" to addresses 0xfffffffx, which
> should do exception return semantics. QEMU's implementation
> handles this by treating "attempt to execute at 0xfffffff0"
> specially in the translator (we generate EXCP_EXCEPTION_EXIT).
> For this to work we have to have some fake RAM at that address.
>
> This isn't actually an architecturally correct way to do it,
> because the architecture says that you should only get the
> special exception-return behaviour if you use the right
> instructions to return to one of the magic addresses. If
> you just try to branch into those addresses you should
> get some kind of fault instead.
>
> However, like many things in our M-profile implementation,
> it sort of works and nobody has cared enough about M-profile
> to try to clean it up. (An efficient implementation of the
> right behaviour could be a bit tricky.)
>
> thanks
> -- PMM
>
I have at 0xfffffff0 real memory now (with aliasing to lower memory
address).
Does it mean that qemu might try to execute some instructions from there?

Regards,
Marcin

Reply via email to