zephyr/arch/xtensa
Andy Ross 0670ba6c92 xtensa: Disable interrupts on entry to _Cstart
Zephyr isn't ready to handle interrupts yet, until the
threading/scheduler are set up and we make our first context switch.
This was a semi-hidden bug: only the timer interrupt would actually
get unmasked before the system was ready, and obviously would never
have time to fire a tick before the system completed initialization.
But a combination of system load and a new version of Qemu (which
seems to be more sensitive to non-deterministic timing glitchery) has
made this visible.  About 2-3% of the time when run under a full
sanitycheck, the qemu process will get swapped away for long enough
that the tick timer expires before _Cstart() has reached
enable_multithreading().

It looks like the original code was cut and pasted from another
implementation, which was expected to call into an "application"
main() routine that wanted interrupts ready.

Fixes #11182

(Note also that this code is not used for ESP-32, which has its own
startup path)

Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2018-11-12 13:51:20 -05:00
..
core xtensa: Disable interrupts on entry to _Cstart 2018-11-12 13:51:20 -05:00
include xtensa: specify which SR to store pointer to _kernel.cpu struct 2018-10-19 17:52:45 -04:00
CMakeLists.txt xtensa: move soc to top-level dir soc/ 2018-09-13 00:56:48 -04:00
Kconfig xtensa: specify which SR to store pointer to _kernel.cpu struct 2018-10-19 17:52:45 -04:00