On Wed, Sep 10, 2014 at 10:32 PM, Martin Galvan <martin.gal...@tallertechnologies.com> wrote: > On Tue, Sep 9, 2014 at 8:43 PM, Alistair Francis <alistai...@gmail.com> wrote: >> On Wed, Sep 10, 2014 at 12:03 AM, Martin Galvan >> <martin.gal...@tallertechnologies.com> wrote: >>>>> @@ -259,7 +272,13 @@ qemu_irq *armv7m_init(MemoryRegion *system_memory, >>>>> vmstate_register_ram_global(hack); >>>>> memory_region_add_subregion(system_memory, 0xfffff000, hack); >>>>> >>>>> - qemu_register_reset(armv7m_reset, cpu); >>>>> + reset_args = (ARMV7MResetArgs) { >>>>> + .cpu = cpu, >>>>> + .reset_pc = entry, >>>>> + .reset_sp = (0x20000000 + ((192 * 1024) * 2)/3), >>>> >>>> Why is the manual sp setting needed? I thought the V7M specific CPU >>>> reset code handled this? Does Martins ARMv7M ROM reset patch help by >>>> any chance? >>>> >>>> Regards, >>>> Peter >>> >>> Indeed, I don't think that would be necessary with my patch. What are >>> those hardcoded magic numbers? >> >> The hard coded numbers are there basically there because they worked at >> one point and I haven't removed them yet. There is also no memory aliasing, >> so this gets around out of memory access errors from QEMU. >> >> I haven't had to chance to try your patch yet Martin, but hopefully it >> removes >> the need for any of the reset changes I made. > > My patch deals with the initial MSP, PC and Thumb values not being set > correctly on reset. I don't know if it's in the main tree yet, but you > can see it here: > > https://patchwork.ozlabs.org/patch/386497/
Thanks for that. It doesn't seem to completely fix my problem though. I will continue to look into it tomorrow but it looks like rom_ptr() is returning NULL and then the PC address is set to 0 instead of 0x801328d (which is the ELF entry point). I can remove the hard coded values from this patch though, thanks to your patch. Thanks, Alistair > > -- > > Martín Galván > > Software Engineer > > Taller Technologies Argentina > > > San Lorenzo 47, 3rd Floor, Office 5 > > Córdoba, Argentina > > Phone: 54 351 4217888 / +54 351 4218211