aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/linkage.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-04-10 20:35:23 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-04-10 20:35:23 -0400
commitd10d89ec78114f925f63c5126a2b2490f501a462 (patch)
tree16b617325619c841ec1de6fe11b3f8f8f92fdd04 /include/linux/linkage.h
parent598af051a79d05b751fe793f1fe09fcf74763e02 (diff)
Add commentary about the new "asmlinkage_protect()" macro
It's really a pretty ugly thing to need, and some day it will hopefully be obviated by teaching gcc about the magic calling conventions for the low-level system call code, but in the meantime we can at least add big honking comments about why we need these insane and strange macros. I took my comments from my version of the macro, but I ended up deciding to just pick Roland's version of the actual code instead (with his prettier syntax that uses vararg macros). Thus the previous two commits that actually implement it. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux/linkage.h')
-rw-r--r--include/linux/linkage.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/linux/linkage.h b/include/linux/linkage.h
index fe2a39c489b6..b163c5c40dbc 100644
--- a/include/linux/linkage.h
+++ b/include/linux/linkage.h
@@ -17,6 +17,19 @@
17# define asmregparm 17# define asmregparm
18#endif 18#endif
19 19
20/*
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 */
20#ifndef asmlinkage_protect 33#ifndef asmlinkage_protect
21# define asmlinkage_protect(n, ret, args...) do { } while (0) 34# define asmlinkage_protect(n, ret, args...) do { } while (0)
22#endif 35#endif