a1d1a5f547
This commit avoids enabling interrupts during Zephyr init. Details: Interrupts will be enabled only when the first thread starts or if arch_irq_unlock() is called before that. The logic is now: 1. Enable traps, disable interrupts globally 2. Initialize bss 3. Call _PrepC Use in-place memset() to avoid register window overflow and underflow traps. That is perhaps not the common scenario, but could happen with memset() implementation which contains SAVE instructions on a system with few register windows. The second, and more important, item this commit addresses is that it increases the processor interrupt level (priority) to highest. That is, it enters _PrepC with all maskable interrupts levels disabled. This fixes some cases where interrupts could be taken after z_clock_driver_init() while the system was still initializing. That seem to have occurred when clearing large thread stacks. The third thing is that we now start out with current window pointer 0 (PSR.CWP=0) instead of 1. It has no practical implication except for preparing for possible future support for systems with only two windows. Signed-off-by: Martin Åberg <martin.aberg@gaisler.com> |
||
---|---|---|
.. | ||
core | ||
include | ||
CMakeLists.txt | ||
Kconfig |