OSDN Git Service

Unify our assembler macros.
authorElliott Hughes <enh@google.com>
Thu, 20 Feb 2014 00:53:20 +0000 (16:53 -0800)
committerElliott Hughes <enh@google.com>
Thu, 20 Feb 2014 21:51:26 +0000 (13:51 -0800)
Our <machine/asm.h> files were modified from upstream, to the extent
that no architecture was actually using the upstream ENTRY or END macros,
assuming that architecture even had such a macro upstream. This patch moves
everyone to the same macros, with just a few tweaks remaining in the
<machine/asm.h> files, which no one should now use directly.

I've removed most of the unused cruft from the <machine/asm.h> files, though
there's still rather a lot in the mips/mips64 ones.

Bug: 12229603
Change-Id: I2fff287dc571ac1087abe9070362fb9420d85d6d

94 files changed:
libc/arch-arm/bionic/__get_sp.S
libc/arch-arm/bionic/_setjmp.S
libc/arch-arm/bionic/abort_arm.S
libc/arch-arm/bionic/memcmp.S
libc/arch-arm/bionic/memcmp16.S
libc/arch-arm/bionic/memcpy.S
libc/arch-arm/bionic/memcpy.a9.S
libc/arch-arm/bionic/setjmp.S
libc/arch-arm/bionic/sigsetjmp.S
libc/arch-arm/bionic/strcmp.S
libc/arch-arm/cortex-a15/bionic/__strcat_chk.S
libc/arch-arm/cortex-a15/bionic/__strcpy_chk.S
libc/arch-arm/cortex-a15/bionic/memcpy.S
libc/arch-arm/cortex-a15/bionic/memset.S
libc/arch-arm/cortex-a15/bionic/strcat.S
libc/arch-arm/cortex-a15/bionic/strcmp.S
libc/arch-arm/cortex-a15/bionic/strcpy.S
libc/arch-arm/cortex-a15/bionic/strlen.S
libc/arch-arm/cortex-a9/bionic/__strcat_chk.S
libc/arch-arm/cortex-a9/bionic/__strcpy_chk.S
libc/arch-arm/cortex-a9/bionic/memcpy.S
libc/arch-arm/cortex-a9/bionic/memset.S
libc/arch-arm/cortex-a9/bionic/strcat.S
libc/arch-arm/cortex-a9/bionic/strcmp.S
libc/arch-arm/cortex-a9/bionic/strcpy.S
libc/arch-arm/cortex-a9/bionic/strlen.S
libc/arch-arm/generic/bionic/memcpy.S
libc/arch-arm/generic/bionic/memset.S
libc/arch-arm/generic/bionic/strcmp.S
libc/arch-arm/generic/bionic/strcpy.S
libc/arch-arm/include/machine/asm.h
libc/arch-arm/krait/bionic/__strcat_chk.S
libc/arch-arm/krait/bionic/__strcpy_chk.S
libc/arch-arm/krait/bionic/memcpy.S
libc/arch-arm/krait/bionic/memset.S
libc/arch-arm/krait/bionic/strcmp.S
libc/arch-arm64/bionic/__get_sp.S
libc/arch-arm64/bionic/__rt_sigreturn.S
libc/arch-arm64/bionic/_setjmp.S
libc/arch-arm64/bionic/setjmp.S
libc/arch-arm64/bionic/sigsetjmp.S
libc/arch-arm64/include/machine/asm.h
libc/arch-mips/bionic/__bionic_clone.S
libc/arch-mips/bionic/__get_sp.S
libc/arch-mips/bionic/_exit_with_stack_teardown.S
libc/arch-mips/bionic/_setjmp.S
libc/arch-mips/bionic/bzero.S
libc/arch-mips/bionic/futex_mips.S
libc/arch-mips/bionic/memcmp16.S
libc/arch-mips/bionic/setjmp.S
libc/arch-mips/bionic/sigsetjmp.S
libc/arch-mips/bionic/syscall.S
libc/arch-mips/bionic/vfork.S
libc/arch-mips/include/machine/asm.h
libc/arch-mips/include/machine/signal.h
libc/arch-mips/string/memcpy.S
libc/arch-mips/string/memset.S
libc/arch-mips64/bionic/__bionic_clone.S
libc/arch-mips64/bionic/__get_sp.S
libc/arch-mips64/bionic/_exit_with_stack_teardown.S
libc/arch-mips64/bionic/_setjmp.S
libc/arch-mips64/bionic/bzero.S
libc/arch-mips64/bionic/memcmp16.S
libc/arch-mips64/bionic/setjmp.S
libc/arch-mips64/bionic/sigsetjmp.S
libc/arch-mips64/bionic/syscall.S
libc/arch-mips64/bionic/vfork.S
libc/arch-mips64/include/machine/asm.h
libc/arch-mips64/include/machine/signal.h
libc/arch-mips64/string/memcpy.S
libc/arch-mips64/string/memset.S
libc/arch-x86/bionic/__bionic_clone.S
libc/arch-x86/bionic/__get_sp.S
libc/arch-x86/bionic/_setjmp.S
libc/arch-x86/bionic/setjmp.S
libc/arch-x86/bionic/sigsetjmp.S
libc/arch-x86/include/machine/asm.h
libc/arch-x86/string/bcopy.S
libc/arch-x86/string/memcmp.S
libc/arch-x86/string/strcat.S
libc/arch-x86/string/strcmp.S
libc/arch-x86/string/strncmp.S
libc/arch-x86/string/swab.S
libc/arch-x86_64/bionic/__bionic_clone.S
libc/arch-x86_64/bionic/__get_sp.S
libc/arch-x86_64/bionic/__rt_sigreturn.S
libc/arch-x86_64/bionic/_setjmp.S
libc/arch-x86_64/bionic/setjmp.S
libc/arch-x86_64/bionic/sigsetjmp.S
libc/arch-x86_64/include/machine/asm.h
libc/private/bionic_asm.h
linker/arch/arm64/begin.S
linker/arch/mips64/begin.S
linker/arch/x86_64/begin.S

index 2a7e7b7..aabec6d 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 ENTRY(__get_sp)
   mov r0, sp
index 239947e..64a0a31 100644 (file)
@@ -34,7 +34,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 #include <machine/setjmp.h>
 #include <machine/cpu-features.h>
 
index 1d01ed2..6b181ef 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 /*
  * Coding the abort function in assembly so that registers are guaranteed to
index 0dc3af0..70a2a58 100644 (file)
@@ -27,7 +27,7 @@
  */
 
 #include <machine/cpu-features.h>
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 
 #ifdef HAVE_32_BYTE_CACHE_LINE
index afbb1b0..3f2f2f1 100644 (file)
@@ -27,7 +27,7 @@
  */
 
 #include <machine/cpu-features.h>
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 /*
  * Optimized memcmp16() for ARM9.
index f25b3e3..2c9b10c 100644 (file)
@@ -27,7 +27,7 @@
  */
 
 #include <machine/cpu-features.h>
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 #if defined(__ARM_NEON__) && !defined(ARCH_ARM_USE_NON_NEON_MEMCPY)
 
index 2ba1ff5..259701d 100644 (file)
@@ -44,7 +44,7 @@
  */
 
 #include <machine/cpu-features.h>
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
        .syntax unified
        /* This implementation requires ARM state.  */
index 8927086..ed59d07 100644 (file)
@@ -34,7 +34,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 #include <machine/setjmp.h>
 #include <machine/cpu-features.h>
 
@@ -112,7 +112,7 @@ ENTRY(longjmp)
 
        add     sp, sp, #4      /* unalign the stack */
        .cfi_adjust_cfa_offset -4
-       ldmfd   sp!, {r0, r1, r14} 
+       ldmfd   sp!, {r0, r1, r14}
        .cfi_def_cfa_offset 0
 
 #ifdef __ARM_HAVE_VFP
index 59ab9da..7016f50 100644 (file)
@@ -35,7 +35,7 @@
 
 #define _ALIGN_TEXT .align 0
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 #include <machine/setjmp.h>
 
 /*
index 42d41d1..6dba942 100644 (file)
@@ -28,7 +28,7 @@
  */
 
 #include <machine/cpu-features.h>
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
        .text
 
index dc86150..36da2d9 100644 (file)
@@ -26,8 +26,8 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
-#include "private/libc_events.h"
+#include <private/bionic_asm.h>
+#include <private/libc_events.h>
 
     .syntax unified
 
index 95aaf4f..c3e3e14 100644 (file)
@@ -26,8 +26,8 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
-#include "private/libc_events.h"
+#include <private/bionic_asm.h>
+#include <private/libc_events.h>
 
     .syntax unified
 
index badc93b..da4f3dd 100644 (file)
@@ -55,8 +55,8 @@
 
 // Prototype: void *memcpy (void *dst, const void *src, size_t count).
 
-#include <machine/asm.h>
-#include "private/libc_events.h"
+#include <private/bionic_asm.h>
+#include <private/libc_events.h>
 
         .text
         .syntax unified
index 4e6d322..12c68d6 100644 (file)
@@ -27,8 +27,8 @@
  */
 
 #include <machine/cpu-features.h>
