diff options
author | Marc Kleine-Budde <mkl@pengutronix.de> | 2008-10-21 15:54:39 +0200 |
---|---|---|
committer | Marc Kleine-Budde <mkl@pengutronix.de> | 2008-10-27 12:18:25 +0100 |
commit | 5482395b9e1e2c66b94c16b20e1d641cf725be09 (patch) | |
tree | cdd7b886c9b3eec5ea112def6fb92eff37f4c5f8 /include/linux | |
parent | 983630ef2b54e077dbf1ef087490577a1692d5ba (diff) | |
download | barebox-5482395b9e1e2c66b94c16b20e1d641cf725be09.tar.gz barebox-5482395b9e1e2c66b94c16b20e1d641cf725be09.tar.xz |
import io-{read,write}s{b,w} functions from linux
This patch imports:
- io-readsb,
- io-readsw,
- io-writesb,
- io-writesw,
from linux
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/linkage.h | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/include/linux/linkage.h b/include/linux/linkage.h new file mode 100644 index 0000000000..9fd1f85902 --- /dev/null +++ b/include/linux/linkage.h @@ -0,0 +1,96 @@ +#ifndef _LINUX_LINKAGE_H +#define _LINUX_LINKAGE_H + +#include <linux/compiler.h> +#include <asm/linkage.h> + +#ifdef __cplusplus +#define CPP_ASMLINKAGE extern "C" +#else +#define CPP_ASMLINKAGE +#endif + +#ifndef asmlinkage +#define asmlinkage CPP_ASMLINKAGE +#endif + +#ifndef asmregparm +# define asmregparm +#endif + +#define __page_aligned_data __section(.data.page_aligned) __aligned(PAGE_SIZE) +#define __page_aligned_bss __section(.bss.page_aligned) __aligned(PAGE_SIZE) + +/* + * This is used by architectures to keep arguments on the stack + * untouched by the compiler by keeping them live until the end. + * The argument stack may be owned by the assembly-language + * caller, not the callee, and gcc doesn't always understand + * that. + * + * We have the return value, and a maximum of six arguments. + * + * This should always be followed by a "return ret" for the + * protection to work (ie no more work that the compiler might + * end up needing stack temporaries for). + */ +/* Assembly files may be compiled with -traditional .. */ +#ifndef __ASSEMBLY__ +#ifndef asmlinkage_protect +# define asmlinkage_protect(n, ret, args...) do { } while (0) +#endif +#endif + +#ifndef __ALIGN +#define __ALIGN .align 4,0x90 +#define __ALIGN_STR ".align 4,0x90" +#endif + +#ifdef __ASSEMBLY__ + +#define ALIGN __ALIGN +#define ALIGN_STR __ALIGN_STR + +#ifndef ENTRY +#define ENTRY(name) \ + .globl name; \ + ALIGN; \ + name: +#endif + +#ifndef WEAK +#define WEAK(name) \ + .weak name; \ + name: +#endif + +#define KPROBE_ENTRY(name) \ + .pushsection .kprobes.text, "ax"; \ + ENTRY(name) + +#define KPROBE_END(name) \ + END(name); \ + .popsection + +#ifndef END +#define END(name) \ + .size name, .-name +#endif + +/* If symbol 'name' is treated as a subroutine (gets called, and returns) + * then please use ENDPROC to mark 'name' as STT_FUNC for the benefit of + * static analysis tools such as stack depth analyzer. + */ +#ifndef ENDPROC +#define ENDPROC(name) \ + .type name, @function; \ + END(name) +#endif + +#endif + +#define NORET_TYPE /**/ +#define ATTRIB_NORET __attribute__((noreturn)) +#define NORET_AND noreturn, + +#endif |