mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-16 02:33:28 +00:00
all: add support for multicore scheduler
This commit adds support for a scheduler that runs a scheduler on all available cores. It is meant to be used on baremetal systems with a fixed number of cores, such as the RP2040. The initial implementation adds support for multicore scheduling to the riscv-qemu target as a convenient testing target. This means that this new multicore scheduler is tested in CI, including a bunch of standard library tests (`make tinygo-test-baremetal`). This should ensure the new scheduler is reasonably well tested before trying to use it on harder-to-debug targets like the RP2040.
This commit is contained in:
committed by
Ron Evans
parent
0c7c2926f9
commit
60f8a62978
+22
-1
@@ -16,13 +16,34 @@ SECTIONS
|
||||
/* Put the stack at the bottom of RAM, so that the application will
|
||||
* crash on stack overflow instead of silently corrupting memory.
|
||||
* See: http://blog.japaric.io/stack-overflow-protection/ */
|
||||
.stack (NOLOAD) :
|
||||
.stack0 (NOLOAD) :
|
||||
{
|
||||
. = ALIGN(16);
|
||||
. += _stack_size;
|
||||
_stack_top = .;
|
||||
} >RAM
|
||||
|
||||
.stack1 (NOLOAD) :
|
||||
{
|
||||
. = ALIGN(16);
|
||||
. += DEFINED(__num_stacks) && __num_stacks >= 2 ? _stack_size : 0;
|
||||
_stack1_top = .;
|
||||
} >RAM
|
||||
|
||||
.stack2 (NOLOAD) :
|
||||
{
|
||||
. = ALIGN(16);
|
||||
. += DEFINED(__num_stacks) && __num_stacks >= 3 ? _stack_size : 0;
|
||||
_stack2_top = .;
|
||||
} >RAM
|
||||
|
||||
.stack3 (NOLOAD) :
|
||||
{
|
||||
. = ALIGN(16);
|
||||
. += DEFINED(__num_stacks) && __num_stacks >= 4 ? _stack_size : 0;
|
||||
_stack3_top = .;
|
||||
} >RAM
|
||||
|
||||
/* Start address (in flash) of .data, used by startup code. */
|
||||
_sidata = LOADADDR(.data);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user