-#include <machine/asm.h>
-#include "private/libc_events.h"
+#include <private/bionic_asm.h>
+#include <private/libc_events.h>
 
         /*
          * Optimized memset() for ARM.
index 72d4e9e..b95be94 100644 (file)
@@ -53,7 +53,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
     .syntax unified
 
index 0cccf06..12da115 100644 (file)
@@ -27,7 +27,7 @@
  */
 
 #include <machine/cpu-features.h>
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 #ifdef __ARMEB__
 #define S2LOMEM lsl
index 5773540..cb878c4 100644 (file)
@@ -53,7 +53,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
     .syntax unified
 
index 08f6d19..9a0ce62 100644 (file)
@@ -53,7 +53,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
     .syntax unified
 
index 7009168..651aefc 100644 (file)
@@ -26,8 +26,8 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
-#include "private/libc_events.h"
+#include <private/bionic_asm.h>
+#include <private/libc_events.h>
 
     .syntax unified
     .fpu    neon
index 908eec4..2447780 100644 (file)
@@ -26,8 +26,8 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
-#include "private/libc_events.h"
+#include <private/bionic_asm.h>
+#include <private/libc_events.h>
 
     .syntax unified
     .fpu    neon
index 72c1a66..8dcd937 100644 (file)
@@ -26,8 +26,8 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
-#include "private/libc_events.h"
+#include <private/bionic_asm.h>
+#include <private/libc_events.h>
 
 /*
  * This code assumes it is running on a processor that supports all arm v7
index 7f77dad..a5057eb 100644 (file)
@@ -26,9 +26,8 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/cpu-features.h>
-#include <machine/asm.h>
-#include "private/libc_events.h"
+#include <private/bionic_asm.h>
+#include <private/libc_events.h>
 
 /*
  * This code assumes it is running on a processor that supports all arm v7
index 0f5baef..f5a855e 100644 (file)
@@ -53,7 +53,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
     .syntax unified
 
index eacdb89..2411c65 100644 (file)
@@ -27,7 +27,7 @@
  */
 
 #include <machine/cpu-features.h>
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 #ifdef __ARMEB__
 #define S2LOMEM lsl
index 9aa4f88..9e9610b 100644 (file)
@@ -53,7 +53,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
     .syntax unified
 
index 259eda0..b92b043 100644 (file)
@@ -53,7 +53,7 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
     .syntax unified
 
index 699b88d..cd4a13d 100644 (file)
@@ -27,8 +27,8 @@
  */
 
 #include <machine/cpu-features.h>
-#include <machine/asm.h>
-#include "private/libc_events.h"
+#include <private/bionic_asm.h>
+#include <private/libc_events.h>
 
         /*
          * Optimized memcpy() for ARM.
index baeb519..be35de9 100644 (file)
@@ -26,8 +26,8 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
-#include "private/libc_events.h"
+#include <private/bionic_asm.h>
+#include <private/libc_events.h>
 
         /*
          * Optimized memset() for ARM.
index 42d41d1..6dba942 100644 (file)
@@ -28,7 +28,7 @@
  */
 
 #include <machine/cpu-features.h>
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
        .text
 
