ffi.c: Don't include sys/cachectl.h.
authorDavid Daney <ddaney@avtrex.com>
Thu, 12 Jul 2007 02:19:41 +0000 (02:19 +0000)
committerDavid Daney <daney@gcc.gnu.org>
Thu, 12 Jul 2007 02:19:41 +0000 (02:19 +0000)
* src/mips/ffi.c: Don't include sys/cachectl.h.
(ffi_prep_closure_loc): Use __builtin___clear_cache() instead of
cacheflush().

From-SVN: r126567

libffi/ChangeLog
libffi/src/mips/ffi.c

index 7cb003670a7bdb6b01c73a70b04cc5a797cbd02b..27760849cf0743cada8e2c03c2a4a0290f252e07 100644 (file)
@@ -1,3 +1,9 @@
+2007-07-11  David Daney  <ddaney@avtrex.com>
+
+       * src/mips/ffi.c: Don't include sys/cachectl.h.
+       (ffi_prep_closure_loc): Use __builtin___clear_cache() instead of
+       cacheflush().
+
 2007-05-18  Aurelien Jarno  <aurelien@aurel32.net>
 
        * src/arm/ffi.c (ffi_prep_closure_loc): Renamed and ajusted
index e5446807c09ec930553bddbcb36dc0fa07a1b32f..12b8b62bab98d4a47595e68bf7de886fac050c8e 100644 (file)
@@ -27,7 +27,6 @@
 #include <ffi_common.h>
 
 #include <stdlib.h>
-#include <sys/cachectl.h>
 
 #if _MIPS_SIM == _ABIN32
 #define FIX_ARGP \
@@ -506,6 +505,7 @@ ffi_prep_closure_loc (ffi_closure *closure,
   unsigned int *tramp = (unsigned int *) &closure->tramp[0];
   unsigned int fn;
   unsigned int ctx = (unsigned int) codeloc;
+  char *clear_location = (char *) codeloc;
 
 #if defined(FFI_MIPS_O32)
   FFI_ASSERT(cif->abi == FFI_O32 || cif->abi == FFI_O32_SOFT_FLOAT);
@@ -525,8 +525,7 @@ ffi_prep_closure_loc (ffi_closure *closure,
   closure->fun = fun;
   closure->user_data = user_data;
 
-  /* XXX this is available on Linux, but anything else? */
-  cacheflush (codeloc, FFI_TRAMPOLINE_SIZE, ICACHE);
+  __builtin___clear_cache(clear_location, clear_location + FFI_TRAMPOLINE_SIZE);
 
   return FFI_OK;
 }