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@xxxxxx> --- 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 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox