1659efe783f45f46b9940aecf07be981057102ca7Ian Rogers/* 2659efe783f45f46b9940aecf07be981057102ca7Ian Rogers * Copyright (C) 2013 The Android Open Source Project 3659efe783f45f46b9940aecf07be981057102ca7Ian Rogers * 4659efe783f45f46b9940aecf07be981057102ca7Ian Rogers * Licensed under the Apache License, Version 2.0 (the "License"); 5659efe783f45f46b9940aecf07be981057102ca7Ian Rogers * you may not use this file except in compliance with the License. 6659efe783f45f46b9940aecf07be981057102ca7Ian Rogers * You may obtain a copy of the License at 7659efe783f45f46b9940aecf07be981057102ca7Ian Rogers * 8659efe783f45f46b9940aecf07be981057102ca7Ian Rogers * http://www.apache.org/licenses/LICENSE-2.0 9659efe783f45f46b9940aecf07be981057102ca7Ian Rogers * 10659efe783f45f46b9940aecf07be981057102ca7Ian Rogers * Unless required by applicable law or agreed to in writing, software 11659efe783f45f46b9940aecf07be981057102ca7Ian Rogers * distributed under the License is distributed on an "AS IS" BASIS, 12659efe783f45f46b9940aecf07be981057102ca7Ian Rogers * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13659efe783f45f46b9940aecf07be981057102ca7Ian Rogers * See the License for the specific language governing permissions and 14659efe783f45f46b9940aecf07be981057102ca7Ian Rogers * limitations under the License. 15659efe783f45f46b9940aecf07be981057102ca7Ian Rogers */ 16659efe783f45f46b9940aecf07be981057102ca7Ian Rogers 17659efe783f45f46b9940aecf07be981057102ca7Ian Rogers#ifndef ART_COMPILER_TRAMPOLINES_TRAMPOLINE_COMPILER_H_ 18659efe783f45f46b9940aecf07be981057102ca7Ian Rogers#define ART_COMPILER_TRAMPOLINES_TRAMPOLINE_COMPILER_H_ 19659efe783f45f46b9940aecf07be981057102ca7Ian Rogers 20659efe783f45f46b9940aecf07be981057102ca7Ian Rogers#include <stdint.h> 21659efe783f45f46b9940aecf07be981057102ca7Ian Rogers#include <vector> 22659efe783f45f46b9940aecf07be981057102ca7Ian Rogers 23659efe783f45f46b9940aecf07be981057102ca7Ian Rogers#include "driver/compiler_driver.h" 24659efe783f45f46b9940aecf07be981057102ca7Ian Rogers 25659efe783f45f46b9940aecf07be981057102ca7Ian Rogersnamespace art { 26659efe783f45f46b9940aecf07be981057102ca7Ian Rogers 27659efe783f45f46b9940aecf07be981057102ca7Ian Rogers// Create code that will invoke the function held in thread local storage. 28d1ee80948144526b985afb44a0574248cf7da58aVladimir Markostd::unique_ptr<const std::vector<uint8_t>> CreateTrampoline32(InstructionSet isa, 29d1ee80948144526b985afb44a0574248cf7da58aVladimir Marko EntryPointCallingConvention abi, 30d1ee80948144526b985afb44a0574248cf7da58aVladimir Marko ThreadOffset<4> entry_point_offset); 31d1ee80948144526b985afb44a0574248cf7da58aVladimir Markostd::unique_ptr<const std::vector<uint8_t>> CreateTrampoline64(InstructionSet isa, 32d1ee80948144526b985afb44a0574248cf7da58aVladimir Marko EntryPointCallingConvention abi, 33d1ee80948144526b985afb44a0574248cf7da58aVladimir Marko ThreadOffset<8> entry_point_offset); 34659efe783f45f46b9940aecf07be981057102ca7Ian Rogers 35659efe783f45f46b9940aecf07be981057102ca7Ian Rogers} // namespace art 36659efe783f45f46b9940aecf07be981057102ca7Ian Rogers 37659efe783f45f46b9940aecf07be981057102ca7Ian Rogers#endif // ART_COMPILER_TRAMPOLINES_TRAMPOLINE_COMPILER_H_ 38