v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
cpu-mips64.cc
Go to the documentation of this file.
1// Copyright 2012 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 arm independent of OS goes here.
6
7#include <sys/syscall.h>
8#include <unistd.h>
9
10#ifdef __mips
11#include <asm/cachectl.h>
12#endif // #ifdef __mips
13
14#if V8_TARGET_ARCH_MIPS64
15
17
18namespace v8 {
19namespace internal {
20
21void CpuFeatures::FlushICache(void* start, size_t size) {
22#if !defined(USE_SIMULATOR)
23 // Nothing to do, flushing no instructions.
24 if (size == 0) {
25 return;
26 }
27
28#if defined(ANDROID) && !defined(__LP64__)
29 // Bionic cacheflush can typically run in userland, avoiding kernel call.
30 char* end = reinterpret_cast<char*>(start) + size;
31 cacheflush(reinterpret_cast<intptr_t>(start), reinterpret_cast<intptr_t>(end),
32 0);
33#else // ANDROID
34 long res; // NOLINT(runtime/int)
35 // See http://www.linux-mips.org/wiki/Cacheflush_Syscall.
36 res = syscall(__NR_cacheflush, start, size, ICACHE);
37 if (res) FATAL("Failed to flush the instruction cache");
38#endif // ANDROID
39#endif // !USE_SIMULATOR.
40}
41
42} // namespace internal
43} // namespace v8
44
45#endif // V8_TARGET_ARCH_MIPS64
static void FlushICache(void *start, size_t size)
Definition cpu-riscv.cc:15
int start
int end
#define FATAL(...)
Definition logging.h:47