| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #ifndef _LINUX_LINKAGE_H
 | 
					
						
							|  |  |  | #define _LINUX_LINKAGE_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-28 15:02:14 +01:00
										 |  |  | #include <linux/compiler.h>
 | 
					
						
							| 
									
										
										
										
											2013-01-21 17:16:07 -05:00
										 |  |  | #include <linux/stringify.h>
 | 
					
						
							| 
									
										
											  
											
												 We get rid of the general module prefix confusion with a binary config option,
 fix a remove/insert race which Never Happens, and (my favorite) handle the
 case when we have too many modules for a single commandline.  Seriously,
 the kernel is full, please go away!
 
 Cheers,
 Rusty.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.12 (GNU/Linux)
 
 iQIcBAABAgAGBQJRgbGEAAoJENkgDmzRrbjx2+QP/jXs93K/sXw3rL0vBklwCFv6
 IPZmqYZiGjrzqlB4coWkgYRwW1oOsREfAjF5MmfPdykS3fO5kXfdxN4FBdfKp+IZ
 RdsycdGDuSxWomgYsivrrxLBDxDAX1VuBOjr6mu5Uuk/pCjFa61cfJDiErsu0jKz
 2EMTc98A+E71XamJdvbtal5MUIu9yeluJWG2ux2+VbCul4MSpMc//0n2nrws/RCB
 AoC96AT/Xf4U10a8zT8RfCJ29M5Vvx/KfTIcFiZvtCQxEaHNNmj831gDNiw/3jFI
 ndRph+VLHBsMoBMxfzNRrM+evqkq8+AGEGRj3ycQy5Pa6DunPyzMafWOVGBGnmaS
 tl9hATGx1438048i5tUn8ieAYG1YL1HM83hQovpCThfUKQMiq186iDt1SYYmlq3g
 0thj3znQqZDYhboPtgWzOMUdqOG/iBIKjhGQjjHZs+MInFgxL2hmax0gBNkvEtQb
 oLyfGbF6UjS7I/Md/HohnUQ4xr9kYa3MQeqPjKbRwgHRkdXhzTEZtI+MYDJBxOnW
 QGVQ97aJ2WA7vC7sz/1VhTcZqmU5zfrSc8lF+Ea+H8dQGHHbz8HxKQacEvKcMrXl
 OJyEkRUWDA0MTjeIHzn2fff9Q6/qqA1QejRiFofGJrpxopcJS84/7yA0repxvuMG
 yaMPsLq53UW37/AXYsho
 =MPiD
 -----END PGP SIGNATURE-----
Merge tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux
Pull mudule updates from Rusty Russell:
 "We get rid of the general module prefix confusion with a binary config
  option, fix a remove/insert race which Never Happens, and (my
  favorite) handle the case when we have too many modules for a single
  commandline.  Seriously, the kernel is full, please go away!"
* tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
  modpost: fix unwanted VMLINUX_SYMBOL_STR expansion
  X.509: Support parse long form of length octets in Authority Key Identifier
  module: don't unlink the module until we've removed all exposure.
  kernel: kallsyms: memory override issue, need check destination buffer length
  MODSIGN: do not send garbage to stderr when enabling modules signature
  modpost: handle huge numbers of modules.
  modpost: add -T option to read module names from file/stdin.
  modpost: minor cleanup.
  genksyms: pass symbol-prefix instead of arch
  module: fix symbol versioning with symbol prefixes
  CONFIG_SYMBOL_PREFIX: cleanup.
											
										 
											2013-05-05 10:58:06 -07:00
										 |  |  | #include <linux/export.h>
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #include <asm/linkage.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | #define CPP_ASMLINKAGE extern "C"
 | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | #define CPP_ASMLINKAGE
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef asmlinkage
 | 
					
						
							|  |  |  | #define asmlinkage CPP_ASMLINKAGE
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-01-21 17:16:07 -05:00
										 |  |  | #ifndef cond_syscall
 | 
					
						
							| 
									
										
											  
											
												 We get rid of the general module prefix confusion with a binary config option,
 fix a remove/insert race which Never Happens, and (my favorite) handle the
 case when we have too many modules for a single commandline.  Seriously,
 the kernel is full, please go away!
 
 Cheers,
 Rusty.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.12 (GNU/Linux)
 
 iQIcBAABAgAGBQJRgbGEAAoJENkgDmzRrbjx2+QP/jXs93K/sXw3rL0vBklwCFv6
 IPZmqYZiGjrzqlB4coWkgYRwW1oOsREfAjF5MmfPdykS3fO5kXfdxN4FBdfKp+IZ
 RdsycdGDuSxWomgYsivrrxLBDxDAX1VuBOjr6mu5Uuk/pCjFa61cfJDiErsu0jKz
 2EMTc98A+E71XamJdvbtal5MUIu9yeluJWG2ux2+VbCul4MSpMc//0n2nrws/RCB
 AoC96AT/Xf4U10a8zT8RfCJ29M5Vvx/KfTIcFiZvtCQxEaHNNmj831gDNiw/3jFI
 ndRph+VLHBsMoBMxfzNRrM+evqkq8+AGEGRj3ycQy5Pa6DunPyzMafWOVGBGnmaS
 tl9hATGx1438048i5tUn8ieAYG1YL1HM83hQovpCThfUKQMiq186iDt1SYYmlq3g
 0thj3znQqZDYhboPtgWzOMUdqOG/iBIKjhGQjjHZs+MInFgxL2hmax0gBNkvEtQb
 oLyfGbF6UjS7I/Md/HohnUQ4xr9kYa3MQeqPjKbRwgHRkdXhzTEZtI+MYDJBxOnW
 QGVQ97aJ2WA7vC7sz/1VhTcZqmU5zfrSc8lF+Ea+H8dQGHHbz8HxKQacEvKcMrXl
 OJyEkRUWDA0MTjeIHzn2fff9Q6/qqA1QejRiFofGJrpxopcJS84/7yA0repxvuMG
 yaMPsLq53UW37/AXYsho
 =MPiD
 -----END PGP SIGNATURE-----
