V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
cpu-ppc.cc
1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // CPU specific code for ppc independent of OS goes here.
6 
7 #if V8_TARGET_ARCH_PPC
8 
9 #include "src/assembler.h"
10 #include "src/macro-assembler.h"
11 
12 namespace v8 {
13 namespace internal {
14 
15 void CpuFeatures::FlushICache(void* buffer, size_t size) {
16 #if !defined(USE_SIMULATOR)
17  if (CpuFeatures::IsSupported(INSTR_AND_DATA_CACHE_COHERENCY)) {
18  __asm__ __volatile__(
19  "sync \n"
20  "icbi 0, %0 \n"
21  "isync \n"
22  : /* no output */
23  : "r"(buffer)
24  : "memory");
25  return;
26  }
27 
28  const int kCacheLineSize = CpuFeatures::icache_line_size();
29  intptr_t mask = kCacheLineSize - 1;
30  byte *start =
31  reinterpret_cast<byte *>(reinterpret_cast<intptr_t>(buffer) & ~mask);
32  byte *end = static_cast<byte *>(buffer) + size;
33  for (byte *pointer = start; pointer < end; pointer += kCacheLineSize) {
34  __asm__(
35  "dcbf 0, %0 \n"
36  "sync \n"
37  "icbi 0, %0 \n"
38  "isync \n"
39  : /* no output */
40  : "r"(pointer));
41  }
42 
43 #endif // !USE_SIMULATOR
44 }
45 } // namespace internal
46 } // namespace v8
47 
48 #endif // V8_TARGET_ARCH_PPC
Definition: libplatform.h:13