index cc997f4..802a62d 100644 (file)
@@ -30,7 +30,7 @@
  */
 
 #include <machine/cpu-features.h>
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 ENTRY(strcpy)
        pld     [r1, #0]
index f16baf8..7954f05 100644 (file)
 #ifndef _ARM32_ASM_H_
 #define _ARM32_ASM_H_
 
-#ifdef __ELF__
-# define _C_LABEL(x)   x
-#else
-# ifdef __STDC__
-#  define _C_LABEL(x)  _ ## x
-# else
-#  define _C_LABEL(x)  _/**/x
-# endif
-#endif
-#define        _ASM_LABEL(x)   x
-
-#ifdef __STDC__
-# define __CONCAT(x,y) x ## y
-# define __STRING(x)   #x
-#else
-# define __CONCAT(x,y) x/**/y
-# define __STRING(x)   "x"
-#endif
-
 #ifndef _ALIGN_TEXT
 # define _ALIGN_TEXT .align 0
 #endif
 
-/*
- * gas/arm uses @ as a single comment character and thus cannot be used here
- * Instead it recognised the # instead of an @ symbols in .type directives
- * We define a couple of macros so that assembly code will not be dependant
- * on one or the other.
- */
-#define _ASM_TYPE_FUNCTION     #function
-#define _ASM_TYPE_OBJECT       #object
-#define _ENTRY(x) \
-       .text; _ALIGN_TEXT; .globl x; .type x,_ASM_TYPE_FUNCTION; x: .fnstart; .cfi_startproc;
-
-#define _ASM_SIZE(x)   .size x, .-x;
-
-#define _END(x) \
-       .fnend; .cfi_endproc; \
-       _ASM_SIZE(x)
-
-#ifdef GPROF
-# ifdef __ELF__
-#  define _PROF_PROLOGUE       \
-       mov ip, lr; bl __mcount
-# else
-#  define _PROF_PROLOGUE       \
-       mov ip,lr; bl mcount
-# endif
-#else
-# define _PROF_PROLOGUE
-#endif
-
-#define        ENTRY(y)        _ENTRY(_C_LABEL(y)); _PROF_PROLOGUE
-#define        ENTRY_NP(y)     _ENTRY(_C_LABEL(y))
-#define        END(y)          _END(_C_LABEL(y))
-#define        ASENTRY(y)      _ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE
-#define        ASENTRY_NP(y)   _ENTRY(_ASM_LABEL(y))
-#define        ASEND(y)        _END(_ASM_LABEL(y))
-
-#ifdef __ELF__
-#define ENTRY_PRIVATE(y)  ENTRY(y); .hidden _C_LABEL(y)
-#else
-#define ENTRY_PRIVATE(y)  ENTRY(y)
-#endif
+#undef __bionic_asm_custom_entry
+#undef __bionic_asm_custom_end
+#define __bionic_asm_custom_entry(f) .fnstart
+#define __bionic_asm_custom_end(f) .fnend
 
-#define        ASMSTR          .asciz
+#undef __bionic_asm_function_type
+#define __bionic_asm_function_type #function
 
 #if defined(__ELF__) && defined(PIC)
-#ifdef __STDC__
-#define        PIC_SYM(x,y)    x ## ( ## y ## )
+#define PIC_SYM(x,y) x ## ( ## y ## )
 #else
-#define        PIC_SYM(x,y)    x/**/(/**/y/**/)
+#define PIC_SYM(x,y) x
 #endif
-#else
-#define        PIC_SYM(x,y)    x
-#endif
-
-#ifdef __ELF__
-#define RCSID(x)       .section ".ident"; .asciz x
-#else
-#define RCSID(x)       .text; .asciz x
-#endif
-
-#ifdef __ELF__
-#define        WEAK_ALIAS(alias,sym)                                           \
-       .weak alias;                                                    \
-       alias = sym
-#endif
-
-#ifdef __STDC__
-#define        WARN_REFERENCES(sym,msg)                                        \
-       .stabs msg ## ,30,0,0,0 ;                                       \
-       .stabs __STRING(_C_LABEL(sym)) ## ,1,0,0,0
-#elif defined(__ELF__)
-#define        WARN_REFERENCES(sym,msg)                                        \
-       .stabs msg,30,0,0,0 ;                                           \
-       .stabs __STRING(sym),1,0,0,0
-#else
-#define        WARN_REFERENCES(sym,msg)                                        \
-       .stabs msg,30,0,0,0 ;                                           \
-       .stabs __STRING(_/**/sym),1,0,0,0
-#endif /* __STDC__ */
 
 #endif /* !_ARM_ASM_H_ */
index a5d06f3..34becdb 100644 (file)
@@ -26,8 +26,8 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
-#include "private/libc_events.h"
+#include <private/bionic_asm.h>
+#include <private/libc_events.h>
 
     .syntax unified
 
index 95aaf4f..c3e3e14 100644 (file)
@@ -26,8 +26,8 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
-#include "private/libc_events.h"
+#include <private/bionic_asm.h>
+#include <private/libc_events.h>
 
     .syntax unified
 
index 54405fa..0b7b276 100644 (file)
@@ -28,8 +28,8 @@
 
 /* Assumes neon instructions and a cache line size of 32 bytes. */
 
-#include <machine/asm.h>
-#include "private/libc_events.h"
+#include <private/bionic_asm.h>
+#include <private/libc_events.h>
 
 /*
  * This code assumes it is running on a processor that supports all arm v7
index 1563327..5d1943b 100644 (file)
@@ -27,8 +27,8 @@
  */
 
 #include <machine/cpu-features.h>
-#include <machine/asm.h>
-#include "private/libc_events.h"
+#include <private/bionic_asm.h>
+#include <private/libc_events.h>
 
 /*
  * This code assumes it is running on a processor that supports all arm v7
index f735fb5..eacb82a 100644 (file)
@@ -27,7 +27,7 @@
  */
 
 #include <machine/cpu-features.h>
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 #ifdef __ARMEB__
 #define S2LOMEM lsl
index 3cd4ceb..d495b6a 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 ENTRY(__get_sp)
     mov x0, sp
index d176ea3..8fb6f0c 100644 (file)
@@ -26,8 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#include <asm/unistd.h>
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 ENTRY_PRIVATE(__rt_sigreturn)
   mov     x8, __NR_rt_sigreturn
index 6cbf5c6..dfa861b 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 #include <machine/setjmp.h>
 
 /*
index 2d8631b..9a68d86 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 #include <machine/setjmp.h>
 
 /*
index cde1cbb..4fdb367 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 #include <machine/setjmp.h>
 
 /*
index 3f8b908..4bfabaf 100644 (file)
 #ifndef _AARCH64_ASM_H_
 #define _AARCH64_ASM_H_
 
-/* TODO: Add cfi directives for creating/restoring FP */
-#ifdef __ELF__
-# define       _C_LABEL(x)     x
-#else
-# ifdef __STDC__
-#  define      _C_LABEL(x)     _ ## x
-# else
-#  define      _C_LABEL(x)     _/**/x
-# endif
-#endif
-#define        _ASM_LABEL(x)   x
-
-#ifdef __STDC__
-# define       __CONCAT(x,y)   x ## y
-# define       __STRING(x)     #x
-#else
-# define       __CONCAT(x,y)   x/**/y
-# define       __STRING(x)     "x"
-#endif
-
 #ifndef _ALIGN_TEXT
-# define       _ALIGN_TEXT     .align 0
+# define _ALIGN_TEXT .align 0
 #endif
 
-#define        _ASM_TYPE_FUNCTION      %function
-#define        _ASM_TYPE_OBJECT        %object
-#define        _ENTRY(x) \
-       .text; _ALIGN_TEXT; .globl x; .type x,_ASM_TYPE_FUNCTION; x: .cfi_startproc
-
-#define        _ASM_SIZE(x)    .size x, .-x;
-
-#define _END(x) \
-       .cfi_endproc; \
-       _ASM_SIZE(x)
-
-#define        ENTRY(y)        _ENTRY(_C_LABEL(y));
-#define        ENTRY_NP(y)     _ENTRY(_C_LABEL(y))
-#define        END(y)          _END(_C_LABEL(y))
-#define        ASENTRY(y)      _ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE
-#define        ASENTRY_NP(y)   _ENTRY(_ASM_LABEL(y))
-#define        ASEND(y)        _END(_ASM_LABEL(y))
-
-#ifdef __ELF__
-#define        ENTRY_PRIVATE(y)  ENTRY(y); .hidden _C_LABEL(y)
-#else
-#define        ENTRY_PRIVATE(y)  ENTRY(y)
-#endif
-
-#define        ASMSTR          .asciz
+#undef __bionic_asm_function_type
+#define __bionic_asm_function_type %function
 
 #if defined(__ELF__) && defined(PIC)
-#ifdef __STDC__
-#define        PIC_SYM(x,y)    x ## ( ## y ## )
-#else
-#define        PIC_SYM(x,y)    x/**/(/**/y/**/)
-#endif
-#else
-#define        PIC_SYM(x,y)    x
-#endif
-
-#ifdef __ELF__
-#define        RCSID(x)        .section ".ident"; .asciz x
+#define PIC_SYM(x,y) x ## ( ## y ## )
 #else
-#define        RCSID(x)        .text; .asciz x
+#define PIC_SYM(x,y) x
 #endif
 
-#ifdef __ELF__
-#define        WEAK_ALIAS(alias,sym)                                           \
-       .weak alias;                                                    \
-       alias = sym
-#endif
-
-#ifdef __STDC__
-#define        WARN_REFERENCES(sym,msg)                                        \
-       .stabs msg ## ,30,0,0,0 ;                                       \
-       .stabs __STRING(_C_LABEL(sym)) ## ,1,0,0,0
-#elif defined(__ELF__)
-#define        WARN_REFERENCES(sym,msg)                                        \
-       .stabs msg,30,0,0,0 ;                                           \
-       .stabs __STRING(sym),1,0,0,0
-#else
-#define        WARN_REFERENCES(sym,msg)                                        \
-       .stabs msg,30,0,0,0 ;                                           \
-       .stabs __STRING(_/**/sym),1,0,0,0
-#endif /* __STDC__ */
-
 #endif /* _AARCH64_ASM_H_ */
-
index 8970b6e..9273134 100644 (file)
  * SUCH DAMAGE.
  */
 
-#include <asm/unistd.h>
+#include <private/bionic_asm.h>
 #include <linux/errno.h>
 #include <linux/sched.h>
 
 // pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg);
-       .text
-       .type __bionic_clone, @function
-       .global __bionic_clone
-       .align 4
-        .ent __bionic_clone
-__bionic_clone:
+ENTRY(__bionic_clone)
         .set   noreorder
-        .cpload $t9
+        .cpload t9
         .set   reorder
 
        # set up child stack
-       subu    $a1,16
-       lw      $t0,20($sp)     # fn
-       lw      $t1,24($sp)     # arg
-       sw      $t0,0($a1)      # fn
-       sw      $t1,4($a1)      # arg
+       subu    a1,16
+       lw      t0,20(sp)     # fn
+       lw      t1,24(sp)     # arg
+       sw      t0,0(a1)        # fn
+       sw      t1,4(a1)        # arg
 
        # remainder of arguments are correct for clone system call
-        li     $v0,__NR_clone
+        li     v0,__NR_clone
         syscall
 
-        bnez   $a3,.L__error_bc
+        bnez   a3,.L__error_bc
 
-        beqz   $v0,.L__thread_start_bc
+        beqz   v0,.L__thread_start_bc
 
-        j $ra
+        j ra
 
 .L__thread_start_bc:
-        lw     $a0,0($sp)      #  fn
-        lw     $a1,4($sp)      #  arg
+        lw     a0,0(sp)        #  fn
+        lw     a1,4(sp)        #  arg
 
        # void __bionic_clone_entry(int (*func)(void*), void *arg)
-        la     $t9,__bionic_clone_entry
-        j      $t9
+        la     t9,__bionic_clone_entry
+        j      t9
 
 .L__error_bc:
-       move    $a0,$v0
-       la      $t9,__set_errno
-       j       $t9
-
-        .end __bionic_clone
+       move    a0,v0
+       la      t9,__set_errno
+       j       t9
+END(__bionic_clone)
index 834c89d..d4b278b 100644 (file)
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-       .text
 
-/* void *__get_sp(void) */
+#include <private/bionic_asm.h>
 
-       .type   __get_sp, @function
-       .global __get_sp
-       .align  4
-       .ent    __get_sp
-__get_sp:
-       move    $v0, $sp
-       j       $ra
-       .end    __get_sp
+// void* __get_sp()
+ENTRY(__get_sp)
+  move v0, sp
+  j ra
+END(__get_sp)
index 8f624c3..129e3f9 100644 (file)
  * SUCH DAMAGE.
  */
 
-#include <asm/unistd.h>
-
-       .text
+#include <private/bionic_asm.h>
 
 // void _exit_with_stack_teardown(void* stackBase, size_t stackSize)
-
-       .type   _exit_with_stack_teardown, @function
-       .global _exit_with_stack_teardown
-       .align  4
-       .ent    _exit_with_stack_teardown
-_exit_with_stack_teardown:
-       li      $v0, __NR_munmap
+ENTRY(_exit_with_stack_teardown)
+       li      v0, __NR_munmap
        syscall
        // If munmap failed, we ignore the failure and exit anyway.
 
-       li      $a0, 0
-       li      $v0, __NR_exit
+       li      a0, 0
+       li      v0, __NR_exit
        syscall
         // The exit syscall does not return.
-       .end    _exit_with_stack_teardown
+END(_exit_with_stack_teardown)
index e7083ae..4465cd2 100644 (file)
@@ -2,7 +2,7 @@
 
 /*
  * Copyright (c) 2002 Opsycon AB  (www.opsycon.se / www.opsycon.com)
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -29,7 +29,7 @@
  *
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 #include <machine/regnum.h>
 #include <machine/signal.h>
 
@@ -48,13 +48,13 @@ GPOFF= FRAMESZ-2*REGSZ
         swc1    FPR, OFF(BASE)  ;       \
         mfhc1   t0, FPR         ;       \
         sw      t0, OFF+4(BASE) ;
-        
+
 #define FPREG64_L(FPR, OFF, BASE)       \
         lw      t0, OFF+4(BASE) ;       \
         lw      t1, OFF(BASE)   ;       \
         mtc1    t1, FPR         ;       \
         mthc1   t0, FPR         ;       \
-        
+
 LEAF(_setjmp, FRAMESZ)
        PTR_SUBU sp, FRAMESZ
        SETUP_GP64(GPOFF, _setjmp)
@@ -185,4 +185,3 @@ botch:
        RESTORE_GP64
        PTR_ADDU sp, FRAMESZ
 END(_longjmp)
-
index 6739345..6e5d294 100644 (file)
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-       .text
 
-/*
- * void bzero(void *s, size_t n);
- */
-       .type   bzero, @function
-       .global bzero
-       .align  4
-       .ent    bzero
-       .set    noreorder
-bzero:
-       .cpload $t9
-       move    $a2,$a1
-       la      $t9,memset
-       j       $t9
-        move   $a1,$zero
-       .end    bzero
+#include <private/bionic_asm.h>
 
+// void bzero(void*, size_t);
+ENTRY(bzero)
+       .set    noreorder
+       .cpload t9
+       move    a2,a1
+       la      t9,memset
+       j       t9
+        move   a1,zero
+END(bzero)
index 285beac..7626a7c 100644 (file)
 #define FUTEX_WAKE 1
 
 // int __futex_wait(volatile void* ftx, int val, const struct timespec* timeout)
-       .type   __futex_wait, @function
-       .global __futex_wait
-       .align  4
-       .ent    __futex_wait
-__futex_wait:
+ENTRY(__futex_wait)
        subu    sp,4*6
        sw      $0,20(sp)       /* val3 */
        sw      $0,16(sp)       /* addr2 */
@@ -54,14 +50,10 @@ __futex_wait:
        .set reorder
        addu    sp,4*6
        j       ra
-       .end    __futex_wait
+END(__futex_wait)
 
 // int __futex_wake(volatile void* ftx, int count)
-       .type   __futex_wake, @function
-       .globl  __futex_wake
-       .align  4
-       .ent    __futex_wake
-__futex_wake:
+ENTRY(__futex_wake)
        subu    sp,4*6
        sw      $0,20(sp)       /* val3 */
        sw      $0,16(sp)       /* addr2 */
@@ -79,14 +71,10 @@ __futex_wake:
        .set reorder
        addu    sp,4*6
        j       ra
-       .end    __futex_wake
+END(__futex_wake)
 
 // int __futex_syscall3(volatile void* ftx, int op, int count)
-       .type   __futex_syscall3, @function
-       .global __futex_syscall3
-       .align  4
-       .ent    __futex_syscall3
-__futex_syscall3:
+ENTRY(__futex_syscall3)
        subu    sp,4*6
        sw      $0,20(sp)       /* val3 */
        sw      $0,16(sp)       /* addr2 */
@@ -104,14 +92,10 @@ __futex_syscall3:
        .set reorder
        addu    sp,4*6
        j       ra
-       .end    __futex_syscall3
+END(__futex_syscall3)
 
 // int __futex_syscall4(volatile void* ftx, int op, int val, const struct timespec* timeout)
-       .type   __futex_syscall4, @function
-       .global __futex_syscall4
-       .align  4
-       .ent    __futex_syscall4
-__futex_syscall4:
+ENTRY(__futex_syscall4)
        subu    sp,4*6
        sw      $0,20(sp)       /* val3 */
        sw      $0,16(sp)       /* addr2 */
@@ -129,4 +113,4 @@ __futex_syscall4:
        .set reorder
        addu    sp,4*6
        j       ra
-       .end    __futex_syscall4
+END(__futex_syscall4)
index a2b2544..f9d14a9 100644 (file)
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-       .text
 
-/*
- * u4 __memcmp16(const u2* s0, const u2* s1, size_t count);
- */
-       .type   __memcmp16, @function
-       .global __memcmp16
-       .align  4
-       .ent __memcmp16
-__memcmp16:
-       li      $t0,0
-       li      $t1,0
-       beqz    $a2,done                /* 0 length string */ 
-       beq     $a0,$a1,done            /* strings are identical */
+#include <private/bionic_asm.h>
+
+// u4 __memcmp16(const u2*, const u2*, size_t);
+ENTRY(__memcmp16)
+       li      t0,0
+       li      t1,0
+       beqz    a2,done         /* 0 length string */ 
+       beq     a0,a1,done              /* strings are identical */
 
        /* Unoptimised... */
-1:     lhu     $t0,0($a0)
-       lhu     $t1,0($a1)
-       addu    $a1,2
-       bne     $t0,$t1,done
-       addu    $a0,2
-       subu    $a2,1
-       bnez    $a2,1b
+1:     lhu     t0,0(a0)
+       lhu     t1,0(a1)
+       addu    a1,2
+       bne     t0,t1,done
+       addu    a0,2
+       subu    a2,1
+       bnez    a2,1b
 
 done:
-       subu    $v0,$t0,$t1
-       j       $ra
-        .end __memcmp16
+       subu    v0,t0,t1
+       j       ra
+END(__memcmp16)
index 7c21195..2af1fbd 100644 (file)
@@ -29,7 +29,7 @@
  *
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 #include <machine/regnum.h>
 #include <machine/signal.h>
 
@@ -49,13 +49,13 @@ RAOFF= FRAMESZ-1*REGSZ
         swc1    FPR, OFF(BASE)  ;       \
         mfhc1   t0, FPR         ;       \
         sw      t0, OFF+4(BASE) ;
-        
+
 #define FPREG64_L(FPR, OFF, BASE)       \
         lw      t0, OFF+4(BASE) ;       \
         lw      t1, OFF(BASE)   ;       \
         mtc1    t1, FPR         ;       \
         mthc1   t0, FPR         ;       \
-        
+
 NON_LEAF(setjmp, FRAMESZ, ra)
        .mask   0x80000000, RAOFF
        PTR_SUBU sp, FRAMESZ                    # allocate stack frame
@@ -154,7 +154,7 @@ LEAF(longjmp, FRAMESZ)
        lw      a0, A0OFF(sp)
        lw      a1, A1OFF(sp)
 
-       .set    noreorder       
+       .set    noreorder
        REG_L   v0, SC_REGS+ZERO*REGSZ(a0)
        bne     v0, 0xACEDBADE, botch           # jump if error
        REG_L   ra, SC_PC(a0)
@@ -169,9 +169,9 @@ LEAF(longjmp, FRAMESZ)
        REG_L   s8, SC_REGS+S8*REGSZ(a0)
        REG_L   gp, SC_REGS+GP*REGSZ(a0)
        REG_L   sp, SC_REGS+SP*REGSZ(a0)
-       
+
 #if !defined(SOFTFLOAT)
-       REG_L   v0, SC_FPREGS+((FSR-F0)*REGSZ)(a0)      
+       REG_L   v0, SC_FPREGS+((FSR-F0)*REGSZ)(a0)
        ctc1    v0, $31
 #if _MIPS_FPSET == 32
         FPREG64_L($f20, SC_FPREGS+((F20-F0)*REGSZ_FP), a0)
index b05454c..9d2e5ea 100644 (file)
@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 #include <machine/regnum.h>
 #include <machine/setjmp.h>
 
index af5bcc9..db477a5 100644 (file)
  * SUCH DAMAGE.
  */
 
-#include <asm/unistd.h>
-    .text
-    .globl syscall
-    .align 4
-    .ent syscall
+#include <private/bionic_asm.h>
 
 /*
  * The caller is only required to allocate 16 bytes of stack for a0-a3.
  */
 #define STACKSIZE 2*4
 
-syscall:
+ENTRY(syscall)
     .set noreorder
-    .cpload $t9
-    move    $v0, $a0
-    move    $a0, $a1
-    move    $a1, $a2
-    move    $a2, $a3
-    lw      $a3, 16($sp)
-    lw      $t0, 20($sp)
-    lw      $t1, 24($sp)
-    subu    $sp, STACKSIZE
-    sw      $t0, 16($sp)
-    sw      $t1, 20($sp)
+    .cpload t9
+    move    v0, a0
+    move    a0, a1
+    move    a1, a2
+    move    a2, a3
+    lw      a3, 16(sp)
+    lw      t0, 20(sp)
+    lw      t1, 24(sp)
+    subu    sp, STACKSIZE
+    sw      t0, 16(sp)
+    sw      t1, 20(sp)
     syscall
-    addu    $sp, STACKSIZE
-    bnez    $a3, 1f
-    move    $a0, $v0
-    j       $ra
+    addu    sp, STACKSIZE
+    bnez    a3, 1f
+    move    a0, v0
+    j       ra
     nop
 1:
-    la      $t9,__set_errno
-    j       $t9
+    la      t9,__set_errno
+    j       t9
     nop
     .set reorder
-    .end syscall
+END(syscall)
index 414caaf..96de69e 100644 (file)
  * SUCH DAMAGE.
  */
 
-#include <asm/unistd.h>
+#include <private/bionic_asm.h>
 #include <linux/sched.h>
 
 // TODO: mips' uapi signal.h is missing #ifndef __ASSEMBLY__.
 // #include <asm/signal.h>
 #define SIGCHLD 18
 
-       .text
-
-       .type   vfork, @function
-       .global vfork
-       .align  4
-       .ent    vfork
-vfork:
+ENTRY(vfork)
        .set    noreorder
-       .cpload $t9
+       .cpload t9
 
-       li      $a0, (CLONE_VM | CLONE_VFORK | SIGCHLD)
-       li      $a1, 0
-       li      $a2, 0
-       li      $a3, 0
-       subu    $sp, 8
-       sw      $0, 16($sp)
-       li      $v0, __NR_clone
+       li      a0, (CLONE_VM | CLONE_VFORK | SIGCHLD)
+       li      a1, 0
+       li      a2, 0
+       li      a3, 0
+       subu    sp, 8
+       sw      $0, 16(sp)
+       li      v0, __NR_clone
        syscall
-       addu    $sp, 8
-       bnez    $a3, 1f
-        move   $a0, $v0
+       addu    sp, 8
+       bnez    a3, 1f
+        move   a0, v0
 
-       j       $ra
+       j       ra
         nop
 1:
-       la      $t9, __set_errno
-       j       $t9
+       la      t9, __set_errno
+       j       t9
         nop
-       .end    vfork
+END(vfork)
index 43dbc09..5eacde3 100644 (file)
 #ifndef _MIPS64_ASM_H
 #define _MIPS64_ASM_H
 
-#include <machine/regdef.h>
-
-#ifdef NEED_OLD_RM7KFIX
-#define ITLBNOPFIX      nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;
-#else
-#define ITLBNOPFIX      nop;nop;nop;nop
+#ifndef _ALIGN_TEXT
+# define _ALIGN_TEXT .align 4
 #endif
 
+#undef __bionic_asm_custom_entry
+#undef __bionic_asm_custom_end
+#define __bionic_asm_custom_entry(f) .ent f
+#define __bionic_asm_custom_end(f) .end f
+
+#include <machine/regdef.h>
+
 #define        _MIPS_ISA_MIPS1 1       /* R2000/R3000 */
 #define        _MIPS_ISA_MIPS2 2       /* R4000/R6000 */
 #define        _MIPS_ISA_MIPS3 3       /* R4000 */
 #define        _MIPS_ISA_MIPS4 4       /* TFP (R1x000) */
-#ifdef __linux__
 #define        _MIPS_ISA_MIPS5 5
 #define        _MIPS_ISA_MIPS32 6
 #define        _MIPS_ISA_MIPS64 7
-#else
-#define        _MIPS_ISA_MIPS32 32     /* MIPS32 */
-#endif
 
 #if !defined(ABICALLS) && !defined(_NO_ABICALLS)
 #define        ABICALLS        .abicalls
@@ -56,8 +55,6 @@
        ABICALLS
 #endif
 
-#define _C_LABEL(x) x          /* XXX Obsolete but keep for a while */
-
 #if !defined(__MIPSEL__) && !defined(__MIPSEB__)
 #error "__MIPSEL__ or __MIPSEB__ must be defined"
 #endif
  */
 #if defined(ABICALLS) && !defined(_KERNEL) && !defined(_STANDALONE)
 
-#ifndef _MIPS_SIM
-#define _MIPS_SIM 1
-#define _ABIO32        1
-#endif
-#ifndef _MIPS_ISA
-#define _MIPS_ISA 2
-#define _MIPS_ISA_MIPS2 2
-#endif
-
 #if (_MIPS_SIM == _ABIO32) || (_MIPS_SIM == _ABI32)
 #define NARGSAVE       4
 
 #define        CF_RA_OFFS      20      /* Call ra save offset */
 #endif
 
-#if (_MIPS_ISA == _MIPS_ISA_MIPS3 || _MIPS_ISA == _MIPS_ISA_MIPS4)
+#if (_MIPS_ISA == _MIPS_ISA_MIPS3 || _MIPS_ISA == _MIPS_ISA_MIPS4 || _MIPS_ISA == _MIPS_ISA_MIPS64)
 #define REGSZ          8       /* 64 bit mode register size */
 #define LOGREGSZ       3       /* log rsize */
 #define        REG_S   sd
 #endif
 
 /*
- * Define -pg profile entry code.
- */
-#if defined(XGPROF) || defined(XPROF)
-#define        MCOUNT                  \
-       PTR_SUBU sp, sp, 32;    \
-       SAVE_GP(16);            \
-       sw      ra, 28(sp);     \
-       sw      gp, 24(sp);     \
-       .set    noat;           \
-       .set    noreorder;      \
-       move    AT, ra;         \
-       jal     _mcount;        \
-       PTR_SUBU sp, sp, 8;     \
-       lw      ra, 28(sp);     \
-       PTR_ADDU sp, sp, 32;    \
-       .set reorder;           \
-       .set    at;
-#else
-#define        MCOUNT
-#endif
-
-/*
  * LEAF(x, fsize)
  *
  *     Declare a leaf routine.
        .globl x;               \
        .ent x, 0;              \
 x: ;                           \
+       .cfi_startproc; \
        .frame sp, fsize, ra;   \
        SETUP_GP                \
-       MCOUNT
-
-#define        ALEAF(x)                \
-       .globl  x;              \
-x:
-
-/*
- * NLEAF(x)
- *
- *     Declare a non-profiled leaf routine.
- */
-#define NLEAF(x, fsize)                \
-       .align  3;              \
-       .globl x;               \
-       .ent x, 0;              \
-x: ;                           \
-       .frame sp, fsize, ra;   \
-       SETUP_GP
 
 /*
  * NON_LEAF(x)
@@ -252,54 +201,8 @@ x: ;                               \
        .globl x;               \
        .ent x, 0;              \
 x: ;                           \
+       .cfi_startproc; \
        .frame sp, fsize, retpc; \
        SETUP_GP                \
-       MCOUNT
-
-/*
- * NNON_LEAF(x)
- *
- *     Declare a non-profiled non-leaf routine
- *     (a routine that makes other C calls).
- */
-#define NNON_LEAF(x, fsize, retpc) \
-       .align  3;              \
-       .globl x;               \
-       .ent x, 0;              \
-x: ;                           \
-       .frame sp, fsize, retpc \
-       SETUP_GP
-
-/*
- * END(x)
- *
- *     Mark end of a procedure.
- */
-#define END(x) \
-       .end x
-
-/*
- * Macros to panic and printf from assembly language.
- */
-#define PANIC(msg) \
-       LA      a0, 9f; \
-       jal     panic;  \
-       nop     ;       \
-       MSG(msg)
-
-#define        PRINTF(msg) \
-       la      a0, 9f; \
-       jal     printf; \
-       nop     ;       \
-       MSG(msg)
-
-#define        MSG(msg) \
-       .rdata; \
-9:     .asciiz msg; \
-       .text
-
-#define ASMSTR(str) \
-       .asciiz str; \
-       .align  3
 
 #endif /* !_MIPS_ASM_H */
index f02ec0d..b31715c 100644 (file)
@@ -37,8 +37,6 @@
 #ifndef _MIPS_SIGNAL_H_
 #define _MIPS_SIGNAL_H_
 
-#include <machine/asm.h>
-
 #define        SC_REGMASK      (0*REGSZ)
 #define        SC_STATUS       (1*REGSZ)
 #define        SC_PC           (2*REGSZ)
index aabdfcf..dc91096 100644 (file)
  *  Include files
  ************************************************************************/
 
-#include "machine/asm.h"
+#include <private/bionic_asm.h>
 
 
-/* 
+/*
  * This routine could be optimized for MIPS64. The current code only
  * uses MIPS32 instructions.
- */    
+ */
 #if defined(__MIPSEB__)
 #  define LWHI lwl             /* high part is left in big-endian      */
 #  define SWHI swl             /* high part is left in big-endian      */
index a1c5055..3e630ca 100644 (file)
  *  Include files
  ************************************************************************/
 
-#include "machine/asm.h"
+#include <private/bionic_asm.h>
 
-/* 
+/*
  * This routine could be optimized for MIPS64. The current code only
  * uses MIPS32 instructions.
- */    
+ */
 
 #if defined(__MIPSEB__)
 #  define SWHI swl             /* high part is left in big-endian      */
@@ -220,7 +220,7 @@ LEAF(memset,0)
        sw      a1,-36(a0)
        nop
        nop                     # the extra nop instructions help to balance
-       nop                     # cycles needed for "store" + "fill" + "evict" 
+       nop                     # cycles needed for "store" + "fill" + "evict"
        nop                     # For 64byte store there are needed 8 fill
        nop                     # and 8 evict cycles, i.e. at least 32 instr.
        nop
@@ -320,4 +320,3 @@ END(memset)
 /************************************************************************
  *  Implementation : Static functions
  ************************************************************************/
-
index 2a9a2b0..e1ade30 100644 (file)
@@ -26,8 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
-#include <asm/unistd.h>
+#include <private/bionic_asm.h>
 #include <linux/errno.h>
 #include <linux/sched.h>
 
@@ -43,8 +42,7 @@ FRAME_FN      =       FRAMESZ-3*REGSZ
 #endif
 
 // pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg);
-       .text
-LEAF(__bionic_clone,FRAMESZ)
+LEAF(__bionic_clone, FRAMESZ)
        PTR_SUBU sp, FRAMESZ                    # allocate stack frame
        SETUP_GP64(FRAME_GP,__bionic_clone)
        SAVE_GP(FRAME_GP)
index 834c89d..8488102 100644 (file)
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-       .text
 
-/* void *__get_sp(void) */
+#include <private/bionic_asm.h>
 
-       .type   __get_sp, @function
-       .global __get_sp
-       .align  4
-       .ent    __get_sp
-__get_sp:
-       move    $v0, $sp
-       j       $ra
-       .end    __get_sp
+ENTRY(__get_sp)
+  move v0, sp
+  j ra
+END(__get_sp)
index 8f624c3..3b537eb 100644 (file)
  * SUCH DAMAGE.
  */
 
-#include <asm/unistd.h>
-
-       .text
+#include <private/bionic_asm.h>
 
 // void _exit_with_stack_teardown(void* stackBase, size_t stackSize)
+ENTRY(_exit_with_stack_teardown)
+  li   v0, __NR_munmap
+  syscall
+  // If munmap failed, we ignore the failure and exit anyway.
 
-       .type   _exit_with_stack_teardown, @function
-       .global _exit_with_stack_teardown
-       .align  4
-       .ent    _exit_with_stack_teardown
-_exit_with_stack_teardown:
-       li      $v0, __NR_munmap
-       syscall
-       // If munmap failed, we ignore the failure and exit anyway.
-
-       li      $a0, 0
-       li      $v0, __NR_exit
-       syscall
-        // The exit syscall does not return.
-       .end    _exit_with_stack_teardown
+  li   a0, 0
+  li   v0, __NR_exit
+  syscall
+  // The exit syscall does not return.
+END(_exit_with_stack_teardown)
index e7083ae..4465cd2 100644 (file)
@@ -2,7 +2,7 @@
 
 /*
  * Copyright (c) 2002 Opsycon AB  (www.opsycon.se / www.opsycon.com)
- * 
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -29,7 +29,7 @@
  *
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 #include <machine/regnum.h>
 #include <machine/signal.h>
 
@@ -48,13 +48,13 @@ GPOFF= FRAMESZ-2*REGSZ
         swc1    FPR, OFF(BASE)  ;       \
         mfhc1   t0, FPR         ;       \
         sw      t0, OFF+4(BASE) ;
-        
+
 #define FPREG64_L(FPR, OFF, BASE)       \
         lw      t0, OFF+4(BASE) ;       \
         lw      t1, OFF(BASE)   ;       \
         mtc1    t1, FPR         ;       \
         mthc1   t0, FPR         ;       \
-        
+
 LEAF(_setjmp, FRAMESZ)
        PTR_SUBU sp, FRAMESZ
        SETUP_GP64(GPOFF, _setjmp)
@@ -185,4 +185,3 @@ botch:
        RESTORE_GP64
        PTR_ADDU sp, FRAMESZ
 END(_longjmp)
-
index d0b5c84..76c6bc2 100644 (file)
@@ -25,9 +25,8 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-       .text
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 /*
  * void bzero(void *s, size_t n);
@@ -40,4 +39,3 @@ LEAF(bzero,0)
        RESTORE_GP64
        j       t9
 END(bzero)
-
index b70c078..1c58c1b 100644 (file)
@@ -27,7 +27,7 @@
  */
        .text
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 /*
  * u4 __memcmp16(const u2* s0, const u2* s1, size_t count);
index 7c21195..2af1fbd 100644 (file)
@@ -29,7 +29,7 @@
  *
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 #include <machine/regnum.h>
 #include <machine/signal.h>
 
@@ -49,13 +49,13 @@ RAOFF= FRAMESZ-1*REGSZ
         swc1    FPR, OFF(BASE)  ;       \
         mfhc1   t0, FPR         ;       \
         sw      t0, OFF+4(BASE) ;
-        
+
 #define FPREG64_L(FPR, OFF, BASE)       \
         lw      t0, OFF+4(BASE) ;       \
         lw      t1, OFF(BASE)   ;       \
         mtc1    t1, FPR         ;       \
         mthc1   t0, FPR         ;       \
-        
+
 NON_LEAF(setjmp, FRAMESZ, ra)
        .mask   0x80000000, RAOFF
        PTR_SUBU sp, FRAMESZ                    # allocate stack frame
@@ -154,7 +154,7 @@ LEAF(longjmp, FRAMESZ)
        lw      a0, A0OFF(sp)
        lw      a1, A1OFF(sp)
 
-       .set    noreorder       
+       .set    noreorder
        REG_L   v0, SC_REGS+ZERO*REGSZ(a0)
        bne     v0, 0xACEDBADE, botch           # jump if error
        REG_L   ra, SC_PC(a0)
@@ -169,9 +169,9 @@ LEAF(longjmp, FRAMESZ)
        REG_L   s8, SC_REGS+S8*REGSZ(a0)
        REG_L   gp, SC_REGS+GP*REGSZ(a0)
        REG_L   sp, SC_REGS+SP*REGSZ(a0)
-       
+
 #if !defined(SOFTFLOAT)
-       REG_L   v0, SC_FPREGS+((FSR-F0)*REGSZ)(a0)      
+       REG_L   v0, SC_FPREGS+((FSR-F0)*REGSZ)(a0)
        ctc1    v0, $31
 #if _MIPS_FPSET == 32
         FPREG64_L($f20, SC_FPREGS+((F20-F0)*REGSZ_FP), a0)
index b05454c..9d2e5ea 100644 (file)
@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 #include <machine/regnum.h>
 #include <machine/setjmp.h>
 
index 08aa705..c4fd009 100644 (file)
@@ -26,8 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
-#include <asm/unistd.h>
+#include <private/bionic_asm.h>
 
 #if (_MIPS_SIM == _ABIO32) || (_MIPS_SIM == _ABI32)
 FRAMESZ                =       MKFSIZ(6,0)
index c936945..911a264 100644 (file)
@@ -26,8 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
-#include <asm/unistd.h>
+#include <private/bionic_asm.h>
 #include <linux/sched.h>
 
 // TODO: mips' uapi signal.h is missing #ifndef __ASSEMBLY__.
@@ -46,7 +45,7 @@ LEAF(vfork,FRAMESZ)
 #if FRAMESZ!=0
        PTR_SUBU sp, FRAMESZ
 #endif
-       SETUP_GP64(a5,vfork)
+       SETUP_GP64(a5, vfork)
        LI      a0, (CLONE_VM | CLONE_VFORK | SIGCHLD)
        move    a1, $0
        move    a2, $0
index eabb1bf..5eacde3 100644 (file)
 #ifndef _MIPS64_ASM_H
 #define _MIPS64_ASM_H
 
-#include <machine/regdef.h>
-
-#ifdef NEED_OLD_RM7KFIX
-#define ITLBNOPFIX      nop;nop;nop;nop;nop;nop;nop;nop;nop;nop;
-#else
-#define ITLBNOPFIX      nop;nop;nop;nop
+#ifndef _ALIGN_TEXT
+# define _ALIGN_TEXT .align 4
 #endif
 
+#undef __bionic_asm_custom_entry
+#undef __bionic_asm_custom_end
+#define __bionic_asm_custom_entry(f) .ent f
+#define __bionic_asm_custom_end(f) .end f
+
+#include <machine/regdef.h>
+
 #define        _MIPS_ISA_MIPS1 1       /* R2000/R3000 */
 #define        _MIPS_ISA_MIPS2 2       /* R4000/R6000 */
 #define        _MIPS_ISA_MIPS3 3       /* R4000 */
 #define        _MIPS_ISA_MIPS4 4       /* TFP (R1x000) */
-#ifdef __linux__
 #define        _MIPS_ISA_MIPS5 5
 #define        _MIPS_ISA_MIPS32 6
 #define        _MIPS_ISA_MIPS64 7
-#else
-#define        _MIPS_ISA_MIPS32 32     /* MIPS32 */
-#endif
 
 #if !defined(ABICALLS) && !defined(_NO_ABICALLS)
 #define        ABICALLS        .abicalls
@@ -56,8 +55,6 @@
        ABICALLS
 #endif
 
-#define _C_LABEL(x) x          /* XXX Obsolete but keep for a while */
-
 #if !defined(__MIPSEL__) && !defined(__MIPSEB__)
 #error "__MIPSEL__ or __MIPSEB__ must be defined"
 #endif
  */
 #if defined(ABICALLS) && !defined(_KERNEL) && !defined(_STANDALONE)
 
-#ifndef _MIPS_SIM
-#define _MIPS_SIM 1
-#define _ABIO32        1
-#endif
-#ifndef _MIPS_ISA
-#define _MIPS_ISA 2
-#define _MIPS_ISA_MIPS2 2
-#endif
-
 #if (_MIPS_SIM == _ABIO32) || (_MIPS_SIM == _ABI32)
 #define NARGSAVE       4
 
 #endif
 
 /*
- * Define -pg profile entry code.
- */
-#if defined(XGPROF) || defined(XPROF)
-#define        MCOUNT                  \
-       PTR_SUBU sp, sp, 64;    \
-       SAVE_GP(16);            \
-       sd      ra, 56(sp);     \
-       sd      gp, 48(sp);     \
-       .set    noat;           \
-       .set    noreorder;      \
-       move    AT, ra;         \
-       jal     _mcount;        \
-       PTR_SUBU sp, sp, 16;    \
-       ld      ra, 56(sp);     \
-       PTR_ADDU sp, sp, 64;    \
-       .set reorder;           \
-       .set    at;
-#else
-#define        MCOUNT
-#endif
-
-/*
  * LEAF(x, fsize)
  *
  *     Declare a leaf routine.
        .globl x;               \
        .ent x, 0;              \
 x: ;                           \
+       .cfi_startproc; \
        .frame sp, fsize, ra;   \
        SETUP_GP                \
-       MCOUNT
-
-#define        ALEAF(x)                \
-       .globl  x;              \
-x:
-
-/*
- * NLEAF(x)
- *
- *     Declare a non-profiled leaf routine.
- */
-#define NLEAF(x, fsize)                \
-       .align  3;              \
-       .globl x;               \
-       .ent x, 0;              \
-x: ;                           \
-       .frame sp, fsize, ra;   \
-       SETUP_GP
 
 /*
  * NON_LEAF(x)
@@ -252,54 +201,8 @@ x: ;                               \
        .globl x;               \
        .ent x, 0;              \
 x: ;                           \
+       .cfi_startproc; \
        .frame sp, fsize, retpc; \
        SETUP_GP                \
-       MCOUNT
-
-/*
- * NNON_LEAF(x)
- *
- *     Declare a non-profiled non-leaf routine
- *     (a routine that makes other C calls).
- */
-#define NNON_LEAF(x, fsize, retpc) \
-       .align  3;              \
-       .globl x;               \
-       .ent x, 0;              \
-x: ;                           \
-       .frame sp, fsize, retpc \
-       SETUP_GP
-
-/*
- * END(x)
- *
- *     Mark end of a procedure.
- */
-#define END(x) \
-       .end x
-
-/*
- * Macros to panic and printf from assembly language.
- */
-#define PANIC(msg) \
-       LA      a0, 9f; \
-       jal     panic;  \
-       nop     ;       \
-       MSG(msg)
-
-#define        PRINTF(msg) \
-       LA      a0, 9f; \
-       jal     printf; \
-       nop     ;       \
-       MSG(msg)
-
-#define        MSG(msg) \
-       .rdata; \
-9:     .asciiz msg; \
-       .text
-
-#define ASMSTR(str) \
-       .asciiz str; \
-       .align  3
 
 #endif /* !_MIPS_ASM_H */
index f02ec0d..b31715c 100644 (file)
@@ -37,8 +37,6 @@
 #ifndef _MIPS_SIGNAL_H_
 #define _MIPS_SIGNAL_H_
 
-#include <machine/asm.h>
-
 #define        SC_REGMASK      (0*REGSZ)
 #define        SC_STATUS       (1*REGSZ)
 #define        SC_PC           (2*REGSZ)
index aabdfcf..dc91096 100644 (file)
  *  Include files
  ************************************************************************/
 
-#include "machine/asm.h"
+#include <private/bionic_asm.h>
 
 
-/* 
+/*
  * This routine could be optimized for MIPS64. The current code only
  * uses MIPS32 instructions.
- */    
+ */
 #if defined(__MIPSEB__)
 #  define LWHI lwl             /* high part is left in big-endian      */
 #  define SWHI swl             /* high part is left in big-endian      */
index a1c5055..3e630ca 100644 (file)
  *  Include files
  ************************************************************************/
 
-#include "machine/asm.h"
+#include <private/bionic_asm.h>
 
-/* 
+/*
  * This routine could be optimized for MIPS64. The current code only
  * uses MIPS32 instructions.
- */    
+ */
 
 #if defined(__MIPSEB__)
 #  define SWHI swl             /* high part is left in big-endian      */
@@ -220,7 +220,7 @@ LEAF(memset,0)
        sw      a1,-36(a0)
        nop
        nop                     # the extra nop instructions help to balance
-       nop                     # cycles needed for "store" + "fill" + "evict" 
+       nop                     # cycles needed for "store" + "fill" + "evict"
        nop                     # For 64byte store there are needed 8 fill
        nop                     # and 8 evict cycles, i.e. at least 32 instr.
        nop
@@ -320,4 +320,3 @@ END(memset)
 /************************************************************************
  *  Implementation : Static functions
  ************************************************************************/
-
index 3823ecc..e6ddaaa 100644 (file)
@@ -1,5 +1,4 @@
-#include <asm/unistd.h>
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 // pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg);
 ENTRY(__bionic_clone)
index 0739d79..31ec6bc 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 ENTRY(__get_sp)
   mov  %esp, %eax
index 9221138..0b256a2 100644 (file)
@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 /*
  * C library -- _setjmp, _longjmp
index e149d42..5b94311 100644 (file)
@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 /*
  * C library -- setjmp, longjmp
index 69494b4..7ef732e 100644 (file)
@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 ENTRY(sigsetjmp)
        movl    4(%esp),%ecx
index 5ccf78f..913e6c8 100644 (file)
 #ifndef _I386_ASM_H_
 #define _I386_ASM_H_
 
-#ifdef _KERNEL_OPT
-#include "opt_multiprocessor.h"
-#endif
-
 #ifdef PIC
 #define PIC_PROLOGUE   \
        pushl   %ebx;   \
 #define PIC_GOTOFF(x)  x
 #endif
 
-#ifdef __ELF__
-# define _C_LABEL(x)   x
-#else
-# ifdef __STDC__
-#  define _C_LABEL(x)  _ ## x
-# else
-#  define _C_LABEL(x)  _/**/x
-# endif
-#endif
-#define        _ASM_LABEL(x)   x
-
-#define CVAROFF(x, y)          _C_LABEL(x) + y
-
-#ifdef __STDC__
-# define __CONCAT(x,y) x ## y
-# define __STRING(x)   #x
-#else
-# define __CONCAT(x,y) x/**/y
-# define __STRING(x)   "x"
-#endif
-
 /* let kernels and others override entrypoint alignment */
 #if !defined(_ALIGN_TEXT) && !defined(_KERNEL)
 # ifdef _STANDALONE
 # endif
 #endif
 
-#define _ENTRY(x) \
-       .text; _ALIGN_TEXT; .globl x; .type x,@function; x: .cfi_startproc;
-#define _LABEL(x) \
-       .globl x; x:
-
-#ifdef _KERNEL
-
-#define CPUVAR(off) %fs:__CONCAT(CPU_INFO_,off)
-
-/* XXX Can't use __CONCAT() here, as it would be evaluated incorrectly. */
-#ifdef __ELF__
-#ifdef __STDC__
-#define        IDTVEC(name) \
-       ALIGN_TEXT; .globl X ## name; .type X ## name,@function; X ## name:
-#define        IDTVEC_END(name) \
-       .size X ## name, . - X ## name
-#else 
-#define        IDTVEC(name) \
-       ALIGN_TEXT; .globl X/**/name; .type X/**/name,@function; X/**/name:
-#define        IDTVEC_END(name) \
-       .size X/**/name, . - X/**/name
-#endif /* __STDC__ */ 
-#else 
-#ifdef __STDC__
-#define        IDTVEC(name) \
-       ALIGN_TEXT; .globl _X ## name; .type _X ## name,@function; _X ## name: 
-#define        IDTVEC_END(name) \
-       .size _X ## name, . - _X ## name
-#else
-#define        IDTVEC(name) \
-       ALIGN_TEXT; .globl _X/**/name; .type _X/**/name,@function; _X/**/name:
-#define        IDTVEC_END(name) \
-       .size _X/**/name, . - _X/**/name
-#endif /* __STDC__ */
-#endif /* __ELF__ */
-
-#ifdef _STANDALONE
-#define ALIGN_DATA     .align  4
-#define ALIGN_TEXT     .align  4       /* 4-byte boundaries */
-#define SUPERALIGN_TEXT        .align  16      /* 15-byte boundaries */
-#elif defined __ELF__
-#define ALIGN_DATA     .align  4
-#define ALIGN_TEXT     .align  16      /* 16-byte boundaries */
-#define SUPERALIGN_TEXT        .align  16      /* 16-byte boundaries */
-#else
-#define ALIGN_DATA     .align  2
-#define ALIGN_TEXT     .align  4       /* 16-byte boundaries */
-#define SUPERALIGN_TEXT        .align  4       /* 16-byte boundaries */
-#endif /* __ELF__ */
-
-#define _ALIGN_TEXT ALIGN_TEXT
-
-#ifdef GPROF
-#ifdef __ELF__
-#define        MCOUNT_ASM      call    _C_LABEL(__mcount)
-#else /* __ELF__ */
-#define        MCOUNT_ASM      call    _C_LABEL(mcount)
-#endif /* __ELF__ */
-#else /* GPROF */
-#define        MCOUNT_ASM      /* nothing */
-#endif /* GPROF */
-
-#endif /* _KERNEL */
-
-
-
-#ifdef GPROF
-# ifdef __ELF__
-#  define _PROF_PROLOGUE       \
-       pushl %ebp; movl %esp,%ebp; call PIC_PLT(__mcount); popl %ebp
-# else 
-#  define _PROF_PROLOGUE       \
-       pushl %ebp; movl %esp,%ebp; call PIC_PLT(mcount); popl %ebp
-# endif
-#else
-# define _PROF_PROLOGUE
-#endif
-
-#define        ENTRY(y)        _ENTRY(_C_LABEL(y)); _PROF_PROLOGUE
-#define        NENTRY(y)       _ENTRY(_C_LABEL(y))
-#define        ASENTRY(y)      _ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE
-#define        LABEL(y)        _LABEL(_C_LABEL(y))
-#define        END(y)          .cfi_endproc; .size y, . - y
-
-#define        ASMSTR          .asciz
-
-#ifdef __ELF__
-#define RCSID(x)       .pushsection ".ident"; .asciz x; .popsection
-#else
-#define RCSID(x)       .text; .asciz x
-#endif
-
-#ifdef NO_KERNEL_RCSIDS
-#define        __KERNEL_RCSID(_n, _s)  /* nothing */
-#else
-#define        __KERNEL_RCSID(_n, _s)  RCSID(_s)
-#endif
-
-#ifdef __ELF__
-#define        WEAK_ALIAS(alias,sym)                                           \
-       .weak alias;                                                    \
-       alias = sym
-#endif
-/*
- * STRONG_ALIAS: create a strong alias.
- */
-#define STRONG_ALIAS(alias,sym)                                                \
-       .globl alias;                                                   \
-       alias = sym
-
-#ifdef __STDC__
-#define        WARN_REFERENCES(sym,msg)                                        \
-       .pushsection .gnu.warning. ## sym;                              \
-       .ascii msg;                                                     \
-       .popsection
-#else
-#define        WARN_REFERENCES(sym,msg)                                        \
-       .pushsection .gnu.warning./**/sym;                              \
-       .ascii msg;                                                     \
-       .popsection
-#endif /* __STDC__ */
-
 #endif /* !_I386_ASM_H_ */
index 40df1d0..f425c58 100644 (file)
@@ -31,7 +31,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
        /*
         * (ov)bcopy (src,dst,cnt)
index 3b50530..ef36b4f 100644 (file)
@@ -4,7 +4,7 @@
  * Public domain.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 ENTRY(memcmp)
        pushl   %edi
index c75f38a..49e8eee 100644 (file)
@@ -4,7 +4,7 @@
  * Public domain.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 #if defined(APIWARN)
 #APP
index 5d3f4fc..580f4d5 100644 (file)
@@ -4,7 +4,7 @@
  * Public domain.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 /*
  * NOTE: I've unrolled the loop eight times: large enough to make a
index 6649473..9ba83a1 100644 (file)
@@ -4,7 +4,7 @@
  * Public domain.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 /*
  * NOTE: I've unrolled the loop eight times: large enough to make a
index 2f6cfb2..b44d134 100644 (file)
@@ -4,7 +4,7 @@
  * Public domain.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 /*
  * On the i486, this code is negligibly faster than the code generated
index 7692013..cf98d76 100644 (file)
@@ -26,8 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#include <asm/unistd.h>
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 // pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg);
 ENTRY(__bionic_clone)
index 0c693b3..9cc18a9 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 ENTRY(__get_sp)
   mov  %rsp, %rax
index e03bb88..eddceb1 100644 (file)
  * SUCH DAMAGE.
  */
 
-#include <asm/unistd.h>
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
-ENTRY(__rt_sigreturn)
-  .hidden _C_LABEL(__rt_sigreturn) // TODO: add an ENTRY_PRIVATE macro for x86_64.
+ENTRY_PRIVATE(__rt_sigreturn)
   movl $__NR_rt_sigreturn, %eax
   syscall
 END(__rt_sigreturn)
index e9b8dbb..c617030 100644 (file)
@@ -36,8 +36,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 #include <machine/setjmp.h>
 
 /*
index 3f4a432..c81b573 100644 (file)
@@ -36,8 +36,7 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 #include <machine/setjmp.h>
 
 /*
index 174222f..718743f 100644 (file)
@@ -37,7 +37,7 @@
  */
 
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 #include <machine/setjmp.h>
 
 /*
index 310b230..0af6dae 100644 (file)
@@ -37,8 +37,6 @@
 #ifndef _AMD64_ASM_H_
 #define _AMD64_ASM_H_
 
-#ifdef __x86_64__
-
 #ifdef __PIC__
 #define PIC_PLT(x)     x@PLT
 #define PIC_GOT(x)     x@GOTPCREL(%rip)
 #define PIC_GOT(x)     x
 #endif
 
-# define _C_LABEL(x)   x
-#define        _ASM_LABEL(x)   x
-
-#define CVAROFF(x,y)           (_C_LABEL(x)+y)(%rip)
-
-#ifdef __STDC__
-# define __CONCAT(x,y) x ## y
-# define __STRING(x)   #x
-#else
-# define __CONCAT(x,y) x/**/y
-# define __STRING(x)   "x"
-#endif
-
 /* let kernels and others override entrypoint alignment */
 #ifndef _ALIGN_TEXT
 # ifdef _STANDALONE
 # endif
 #endif
 
-#define _ENTRY(x) \
-       .text; _ALIGN_TEXT; .globl x; .type x,@function; x: .cfi_startproc;
-#define _LABEL(x) \
-       .globl x; x:
-
-#ifdef _KERNEL
-/* XXX Can't use __CONCAT() here, as it would be evaluated incorrectly. */
-#ifdef __STDC__
-#define        IDTVEC(name) \
-       ALIGN_TEXT; .globl X ## name; .type X ## name,@function; X ## name:
-#define        IDTVEC_END(name) \
-       .size X ## name, . - X ## name
-#else 
-#define        IDTVEC(name) \
-       ALIGN_TEXT; .globl X/**/name; .type X/**/name,@function; X/**/name:
-#define        IDTVEC_END(name) \
-       .size X/**/name, . - X/**/name
-#endif /* __STDC__ */ 
-#endif /* _KERNEL */
-
-#ifdef __STDC__
-#define CPUVAR(off)    %gs:CPU_INFO_ ## off
-#else
-#define CPUVAR(off)     %gs:CPU_INFO_/**/off
-#endif
-
-
-#ifdef GPROF
-# define _PROF_PROLOGUE        \
-       pushq %rbp; leaq (%rsp),%rbp; call PIC_PLT(__mcount); popq %rbp
-#else
-# define _PROF_PROLOGUE
-#endif
-
-#define        ENTRY(y)        _ENTRY(_C_LABEL(y)); _PROF_PROLOGUE
-#define        NENTRY(y)       _ENTRY(_C_LABEL(y))
-#define        ALTENTRY(x)     NENTRY(x)
-#define        ASENTRY(y)      _ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE
-#define        LABEL(y)        _LABEL(_C_LABEL(y))
-#define        END(y)          .cfi_endproc; .size y, . - y
-
-#define        ASMSTR          .asciz
-
-#define RCSID(x)       .pushsection ".ident"; .asciz x; .popsection
-
-#define        WEAK_ALIAS(alias,sym)                                           \
-       .weak alias;                                                    \
-       alias = sym
-
-/*
- * STRONG_ALIAS: create a strong alias.
- */
-#define STRONG_ALIAS(alias,sym)                                                \
-       .globl alias;                                                   \
-       alias = sym
-
-#ifdef __STDC__
-#define        WARN_REFERENCES(sym,msg)                                        \
-       .pushsection .gnu.warning. ## sym;                              \
-       .ascii msg;                                                     \
-       .popsection
-#else
-#define        WARN_REFERENCES(sym,msg)                                        \
-       .pushsection .gnu.warning./**/sym;                              \
-       .ascii msg;                                                     \
-       .popsection
-#endif /* __STDC__ */
-
-#else  /*      __x86_64__      */
-
-#include <i386/asm.h>
-
-#endif /*      __x86_64__      */
-
 #endif /* !_AMD64_ASM_H_ */
index be22b75..7c2686f 100644 (file)
 #ifndef _PRIVATE_BIONIC_ASM_H_
 #define _PRIVATE_BIONIC_ASM_H_
 
-#include <machine/asm.h>
-
 #include <asm/unistd.h> /* For system call numbers. */
 #define MAX_ERRNO 4095  /* For recognizing system call error returns. */
 
-#if __mips__
-/* mips/mips64 don't have ENTRY like the others. */
-#define ENTRY(f) .text; .globl f; .align 4; .type f, @function; .ent f; f: .cfi_startproc
-/* mips/mips64 do have END, but we want a better one, more like the others. */
-#undef END
-#define END(f) .cfi_endproc; .size f, .-f; .end f
-#endif
+#define __bionic_asm_custom_entry(f)
+#define __bionic_asm_custom_end(f)
+#define __bionic_asm_function_type @function
+
+#include <machine/asm.h>
+
+#define ENTRY(f) \
+    .text; \
+    .globl f; \
+    _ALIGN_TEXT; \
+    .type f, __bionic_asm_function_type; \
+    f: \
+    __bionic_asm_custom_entry(f); \
+    .cfi_startproc \
+
+#define END(f) \
+    .cfi_endproc; \
+    .size f, .-f; \
+    __bionic_asm_custom_end(f) \
 
-/* TODO: add ENTRY_PRIVATE. */
-/* TODO: add ASM_ALIAS macro. */
+/* Like ENTRY, but with hidden visibility. */
+#define ENTRY_PRIVATE(f) \
+    ENTRY(f); \
+    .hidden f \
 
 #endif /* _PRIVATE_BIONIC_ASM_H_ */
index 55618b7..c96ede7 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 ENTRY(_start)
   mov x0, sp
index 9a85925..9e741c0 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 #if (_MIPS_SIM == _ABIO32) || (_MIPS_SIM == _ABI32)
 #define ELF_DYNSZ       8
index 9ecad1a..aff4660 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  */
 
-#include <machine/asm.h>
+#include <private/bionic_asm.h>
 
 ENTRY(_start)
   /* Pass elfdata to __linker_init. */