summaryrefslogtreecommitdiff
path: root/supervisor/stub
AgeCommit message (Collapse)Author
2020-09-28Add some NORETURN attributesJeff Epler
I have a function where it should be impossible to reach the end, so I put in a safe-mode reset at the bottom: ``` int find_unused_slot(void) { // precondition: you already verified that a slot was available for (int i=0; i<NUM_SLOTS; i++) { if( slot_free(i)) { return i; } } safe_mode_reset(MICROPY_FATAL_ERROR); } ``` However, the compiler still gave a diagnostic, because safe_mode_reset was not declared NORETURN. So I started by teaching the compiler that reset_into_safe_mode never returned. This leads at least one level deeper due to reset_cpu needing to be a NORETURN function. Each port is a little different in this area. I also marked reset_to_bootloader as NORETURN. Additional notes: * stm32's reset_to_bootloader was not implemented, but now does a bare reset. Most stm32s are not fitted with uf2 bootloaders anyway. * ditto cxd56 * esp32s2 did not implement reset_cpu at all. I used esp_restart(). (not tested) * litex did not implement reset_cpu at all. I used reboot_ctrl_write. But notably this is what reset_to_bootloader already did, so one or the other must be incorrect (not tested). reboot_ctrl_write cannot be declared NORETURN, as it returns unless the special value 0xac is written), so a new unreachable forever-loop is added. * cxd56's reset is via a boardctl() call which can't generically be declared NORETURN, so a new unreacahble "for(;;)" forever-loop is added. * In several places, NVIC_SystemReset is redeclared with NORETURN applied. This is accepted just fine by gcc. I chose this as preferable to editing the multiple copies of CMSIS headers where it is normally declared. * the stub safe_mode reset simply aborts. This is used in mpy-cross.
2020-09-24supervisor: stub: make unimplemented safe_mode loop foreverJeff Epler
2020-07-06Add license to some obvious files.Diego Elio Pettenò
2020-06-03Fix up end of file and trailing whitespace.Diego Elio Pettenò
This can be enforced by pre-commit, but correct it separately to make it easier to review.
2020-05-19Enable showing the console on a debug uartMark Olsson
2019-09-06Remove unused static functionHierophect
2019-08-15text fixesHierophect
2019-08-15Fix flash size, add filesystem disable flagHierophect
2019-03-12Stub out safe mode for mpy-crossScott Shawcroft
2019-02-21Fix unix build by using filesystem stubScott Shawcroft
2018-12-07Fix unused parameterScott Shawcroft
2018-12-06Fix unixScott Shawcroft
2018-12-06Add stack.c stub for mpy-crossScott Shawcroft
2017-10-30atmel-samd: More USB polishScott Shawcroft
* Introduce a python script to generate the USB descriptor instead of a bunch of C macros. In the future, we can use this dynamically in CircuitPython. * Add support for detecting read-only mass storage mounts. Fixes #377
2017-09-22Move to ASF4 and introduce SAMD51 support. (#258)3.0.0-alpha.0Scott Shawcroft
* atmel-samd: Remove ASF3. This will break builds. * atmel-samd: Add ASF4 for the SAMD21 and SAMD51. * Introduce the supervisor concept to facilitate porting. The supervisor is the code which runs individual MicroPython VMs. By splitting it out we make it more consistent and easier to find. This also adds very basic SAMD21 and SAMD51 support using the supervisor. Only the REPL currently works. This begins the work for #178.