while working on the Cortex-M framework, I noticed that the current armv7m_nvic implementation is a bit old, and, to my opinion, not very fortunately structured.
first, it is named NVIC, but implements not only the NVIC registers, but some other register groups, like SysTick, system control, some IDs. if the QEMU rule is to implement a physical contiguous memory space (0xE000E000 - 0xE000EFFF) in one file, then probably the file should be named armv7m_scb.c (System Control Block), and it must implement all registers. the modular alternative (that I generally favour) would be to split the memory space into functional slices (SystemControl, SysTick, NVIC, CPUID, MPU, Debug, SW Triggers, MCUIDs) and implement them as separate objects, probably in separate files. the changes that I might need in QEMU might also require some updates in the exception processing and might also affect NVIC, so if you have any comments on how the current structure should be improved, I'm open to suggestions. regards, Liviu