diff options
Diffstat (limited to 'include/linux/linkage.h')
| -rw-r--r-- | include/linux/linkage.h | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/include/linux/linkage.h b/include/linux/linkage.h index 0592936344c4..2119610b24f8 100644 --- a/include/linux/linkage.h +++ b/include/linux/linkage.h | |||
| @@ -17,8 +17,24 @@ | |||
| 17 | # define asmregparm | 17 | # define asmregparm |
| 18 | #endif | 18 | #endif |
| 19 | 19 | ||
| 20 | #ifndef prevent_tail_call | 20 | /* |
| 21 | # define prevent_tail_call(ret) do { } while (0) | 21 | * This is used by architectures to keep arguments on the stack |
| 22 | * untouched by the compiler by keeping them live until the end. | ||
| 23 | * The argument stack may be owned by the assembly-language | ||
| 24 | * caller, not the callee, and gcc doesn't always understand | ||
| 25 | * that. | ||
| 26 | * | ||
| 27 | * We have the return value, and a maximum of six arguments. | ||
| 28 | * | ||
| 29 | * This should always be followed by a "return ret" for the | ||
| 30 | * protection to work (ie no more work that the compiler might | ||
| 31 | * end up needing stack temporaries for). | ||
| 32 | */ | ||
| 33 | /* Assembly files may be compiled with -traditional .. */ | ||
| 34 | #ifndef __ASSEMBLY__ | ||
| 35 | #ifndef asmlinkage_protect | ||
| 36 | # define asmlinkage_protect(n, ret, args...) do { } while (0) | ||
| 37 | #endif | ||
| 22 | #endif | 38 | #endif |
| 23 | 39 | ||
| 24 | #ifndef __ALIGN | 40 | #ifndef __ALIGN |