Merge tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux
Pull mudule updates from Rusty Russell:
 "We get rid of the general module prefix confusion with a binary config
  option, fix a remove/insert race which Never Happens, and (my
  favorite) handle the case when we have too many modules for a single
  commandline.  Seriously, the kernel is full, please go away!"
* tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
  modpost: fix unwanted VMLINUX_SYMBOL_STR expansion
  X.509: Support parse long form of length octets in Authority Key Identifier
  module: don't unlink the module until we've removed all exposure.
  kernel: kallsyms: memory override issue, need check destination buffer length
  MODSIGN: do not send garbage to stderr when enabling modules signature
  modpost: handle huge numbers of modules.
  modpost: add -T option to read module names from file/stdin.
  modpost: minor cleanup.
  genksyms: pass symbol-prefix instead of arch
  module: fix symbol versioning with symbol prefixes
  CONFIG_SYMBOL_PREFIX: cleanup.
											
										 
											2013-05-05 10:58:06 -07:00
										 |  |  | #define cond_syscall(x)	asm(				\
 | 
					
						
							|  |  |  | 	".weak " VMLINUX_SYMBOL_STR(x) "\n\t"		\ | 
					
						
							|  |  |  | 	".set  " VMLINUX_SYMBOL_STR(x) ","		\ | 
					
						
							|  |  |  | 		 VMLINUX_SYMBOL_STR(sys_ni_syscall)) | 
					
						
							| 
									
										
										
										
											2013-01-21 17:16:07 -05:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef SYSCALL_ALIAS
 | 
					
						
							| 
									
										
											  
											
												 We get rid of the general module prefix confusion with a binary config option,
 fix a remove/insert race which Never Happens, and (my favorite) handle the
 case when we have too many modules for a single commandline.  Seriously,
 the kernel is full, please go away!
 
 Cheers,
 Rusty.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.12 (GNU/Linux)
 
 iQIcBAABAgAGBQJRgbGEAAoJENkgDmzRrbjx2+QP/jXs93K/sXw3rL0vBklwCFv6
 IPZmqYZiGjrzqlB4coWkgYRwW1oOsREfAjF5MmfPdykS3fO5kXfdxN4FBdfKp+IZ
 RdsycdGDuSxWomgYsivrrxLBDxDAX1VuBOjr6mu5Uuk/pCjFa61cfJDiErsu0jKz
 2EMTc98A+E71XamJdvbtal5MUIu9yeluJWG2ux2+VbCul4MSpMc//0n2nrws/RCB
 AoC96AT/Xf4U10a8zT8RfCJ29M5Vvx/KfTIcFiZvtCQxEaHNNmj831gDNiw/3jFI
 ndRph+VLHBsMoBMxfzNRrM+evqkq8+AGEGRj3ycQy5Pa6DunPyzMafWOVGBGnmaS
 tl9hATGx1438048i5tUn8ieAYG1YL1HM83hQovpCThfUKQMiq186iDt1SYYmlq3g
 0thj3znQqZDYhboPtgWzOMUdqOG/iBIKjhGQjjHZs+MInFgxL2hmax0gBNkvEtQb
 oLyfGbF6UjS7I/Md/HohnUQ4xr9kYa3MQeqPjKbRwgHRkdXhzTEZtI+MYDJBxOnW
 QGVQ97aJ2WA7vC7sz/1VhTcZqmU5zfrSc8lF+Ea+H8dQGHHbz8HxKQacEvKcMrXl
 OJyEkRUWDA0MTjeIHzn2fff9Q6/qqA1QejRiFofGJrpxopcJS84/7yA0repxvuMG
 yaMPsLq53UW37/AXYsho
 =MPiD
 -----END PGP SIGNATURE-----
