Allocate and initialize a thread-local block for each thread at the
top of the stack.
Set the tls base when switching to a new thread.
Add tdata/tbss linker instructions to cortex_m and risc-v scripts.
Signed-off-by: Keith Packard <keithp@keithp.com>
---
v2:
Squash fixes
v3:
Replace tabs with spaces
v4:
Add tbss to fe310 linker script
Disable the newlib-nano stubs code when picolibc is in use
Signed-off-by: Keith Packard <keithp@keithp.com>
---
v2:
Squash fixes in
v3:
call stdio_init in _PICOLIBC_ mode to initialize uart
v3:
Remove call to stdio_init from nanostubs_init, always
call from cpu_init.
Picolibc makes atexit state per-thread instead of global, so we can't
register destructors with atexit in a non-thread context as we won't
have any TLS space initialized.
Signed-off-by: Keith Packard <keithp@keithp.com>
Support for picolibc as alternative libc implementation is added with
this commit. For now only cortex-m CPU's are supported.
Enable via PICOLIBC=1
---
v2:
squash fixes in
v3:
Remove picolibc integer printf/scanf stuff from sys/Makefile.include,
it gets set in makefiles/libc/picolibc.mk
fixup for dependency
picolibc: Use thread_getpid for getpid() in picolibc_syscalls_default
Instead of directly accessing the sched_active_pid variable (which
isn't defined in this context), use the existing wrapper function
to get that value.
Signed-off-by: Keith Packard <keithp@keithp.com>
---
v2:
Squash a couple of fixes in
* fixup! picolibc: Use thread_getpid for getpid() in
picolibc_syscalls_default
* squashme: Add `times` to picolibc syscalls
* Add __noreturn__ attribute to _exit
* Add VFS syscall wrappers. This provides the POSIX api used
by picolibc stdio
The assert is reversed. It must check if the config value does not
exceed the maximum address length, not the other way round.
previously this would lead to a crash when setting a short address:
2020-08-23 13:59:56,080 # ifconfig 7 set addr_short 2
2020-08-23 13:59:56,081 # 0xdcad
2020-08-23 13:59:56,083 # *** RIOT kernel panic:
2020-08-23 13:59:56,085 # FAILED ASSERTION.
With this it works as expected
2020-08-23 14:05:07,988 # ifconfig 7 set addr_short 2
2020-08-23 14:05:07,992 # success: set (short) address on interface 7 to 2
The MPU on the cortex-m23 has some differences with the MPU on the older
cortex-m devices. It is not implemented in the cortex-m MPU driver. This
removes the available feature as it gives a false sense of security by
advertising the feature, but implementing it with noop's
Upstream changed, original upstream is archived now with this note:
> Jim Schaad now is so far ahead of this repo that you are most
> likely better off using his repo as your upstream.