-
- Downloads
Revert commit 2015-12-13 introducing IRQPortableFinishKernelStartup().
It was found that the change introduced a subtle bug. The splitting of the IRQPortableStartKernel() in two left ctxsave pointing inside the stack frame of the first function, which then returned. When IRQPortableFinishKernelStartup() was called, if there were pending interrupts, they would be served as soon as interrupts were enabled, and the context save on the stack and ctxsave were partially overlapped. This caused errors only in a rare occurrence: if the CPU has a double precision floating point (Cortex-M7) and floating point operations were used before kernel startup. That's why the bug went unnoticed for so long. It was decided that since the conditions for splitting kernel startup were no longer necessary, the cleaner fix was to revert the change.
Showing
- miosix/arch/arm7_lpc2000/lpc2138_miosix_board/interfaces-impl/portability.cpp 0 additions, 4 deletions...2000/lpc2138_miosix_board/interfaces-impl/portability.cpp
- miosix/arch/cortexM3_efm32gg/common/interfaces-impl/portability.cpp 0 additions, 4 deletions...h/cortexM3_efm32gg/common/interfaces-impl/portability.cpp
- miosix/arch/cortexM3_stm32/common/interfaces-impl/portability.cpp 0 additions, 4 deletions...rch/cortexM3_stm32/common/interfaces-impl/portability.cpp
- miosix/arch/cortexM3_stm32f2/common/interfaces-impl/portability.cpp 0 additions, 4 deletions...h/cortexM3_stm32f2/common/interfaces-impl/portability.cpp
- miosix/arch/cortexM4_stm32f4/common/interfaces-impl/portability.cpp 0 additions, 4 deletions...h/cortexM4_stm32f4/common/interfaces-impl/portability.cpp
- miosix/kernel/kernel.cpp 1 addition, 2 deletionsmiosix/kernel/kernel.cpp
Loading
Please register or sign in to comment