OSDN Git Service

Use ENTRY/END in custom x86 assembler too.
authorElliott Hughes <enh@google.com>
Tue, 12 Feb 2013 01:08:16 +0000 (17:08 -0800)
committerElliott Hughes <enh@google.com>
Tue, 12 Feb 2013 01:08:16 +0000 (17:08 -0800)
Change-Id: Ic2e482e5daff29c65d3b2ab0b2111c996bbc6226

libc/arch-x86/bionic/__get_sp.S
libc/arch-x86/bionic/_exit_with_stack_teardown.S
libc/arch-x86/bionic/clone.S
libc/arch-x86/bionic/futex_x86.S
libc/arch-x86/bionic/syscall.S
libc/arch-x86/bionic/vfork.S

index aeaaa66..0739d79 100644 (file)
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-    .text
-    .type __get_sp, @function
-    .global __get_sp
-    .align 4
 
-__get_sp:
-    mov  %esp, %eax
-    ret
+#include <machine/asm.h>
+
+ENTRY(__get_sp)
+  mov  %esp, %eax
+  ret
+END(__get_sp)
index 83a504d..e2bb6ad 100644 (file)
@@ -1,15 +1,8 @@
+#include <machine/asm.h>
 #include <sys/linux-syscalls.h>
 
-.text
-.type _exit_with_stack_teardown, @function
-.globl _exit_with_stack_teardown
-.align 4
-
-/*
- * void _exit_with_stack_teardown(void *stackBase, int stackSize, int *retCode) 
- */
-
-_exit_with_stack_teardown:
+// void _exit_with_stack_teardown(void *stackBase, int stackSize, int *retCode)
+ENTRY(_exit_with_stack_teardown)
     /* we can trash %ebx here since this call should never return. */
     /* We can also take advantage of the fact that the linux syscall trap
      * handler saves all the registers, so we don't need a stack to keep
@@ -32,3 +25,4 @@ _exit_with_stack_teardown:
      * that presently, 'hlt' will cause the program to segfault.. but this
      * should never happen :) */
     hlt
+END(_exit_with_stack_teardown)
index 9266f84..6f84724 100644 (file)
@@ -1,12 +1,8 @@
+#include <machine/asm.h>
 #include <sys/linux-syscalls.h>
 
-.text
-
 // int  __pthread_clone(int (*fn)(void*), void* tls, int flags, void* arg);
-.globl __pthread_clone
-.type __pthread_clone, @function
-.align 4
-__pthread_clone:
+ENTRY(__pthread_clone)
         pushl   %ebx
         pushl   %ecx
         movl    16(%esp), %ecx
@@ -49,6 +45,7 @@ __pthread_clone:
         popl    %ecx
         popl    %ebx
         ret
+END(__pthread_clone)
 
 
 /*
@@ -60,11 +57,7 @@ __pthread_clone:
  *                     int           (*fn)(void *),
  *                     void          *arg);
  */
-.text
-.globl __bionic_clone
-.type __bionic_clone, @function
-.align 4
-__bionic_clone:
+ENTRY(__bionic_clone)
         pushl   %ebx
         pushl   %esi
         pushl   %edi
@@ -107,3 +100,4 @@ __bionic_clone:
         popl    %esi
         popl    %ebx
         ret
+END(__bionic_clone)
index e98a391..096f72c 100644 (file)
@@ -1,17 +1,11 @@
+#include <machine/asm.h>
 #include <sys/linux-syscalls.h>
 
 #define FUTEX_WAIT 0
 #define FUTEX_WAKE 1
 
-
-/*
- * int __futex_wait(volatile void *ftx, int val, const struct timespec *timeout)
- */
-.text
-.globl __futex_wait
-.type __futex_wait, @function
-.align 4
-__futex_wait:
+// int __futex_wait(volatile void *ftx, int val, const struct timespec *timeout)
+ENTRY(__futex_wait)
     pushl   %ebx
     pushl   %esi
     mov     12(%esp), %ebx           /* ftx */
@@ -23,15 +17,11 @@ __futex_wait:
     popl    %esi
     popl    %ebx
     ret
+END(__futex_wait)
 
 
-/* int __futex_wake(volatile void *ftx, int count) */
-
-.text
-.globl __futex_wake
-.type __futex_wake, @function
-.align 4
-__futex_wake:
+// int __futex_wake(volatile void *ftx, int count)
+ENTRY(__futex_wake)
     pushl   %ebx
     mov     8(%esp), %ebx            /* ftx */
     movl    $FUTEX_WAKE, %ecx
@@ -40,13 +30,10 @@ __futex_wake:
     int     $0x80
     popl    %ebx
     ret
+END(__futex_wake)
 
-/* int __futex_syscall3(volatile void *ftx, int op, int count) */
-.text
-.globl __futex_syscall3
-.type __futex_syscall3, @function
-.align 4
-__futex_syscall3:
+// int __futex_syscall3(volatile void *ftx, int op, int count)
+ENTRY(__futex_syscall3)
     pushl   %ebx
     movl    8(%esp), %ebx      /* ftx */
     movl    12(%esp), %ecx      /* op */
@@ -55,13 +42,10 @@ __futex_syscall3:
     int     $0x80
     popl    %ebx
     ret
+END(__futex_syscall3)
 
-/* int __futex_syscall4(volatile void *ftx, int op, int val, const struct timespec *timeout) */
-.text
-.globl __futex_syscall4
-.type __futex_syscall4, @function
-.align 4
-__futex_syscall4:
+// int __futex_syscall4(volatile void *ftx, int op, int val, const struct timespec *timeout)
+ENTRY(__futex_syscall4)
     pushl   %ebx
     pushl   %esi
     movl    12(%esp), %ebx      /* ftx */
@@ -73,3 +57,4 @@ __futex_syscall4:
     popl    %esi
     popl    %ebx
     ret
+END(__futex_syscall4)
index 49d6f8d..ef816b6 100644 (file)
  *     %ebp: arg5                -   callee save
  */
 
+#include <machine/asm.h>
 #include <sys/linux-syscalls.h>
 
-    .text
-    .type syscall, @function
-    .globl syscall
-    .align 4
-
-syscall:
+ENTRY(syscall)
     # Push the callee save registers.
     push    %ebx
     push    %esi
@@ -53,3 +49,4 @@ syscall:
     pop    %esi
     pop    %ebx
     ret
+END(syscall)
index 53910ab..235be0c 100644 (file)
@@ -1,3 +1,4 @@
+#include <machine/asm.h>
 #include <sys/linux-syscalls.h>
 
 #ifndef __NR_vfork
@@ -5,17 +6,12 @@
 #endif
 
 
-    .text
-    .type vfork, @function
-    .globl vfork
-    .align 4
-
 /* Get rid of the stack modifications (popl/ret) after vfork() success.
  * vfork is VERY sneaky. One has to be very careful about what can be done
  * between a successful vfork and a a subsequent execve()
  */
 
-vfork:
+ENTRY(vfork)
     /* grab the return address */
     popl    %ecx
     movl    $__NR_vfork, %eax
@@ -28,3 +24,4 @@ vfork:
     orl     $-1, %eax
 1:
     jmp     *%ecx
+END(vfork)