diff --git a/include/llvm/Target/TargetJITInfo.h b/include/llvm/Target/TargetJITInfo.h
index dee5a95..26c7d38 100644
--- a/include/llvm/Target/TargetJITInfo.h
+++ b/include/llvm/Target/TargetJITInfo.h
@@ -87,10 +87,6 @@
     /// function.
     virtual void resolveBBRefs(MachineCodeEmitter &MCE) {}
 
-    /// synchronizeICache - On some targets, the JIT emitted code must be
-    /// explicitly refetched to ensure correct execution.
-    virtual void synchronizeICache(const void *Addr, size_t len) {}
-
     /// addBBRef - Add a BasicBlock reference to be resolved after the function
     /// is emitted.
     void addBBRef(MachineBasicBlock *BB, intptr_t PC) {
diff --git a/lib/ExecutionEngine/JIT/JITEmitter.cpp b/lib/ExecutionEngine/JIT/JITEmitter.cpp
index ecde6cf..9cbd00f 100644
--- a/lib/ExecutionEngine/JIT/JITEmitter.cpp
+++ b/lib/ExecutionEngine/JIT/JITEmitter.cpp
@@ -516,6 +516,20 @@
   return TheJITResolver;
 }
 
+#if (defined(__POWERPC__) || defined (__ppc__) || defined(_POWER)) && \
+    defined(__APPLE__)
+extern "C" void sys_icache_invalidate(const void *Addr, size_t len);
+#endif
+
+/// synchronizeICache - On some targets, the JIT emitted code must be
+/// explicitly refetched to ensure correct execution.
+static void synchronizeICache(const void *Addr, size_t len) {
+#if (defined(__POWERPC__) || defined (__ppc__) || defined(_POWER)) && \
+    defined(__APPLE__)
+  sys_icache_invalidate(Addr, Len);
+#endif
+}
+
 /// getFunctionStub - This returns a pointer to a function stub, creating
 /// one on demand as needed.
 void *JITResolver::getFunctionStub(Function *F) {
@@ -543,8 +557,7 @@
   }
 
   // Invalidate the icache if necessary.
-  TheJIT->getJITInfo().
-    synchronizeICache(Stub, MCE.getCurrentPCValue()-(intptr_t)Stub);
+  synchronizeICache(Stub, MCE.getCurrentPCValue()-(intptr_t)Stub);
 
   DEBUG(std::cerr << "JIT: Stub emitted at [" << Stub << "] for function '"
                   << F->getName() << "'\n");
@@ -565,8 +578,7 @@
   Stub = TheJIT->getJITInfo().emitFunctionStub(FnAddr, MCE);
 
   // Invalidate the icache if necessary.
-  TheJIT->getJITInfo().
-    synchronizeICache(Stub, MCE.getCurrentPCValue()-(intptr_t)Stub);
+  synchronizeICache(Stub, MCE.getCurrentPCValue()-(intptr_t)Stub);
 
   DEBUG(std::cerr << "JIT: Stub emitted at [" << Stub
         << "] for external function at '" << FnAddr << "'\n");
@@ -838,7 +850,7 @@
   TheJIT->getJITInfo().resolveBBRefs(*this);
 
   // Invalidate the icache if necessary.
-  TheJIT->getJITInfo().synchronizeICache(FnStart, FnEnd-FnStart);
+  synchronizeICache(FnStart, FnEnd-FnStart);
 
   DEBUG(std::cerr << "JIT: Finished CodeGen of [" << (void*)FnStart
                   << "] Function: " << F.getFunction()->getName()
