Commit 8b9cf39e by Alexandre Oliva Committed by Alexandre Oliva

ffi.c (flush_icache): Fix left-over from previous patch.

* src/powerpc/ffi.c (flush_icache): Fix left-over from previous
patch.
(ffi_prep_closure_loc): Remove unneeded casts.  Add needed ones.

From-SVN: r122692
parent 068c623d
2007-03-08 Alexandre Oliva <aoliva@redhat.com>
* src/powerpc/ffi.c (flush_icache): Fix left-over from previous
patch.
(ffi_prep_closure_loc): Remove unneeded casts. Add needed ones.
2007-03-07 Alexandre Oliva <aoliva@redhat.com> 2007-03-07 Alexandre Oliva <aoliva@redhat.com>
* include/ffi.h.in (ffi_closure_alloc, ffi_closure_free): New. * include/ffi.h.in (ffi_closure_alloc, ffi_closure_free): New.
......
...@@ -839,11 +839,8 @@ flush_icache (char *wraddr, char *xaddr, int size) ...@@ -839,11 +839,8 @@ flush_icache (char *wraddr, char *xaddr, int size)
{ {
int i; int i;
for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE) for (i = 0; i < size; i += MIN_CACHE_LINE_SIZE)
{ __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;"
addr = addr1 + i; : : "r" (xaddr + i), "r" (wraddr + i) : "memory");
__asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;"
: : "r" (xaddr + i), "r" (wraddr + i) : "memory");
}
__asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;" __asm__ volatile ("icbi 0,%0;" "dcbf 0,%1;" "sync;" "isync;"
: : "r"(xaddr + size - 1), "r"(wraddr + size - 1) : : "r"(xaddr + size - 1), "r"(wraddr + size - 1)
: "memory"); : "memory");
...@@ -863,7 +860,7 @@ ffi_prep_closure_loc (ffi_closure *closure, ...@@ -863,7 +860,7 @@ ffi_prep_closure_loc (ffi_closure *closure,
FFI_ASSERT (cif->abi == FFI_LINUX64); FFI_ASSERT (cif->abi == FFI_LINUX64);
/* Copy function address and TOC from ffi_closure_LINUX64. */ /* Copy function address and TOC from ffi_closure_LINUX64. */
memcpy (tramp, (char *) ffi_closure_LINUX64, 16); memcpy (tramp, (char *) ffi_closure_LINUX64, 16);
tramp[2] = (void *) codeloc; tramp[2] = codeloc;
#else #else
unsigned int *tramp; unsigned int *tramp;
...@@ -879,10 +876,10 @@ ffi_prep_closure_loc (ffi_closure *closure, ...@@ -879,10 +876,10 @@ ffi_prep_closure_loc (ffi_closure *closure,
tramp[8] = 0x7c0903a6; /* mtctr r0 */ tramp[8] = 0x7c0903a6; /* mtctr r0 */
tramp[9] = 0x4e800420; /* bctr */ tramp[9] = 0x4e800420; /* bctr */
*(void **) &tramp[2] = (void *) ffi_closure_SYSV; /* function */ *(void **) &tramp[2] = (void *) ffi_closure_SYSV; /* function */
*(void **) &tramp[3] = (void *) codeloc; /* context */ *(void **) &tramp[3] = codeloc; /* context */
/* Flush the icache. */ /* Flush the icache. */
flush_icache (tramp, codeloc, FFI_TRAMPOLINE_SIZE); flush_icache ((char *)tramp, (char *)codeloc, FFI_TRAMPOLINE_SIZE);
#endif #endif
closure->cif = cif; closure->cif = cif;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment