CortexM, NVIC not reseted if qemu_system_reset_request() called

Bug #960515 reported by Oleksiy Bondarenko
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Fix Released
Undecided
Unassigned

Bug Description

qemu 0.15.1

Interrupts does not work anymore if system reseted from interrupt.

There is no reset function registered for armv7m_nvic, and as it is part of the core there is also no any reset for gic/nvic in cpu_reset() for arm.

possible solution is to add reset function to armv7_nvic.c

static void nvic_reset(void *opaque)
{
    nvic_state* s = opaque;
    s->systick.control = 0;
    s->systick.reload = 0;
    s->systick.tick = 0;
    qemu_del_timer(s->systick.timer);
    gic_reset(&s->gic);
}

and register it in armv7m_nvic_init

Tags: arm cortexm
Revision history for this message
Peter Maydell (pmaydell) wrote :

I added a reset function for the NVIC/systick as part of the GIC refactoring work I did recently. These changes should be in QEMU 1.1.

Changed in qemu:
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.