Browse Source

[PATCH] abstract type/size specification for assembly

Provide abstraction for generating type and size information of assembly
routines and data, while permitting architectures to override these
defaults.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
Cc: "Russell King" <rmk@arm.linux.org.uk>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: "Andi Kleen" <ak@suse.de>
Cc: "Luck, Tony" <tony.luck@intel.com>
Cc: Miles Bader <uclinux-v850@lsi.nec.co.jp>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Jan Beulich 19 years ago
parent
commit
ab7efcc97e
4 changed files with 27 additions and 5 deletions
  1. 8 0
      include/asm-ia64/linkage.h
  2. 3 1
      include/asm-mips/linkage.h
  3. 3 1
      include/asm-v850/linkage.h
  4. 13 3
      include/linux/linkage.h

+ 8 - 0
include/asm-ia64/linkage.h

@@ -1,6 +1,14 @@
 #ifndef __ASM_LINKAGE_H
 #ifndef __ASM_LINKAGE_H
 #define __ASM_LINKAGE_H
 #define __ASM_LINKAGE_H
 
 
+#ifndef __ASSEMBLY__
+
 #define asmlinkage CPP_ASMLINKAGE __attribute__((syscall_linkage))
 #define asmlinkage CPP_ASMLINKAGE __attribute__((syscall_linkage))
 
 
+#else
+
+#include <asm/asmmacro.h>
+
+#endif
+
 #endif
 #endif

+ 3 - 1
include/asm-mips/linkage.h

@@ -1,6 +1,8 @@
 #ifndef __ASM_LINKAGE_H
 #ifndef __ASM_LINKAGE_H
 #define __ASM_LINKAGE_H
 #define __ASM_LINKAGE_H
 
 
-/* Nothing to see here... */
+#ifdef __ASSEMBLY__
+#include <asm/asm.h>
+#endif
 
 
 #endif
 #endif

+ 3 - 1
include/asm-v850/linkage.h

@@ -1,6 +1,8 @@
 #ifndef __ASM_LINKAGE_H
 #ifndef __ASM_LINKAGE_H
 #define __ASM_LINKAGE_H
 #define __ASM_LINKAGE_H
 
 
-/* Nothing to see here... */
+#ifdef __ASSEMBLY__
+#include <asm/asm.h>
+#endif
 
 
 #endif
 #endif

+ 13 - 3
include/linux/linkage.h

@@ -28,17 +28,27 @@
 #define ALIGN __ALIGN
 #define ALIGN __ALIGN
 #define ALIGN_STR __ALIGN_STR
 #define ALIGN_STR __ALIGN_STR
 
 
+#ifndef ENTRY
 #define ENTRY(name) \
 #define ENTRY(name) \
   .globl name; \
   .globl name; \
   ALIGN; \
   ALIGN; \
   name:
   name:
+#endif
 
 
 #define KPROBE_ENTRY(name) \
 #define KPROBE_ENTRY(name) \
   .section .kprobes.text, "ax"; \
   .section .kprobes.text, "ax"; \
-  .globl name; \
-  ALIGN; \
-  name:
+  ENTRY(name)
 
 
+#ifndef END
+#define END(name) \
+  .size name, .-name
+#endif
+
+#ifndef ENDPROC
+#define ENDPROC(name) \
+  .type name, @function; \
+  END(name)
+#endif
 
 
 #endif
 #endif