[PATCH] fixup! common: introduce bthreads, co-operative barebox threads
Ahmad Fatoum
ahmad at a3f.at
Sun Mar 21 15:00:50 GMT 2021
Specifying __aligned for a struct member only ensures a relative
alignment to the start of the struct. To get an absolute alignment,
we must ensure the struct itself is aligned suitably as well. Do so.
This fixes an issue where printf("%llu" printed bogus values when
run from a bthread, because gcc va_arg on RISC-V requires 16-bit
stack alignment.
Signed-off-by: Ahmad Fatoum <ahmad at a3f.at>
---
common/bthread.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/common/bthread.c b/common/bthread.c
index 80b486c99af7..ece02e091da9 100644
--- a/common/bthread.c
+++ b/common/bthread.c
@@ -88,7 +88,7 @@ struct bthread *bthread_create(int (*threadfn)(void *), void *data,
va_list ap;
int len;
- bthread = malloc(struct_size(bthread, stack_space, CONFIG_STACK_SIZE));
+ bthread = memalign(16, struct_size(bthread, stack_space, CONFIG_STACK_SIZE));
if (!bthread)
goto err;
--
2.30.0
More information about the barebox
mailing list