diff options
author | Anthony Green <green@moxielogic.com> | 2013-02-08 12:25:18 -0500 |
---|---|---|
committer | Anthony Green <green@moxielogic.com> | 2013-02-08 12:25:18 -0500 |
commit | cb03ea8f4eb08024e44abe4392edc77b89fbfbad (patch) | |
tree | fab68bb2739c7dd350010c0a6c4e6aecbfaa1f79 /src/sparc | |
parent | 35ee8d44f31dd3d3b88083c837dc351593e13cc2 (diff) | |
download | libffi-cb03ea8f4eb08024e44abe4392edc77b89fbfbad.tar.gz |
sparc v9 fixes for sun tools
Diffstat (limited to 'src/sparc')
-rw-r--r-- | src/sparc/ffi.c | 5 | ||||
-rw-r--r-- | src/sparc/v8.S | 4 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/sparc/ffi.c b/src/sparc/ffi.c index 7c384ef..564be13 100644 --- a/src/sparc/ffi.c +++ b/src/sparc/ffi.c @@ -521,16 +521,15 @@ ffi_prep_closure_loc (ffi_closure* closure, closure->user_data = user_data; /* Flush the Icache. closure is 8 bytes aligned. */ +#ifdef __GNUC__ #ifdef SPARC64 asm volatile ("flush %0; flush %0+8" : : "r" (closure) : "memory"); #else -#ifdef __GNUC__ asm volatile ("iflush %0; iflush %0+8" : : "r" (closure) : "memory"); /* SPARC v8 requires 5 instructions for flush to be visible */ asm volatile ("nop; nop; nop; nop; nop"); -#else - ffi_flush_icache (closure, 16); #endif + ffi_flush_icache (closure, 16); #endif return FFI_OK; diff --git a/src/sparc/v8.S b/src/sparc/v8.S index 4faf3bd..ba3cdac 100644 --- a/src/sparc/v8.S +++ b/src/sparc/v8.S @@ -41,7 +41,11 @@ ffi_flush_icache: _ffi_flush_icache: add %o0, %o1, %o2 +#ifdef SPARC64 +1: flush %o0 +#else 1: iflush %o0 +#endif add %o0, 8, %o0 cmp %o0, %o2 blt 1b |