zephyr/main: Use mp_stack API instead of local pointer for stack top.
The MP_STATE_THREAD(stack_top) is always available so use it instead of creating a separate variable. This also allows gc_collect() to be used as an independent function, without real_main() being called.
This commit is contained in:
parent
a8138b75b1
commit
53f3cbc2c4
|
@ -48,7 +48,6 @@
|
||||||
#include TEST
|
#include TEST
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static char *stack_top;
|
|
||||||
static char heap[MICROPY_HEAP_SIZE];
|
static char heap[MICROPY_HEAP_SIZE];
|
||||||
|
|
||||||
void init_zephyr(void) {
|
void init_zephyr(void) {
|
||||||
|
@ -79,9 +78,7 @@ void init_zephyr(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int real_main(void) {
|
int real_main(void) {
|
||||||
int stack_dummy;
|
mp_stack_ctrl_init();
|
||||||
stack_top = (char*)&stack_dummy;
|
|
||||||
mp_stack_set_top(stack_top);
|
|
||||||
// Make MicroPython's stack limit somewhat smaller than full stack available
|
// Make MicroPython's stack limit somewhat smaller than full stack available
|
||||||
mp_stack_set_limit(CONFIG_MAIN_STACK_SIZE - 512);
|
mp_stack_set_limit(CONFIG_MAIN_STACK_SIZE - 512);
|
||||||
|
|
||||||
|
@ -130,7 +127,7 @@ void gc_collect(void) {
|
||||||
// pointers from CPU registers, and thus may function incorrectly.
|
// pointers from CPU registers, and thus may function incorrectly.
|
||||||
void *dummy;
|
void *dummy;
|
||||||
gc_collect_start();
|
gc_collect_start();
|
||||||
gc_collect_root(&dummy, ((mp_uint_t)stack_top - (mp_uint_t)&dummy) / sizeof(mp_uint_t));
|
gc_collect_root(&dummy, ((mp_uint_t)MP_STATE_THREAD(stack_top) - (mp_uint_t)&dummy) / sizeof(mp_uint_t));
|
||||||
gc_collect_end();
|
gc_collect_end();
|
||||||
//gc_dump_info();
|
//gc_dump_info();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue