Make sure the to be called function takes no arguments (and returns void).
Otherwise usage of CALL_ON_STACK_NORETURN() would generate broken code.
Reviewed-by: Sven Schnelle <svens@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
 
 #define CALL_ON_STACK_NORETURN(fn, stack)                              \
 ({                                                                     \
+       void (*__fn)(void) = fn;                                        \
+                                                                       \
        asm volatile(                                                   \
                "       la      15,0(%[_stack])\n"                      \
                "       xc      %[_bc](8,15),%[_bc](15)\n"              \
                "       brasl   14,%[_fn]\n"                            \
                ::[_bc] "i" (offsetof(struct stack_frame, back_chain)), \
-                 [_stack] "a" (stack), [_fn] "X" (fn));                \
+                 [_stack] "a" (stack), [_fn] "X" (__fn));              \
        BUG();                                                          \
 })