OSDN Git Service

MIPS: 32/64-bit VDSO support
authorGoran Ferenc <goran.ferenc@imgtec.com>
Tue, 30 May 2017 14:00:41 +0000 (16:00 +0200)
committerElliott Hughes <enh@google.com>
Thu, 1 Jun 2017 15:50:57 +0000 (08:50 -0700)
File libc/SYSCALLS.TXT is updated to generate bionic's system call wrappers
for clock_gettime() & gettimeofday() that will be called if kernel vdso
implementations fail to execute.
The system call wrappers are generated using a python script gensyscalls.py.

Since all architectures support vdso now, there is no more need for conditional
statements regarding supported architectures in libc/bionic/vdso.cpp &
libc/private/bionic_vdso.h files.

Test: builds
Change-Id: I7213f29c179a7929851499d78a72900638ae861a
Signed-off-by: Goran Ferenc <goran.ferenc@imgtec.com>
libc/SYSCALLS.TXT
libc/arch-mips/syscalls/__clock_gettime.S [moved from libc/arch-mips/syscalls/clock_gettime.S with 86% similarity]
libc/arch-mips/syscalls/__gettimeofday.S [moved from libc/arch-mips/syscalls/gettimeofday.S with 86% similarity]
libc/arch-mips64/syscalls/__clock_gettime.S [moved from libc/arch-mips64/syscalls/clock_gettime.S with 84% similarity]
libc/arch-mips64/syscalls/__gettimeofday.S [moved from libc/arch-mips64/syscalls/gettimeofday.S with 84% similarity]
libc/bionic/vdso.cpp
libc/private/bionic_vdso.h

index 936f3fd..5ff3c64 100644 (file)
@@ -350,7 +350,5 @@ int     __set_tls:set_thread_area(void*) mips,mips64
 int     __set_thread_area:set_thread_area(void*) x86
 
 # vdso stuff.
-int clock_gettime(clockid_t, timespec*)                 mips,mips64
-int __clock_gettime:clock_gettime(clockid_t, timespec*) arm,arm64,x86,x86_64
-int gettimeofday(timeval*, timezone*)                   mips,mips64
-int __gettimeofday:gettimeofday(timeval*, timezone*)    arm,arm64,x86,x86_64
+int __clock_gettime:clock_gettime(clockid_t, timespec*) all
+int __gettimeofday:gettimeofday(timeval*, timezone*) all
similarity index 86%
rename from libc/arch-mips/syscalls/clock_gettime.S
rename to libc/arch-mips/syscalls/__clock_gettime.S
index d227a06..6fad7e9 100644 (file)
@@ -2,7 +2,7 @@
 
 #include <private/bionic_asm.h>
 
-ENTRY(clock_gettime)
+ENTRY(__clock_gettime)
     .set noreorder
     .cpload t9
     li v0, __NR_clock_gettime
@@ -16,4 +16,4 @@ ENTRY(clock_gettime)
     j t9
     nop
     .set reorder
-END(clock_gettime)
+END(__clock_gettime)
similarity index 86%
rename from libc/arch-mips/syscalls/gettimeofday.S
rename to libc/arch-mips/syscalls/__gettimeofday.S
index 672faa3..e8b9d6a 100644 (file)
@@ -2,7 +2,7 @@
 
 #include <private/bionic_asm.h>
 
-ENTRY(gettimeofday)
+ENTRY(__gettimeofday)
     .set noreorder
     .cpload t9
     li v0, __NR_gettimeofday
@@ -16,4 +16,4 @@ ENTRY(gettimeofday)
     j t9
     nop
     .set reorder
-END(gettimeofday)
+END(__gettimeofday)
similarity index 84%
rename from libc/arch-mips64/syscalls/clock_gettime.S
rename to libc/arch-mips64/syscalls/__clock_gettime.S
index 0813560..3407122 100644 (file)
@@ -2,7 +2,7 @@
 
 #include <private/bionic_asm.h>
 
-ENTRY(clock_gettime)
+ENTRY(__clock_gettime)
     .set push
     .set noreorder
     li v0, __NR_clock_gettime
@@ -22,4 +22,5 @@ ENTRY(clock_gettime)
     j t9
     move ra, t0
     .set pop
-END(clock_gettime)
+END(__clock_gettime)
+.hidden __clock_gettime
similarity index 84%
rename from libc/arch-mips64/syscalls/gettimeofday.S
rename to libc/arch-mips64/syscalls/__gettimeofday.S
index 3a6d417..2ac5e9b 100644 (file)
@@ -2,7 +2,7 @@
 
 #include <private/bionic_asm.h>
 
-ENTRY(gettimeofday)
+ENTRY(__gettimeofday)
     .set push
     .set noreorder
     li v0, __NR_gettimeofday
@@ -22,4 +22,5 @@ ENTRY(gettimeofday)
     j t9
     move ra, t0
     .set pop
-END(gettimeofday)
+END(__gettimeofday)
+.hidden __gettimeofday
index f3d95ca..dd4c070 100644 (file)
@@ -17,8 +17,6 @@
 #include "private/bionic_globals.h"
 #include "private/bionic_vdso.h"
 
-#if defined(__aarch64__) || defined(__arm__) || defined(__i386__) || defined(__x86_64__)
-
 #include <limits.h>
 #include <link.h>
 #include <string.h>
@@ -112,10 +110,3 @@ void __libc_init_vdso(libc_globals* globals, KernelArgumentBlock& args) {
     }
   }
 }
-
-#else
-
-void __libc_init_vdso(libc_globals*, KernelArgumentBlock&) {
-}
-
-#endif
index 8fd0743..2d11cd6 100644 (file)
@@ -34,7 +34,7 @@
 #if defined(__aarch64__)
 #define VDSO_CLOCK_GETTIME_SYMBOL "__kernel_clock_gettime"
 #define VDSO_GETTIMEOFDAY_SYMBOL  "__kernel_gettimeofday"
-#elif defined(__arm__) || defined(__i386__) || defined(__x86_64__)
+#else
 #define VDSO_CLOCK_GETTIME_SYMBOL "__vdso_clock_gettime"
 #define VDSO_GETTIMEOFDAY_SYMBOL  "__vdso_gettimeofday"
 #endif