#include "py/mpthread.h" #include "py/runtime.h" #include "py/stackctrl.h" #ifdef USE_SECP256K1_ZKP #include "zkp_context.h" #endif #include "common.h" MP_NOINLINE int main_(int argc, char **argv); int main(int argc, char **argv) { collect_hw_entropy(); #ifdef USE_SECP256K1_ZKP ensure(sectrue * (zkp_context_init() == 0), NULL); #endif #if MICROPY_PY_THREAD mp_thread_init(); #endif // We should capture stack top ASAP after start, and it should be // captured guaranteedly before any other stack variables are allocated. // For this, actual main (renamed main_) should not be inlined into // this function. main_() itself may have other functions inlined (with // their own stack variables), that's why we need this main/main_ split. mp_stack_ctrl_init(); return main_(argc, argv); }