Messages in this thread | | | From | Geert Uytterhoeven <> | Date | Mon, 22 Aug 2016 22:48:57 +0200 | Subject | Re: [PATCH tip/core/rcu 2/2] documentation: Record reason for rcu_head two-byte alignment |
| |
Hi Paul,
On Mon, Aug 22, 2016 at 9:54 PM, Paul E. McKenney <paulmck@linux.vnet.ibm.com> wrote: > On Mon, Aug 22, 2016 at 03:18:54PM -0400, Steven Rostedt wrote: >> On Mon, 22 Aug 2016 20:56:09 +0200 >> Peter Zijlstra <peterz@infradead.org> wrote: >> >> > > Don't we have __alignof__(void *) to avoid #ifdef CONFIG_M68K and >> > > other new macros ? > > Hmmm... Does __alignof__(void *) give two-byte alignment on m68k, > allowing something like this? Heh!!! It is already there. ;-) > > struct callback_head { > struct callback_head *next; > void (*func)(struct callback_head *head); > } __attribute__((aligned(sizeof(void *))));
No, it's aligning to sizeof(void *) (4 on m68k), not __alignof__(void *).
> #define rcu_head callback_head > > If so, that does sound quite attractive! Might need the WARN_ON() > anyway, to flag wild pointers if nothing else. > > Adding Geert on CC for his thoughts.
__alignof__(void *) is indeed 2 on m68k, and h8300.
Note that it is 1 on crisv32!
It's 4 or 8 on anything else I have a cross-compiler for.
$ cat a.c unsigned x = __alignof__(void *); $ for i in /opt/cross/*/*/bin/*gcc; do echo +++ $i +++; $i -c -S a.c; cat a.s; done | less
Gr{oetje,eeting}s,
Geert
-- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
| |