1751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang/* 2751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang * Copyright (C) 2015 The Android Open Source Project 3751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang * 4751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang * Licensed under the Apache License, Version 2.0 (the "License"); 5751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang * you may not use this file except in compliance with the License. 6751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang * You may obtain a copy of the License at 7751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang * 8751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang * http://www.apache.org/licenses/LICENSE-2.0 9751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang * 10751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang * Unless required by applicable law or agreed to in writing, software 11751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang * distributed under the License is distributed on an "AS IS" BASIS, 12751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang * See the License for the specific language governing permissions and 14751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang * limitations under the License. 15751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang */ 16751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang 17751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang#ifndef ART_RUNTIME_SIMULATOR_CODE_SIMULATOR_ARM64_H_ 18751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang#define ART_RUNTIME_SIMULATOR_CODE_SIMULATOR_ARM64_H_ 19751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang 20751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang#include "memory" 21751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang#include "simulator/code_simulator.h" 22751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang// TODO: make vixl clean wrt -Wshadow. 23751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang#pragma GCC diagnostic push 24751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang#pragma GCC diagnostic ignored "-Wshadow" 25751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang#include "vixl/a64/simulator-a64.h" 26751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang#pragma GCC diagnostic pop 27751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang 28751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wangnamespace art { 29751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wangnamespace arm64 { 30751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang 31751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wangclass CodeSimulatorArm64 : public CodeSimulator { 32751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang public: 33751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang static CodeSimulatorArm64* CreateCodeSimulatorArm64(); 34751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang virtual ~CodeSimulatorArm64(); 35751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang 36751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang void RunFrom(intptr_t code_buffer) OVERRIDE; 37751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang 38751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang bool GetCReturnBool() const OVERRIDE; 39751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang int32_t GetCReturnInt32() const OVERRIDE; 40751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang int64_t GetCReturnInt64() const OVERRIDE; 41751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang 42751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang private: 43751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang CodeSimulatorArm64(); 44751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang 45751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang vixl::Decoder* decoder_; 46751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang vixl::Simulator* simulator_; 47751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang 48751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang // TODO: Enable CodeSimulatorArm64 for more host ISAs once vixl::Simulator supports them. 49751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang static constexpr bool kCanSimulate = (kRuntimeISA == kX86_64); 50751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang 51751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang DISALLOW_COPY_AND_ASSIGN(CodeSimulatorArm64); 52751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang}; 53751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang 54751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang} // namespace arm64 55751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang} // namespace art 56751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang 57751beff19b36f777d9e3a966d754fd9cfad5d534Phil Wang#endif // ART_RUNTIME_SIMULATOR_CODE_SIMULATOR_ARM64_H_ 58