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