Merge tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux
Pull mudule updates from Rusty Russell:
 "We get rid of the general module prefix confusion with a binary config
  option, fix a remove/insert race which Never Happens, and (my
  favorite) handle the case when we have too many modules for a single
  commandline.  Seriously, the kernel is full, please go away!"
* tag 'modules-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
  modpost: fix unwanted VMLINUX_SYMBOL_STR expansion
  X.509: Support parse long form of length octets in Authority Key Identifier
  module: don't unlink the module until we've removed all exposure.
  kernel: kallsyms: memory override issue, need check destination buffer length
  MODSIGN: do not send garbage to stderr when enabling modules signature
  modpost: handle huge numbers of modules.
  modpost: add -T option to read module names from file/stdin.
  modpost: minor cleanup.
  genksyms: pass symbol-prefix instead of arch
  module: fix symbol versioning with symbol prefixes
  CONFIG_SYMBOL_PREFIX: cleanup.
											
										 
											2013-05-05 10:58:06 -07:00
										 |  |  | #define SYSCALL_ALIAS(alias, name) asm(			\
 | 
					
						
							|  |  |  | 	".globl " VMLINUX_SYMBOL_STR(alias) "\n\t"	\ | 
					
						
							|  |  |  | 	".set   " VMLINUX_SYMBOL_STR(alias) ","		\ | 
					
						
							|  |  |  | 		  VMLINUX_SYMBOL_STR(name)) | 
					
						
							| 
									
										
										
										
											2013-01-21 17:16:07 -05:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-20 01:03:37 +01:00
										 |  |  | #define __page_aligned_data	__section(.data..page_aligned) __aligned(PAGE_SIZE)
 | 
					
						
							| 
									
										
										
										
											2010-02-20 01:03:38 +01:00
										 |  |  | #define __page_aligned_bss	__section(.bss..page_aligned) __aligned(PAGE_SIZE)
 | 
					
						
							| 
									
										
										
										
											2008-05-28 15:02:14 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-06-23 19:59:35 -04:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * For assembly routines. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Note when using these that you must specify the appropriate | 
					
						
							|  |  |  |  * alignment directives yourself | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2010-02-20 01:03:37 +01:00
										 |  |  | #define __PAGE_ALIGNED_DATA	.section ".data..page_aligned", "aw"
 | 
					
						
							| 
									
										
										
										
											2010-02-20 01:03:38 +01:00
										 |  |  | #define __PAGE_ALIGNED_BSS	.section ".bss..page_aligned", "aw"
 | 
					
						
							| 
									
										
										
										
											2009-06-23 19:59:35 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-10 17:35:23 -07:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * 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). | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2008-04-11 13:46:54 +02:00
										 |  |  | /* Assembly files may be compiled with -traditional .. */ | 
					
						
							|  |  |  | #ifndef __ASSEMBLY__
 | 
					
						
							| 
									
										
										
										
											2008-04-10 15:37:38 -07:00
										 |  |  | #ifndef asmlinkage_protect
 | 
					
						
							|  |  |  | # define asmlinkage_protect(n, ret, args...)	do { } while (0)
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2008-04-11 13:46:54 +02:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | #ifndef __ALIGN
 | 
					
						
							|  |  |  | #define __ALIGN		.align 4,0x90
 | 
					
						
							|  |  |  | #define __ALIGN_STR	".align 4,0x90"
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef __ASSEMBLY__
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-20 18:14:12 -04:00
										 |  |  | #ifndef LINKER_SCRIPT
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #define ALIGN __ALIGN
 | 
					
						
							|  |  |  | #define ALIGN_STR __ALIGN_STR
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-24 03:16:17 -08:00
										 |  |  | #ifndef ENTRY
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #define ENTRY(name) \
 | 
					
						
							|  |  |  |   .globl name; \ | 
					
						
							|  |  |  |   ALIGN; \ | 
					
						
							|  |  |  |   name: | 
					
						
							| 
									
										
										
										
											2006-03-24 03:16:17 -08:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2009-09-20 18:14:12 -04:00
										 |  |  | #endif /* LINKER_SCRIPT */
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-21 16:41:34 -07:00
										 |  |  | #ifndef WEAK
 | 
					
						
							|  |  |  | #define WEAK(name)	   \
 | 
					
						
							|  |  |  | 	.weak name;	   \ | 
					
						
							|  |  |  | 	name: | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-24 03:16:17 -08:00
										 |  |  | #ifndef END
 | 
					
						
							|  |  |  | #define END(name) \
 | 
					
						
							|  |  |  |   .size name, .-name | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-30 13:33:13 +01:00
										 |  |  | /* 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. | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2006-03-24 03:16:17 -08:00
										 |  |  | #ifndef ENDPROC
 | 
					
						
							|  |  |  | #define ENDPROC(name) \
 | 
					
						
							|  |  |  |   .type name, @function; \ | 
					
						
							|  |  |  |   END(name) | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2005-09-06 15:19:26 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif
 |