I noticed these macros, I think they should have more parenthesis. I don't know how to test this though.
Index: sys/arch/alpha/include/cpu.h =================================================================== RCS file: /cvs/src/sys/arch/alpha/include/cpu.h,v retrieving revision 1.55 diff -u -p -r1.55 cpu.h --- sys/arch/alpha/include/cpu.h 2 Jul 2015 01:33:59 -0000 1.55 +++ sys/arch/alpha/include/cpu.h 1 Mar 2016 18:57:50 -0000 @@ -320,7 +320,7 @@ do { \ #define signotify(p) aston(p) #endif -#define aston(p) (p)->p_md.md_astpending = 1 +#define aston(p) ((p)->p_md.md_astpending = 1) #endif /* _KERNEL */ /* Index: sys/arch/mips64/include/cpu.h =================================================================== RCS file: /cvs/src/sys/arch/mips64/include/cpu.h,v retrieving revision 1.108 diff -u -p -r1.108 cpu.h --- sys/arch/mips64/include/cpu.h 5 Jan 2016 05:27:54 -0000 1.108 +++ sys/arch/mips64/include/cpu.h 1 Mar 2016 18:57:50 -0000 @@ -318,12 +318,12 @@ void cp0_calibrate(struct cpu_info *); * process as soon as possible. */ #ifdef MULTIPROCESSOR -#define signotify(p) (aston(p), cpu_unidle(p->p_cpu)) +#define signotify(p) (aston(p), cpu_unidle((p)->p_cpu)) #else #define signotify(p) aston(p) #endif -#define aston(p) p->p_md.md_astpending = 1 +#define aston(p) ((p)->p_md.md_astpending = 1) #ifdef CPU_R8000 #define mips_sync() __asm__ volatile ("lw $0, 0(%0)" :: \ -- Michal Mazurek