asm_support.h revision 5d9173014c1ca09f7249a6b07629aa37778b5f8f
12faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes/* 22faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Copyright (C) 2011 The Android Open Source Project 32faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 42faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License"); 52faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * you may not use this file except in compliance with the License. 62faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * You may obtain a copy of the License at 72faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 82faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 92faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 102faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Unless required by applicable law or agreed to in writing, software 112faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 122faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * See the License for the specific language governing permissions and 142faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * limitations under the License. 152faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes */ 169651f425f7413772a7b5352da2b04eb7de7d416fIan Rogers 179651f425f7413772a7b5352da2b04eb7de7d416fIan Rogers#ifndef ART_SRC_ASM_SUPPORT_H_ 189651f425f7413772a7b5352da2b04eb7de7d416fIan Rogers#define ART_SRC_ASM_SUPPORT_H_ 199651f425f7413772a7b5352da2b04eb7de7d416fIan Rogers 204b07f172d98846ca6b04d592ea8fd1a1659ada96Ian Rogers// Value loaded into rSUSPEND for quick. When this value is counted down to zero we do a suspend 214b07f172d98846ca6b04d592ea8fd1a1659ada96Ian Rogers// check. 224a510d8750d50b77353d0a5a891d1b9b3a48ecd5Ian Rogers#define SUSPEND_CHECK_INTERVAL (1000) 234a510d8750d50b77353d0a5a891d1b9b3a48ecd5Ian Rogers 244b07f172d98846ca6b04d592ea8fd1a1659ada96Ian Rogers// Offsets within java.lang.String. 25fc9e6fabed89d948fa8c0e9d673e430076712c60buzbee#define STRING_VALUE_OFFSET 8 26fc9e6fabed89d948fa8c0e9d673e430076712c60buzbee#define STRING_COUNT_OFFSET 12 27fc9e6fabed89d948fa8c0e9d673e430076712c60buzbee#define STRING_OFFSET_OFFSET 20 28fc9e6fabed89d948fa8c0e9d673e430076712c60buzbee#define STRING_DATA_OFFSET 12 29fc9e6fabed89d948fa8c0e9d673e430076712c60buzbee 305d9173014c1ca09f7249a6b07629aa37778b5f8fJeff Hao// Offset of field Method::code_ 315d9173014c1ca09f7249a6b07629aa37778b5f8fJeff Hao#define METHOD_CODE_OFFSET 32 325d9173014c1ca09f7249a6b07629aa37778b5f8fJeff Hao 33c1f45048b90a85018c6b063c31bc088dc3dd993dbuzbee#if defined(__arm__) 344b07f172d98846ca6b04d592ea8fd1a1659ada96Ian Rogers// Register holding suspend check count down. 35c1f45048b90a85018c6b063c31bc088dc3dd993dbuzbee#define rSUSPEND r4 364b07f172d98846ca6b04d592ea8fd1a1659ada96Ian Rogers// Register holding Thread::Current(). 37c1f45048b90a85018c6b063c31bc088dc3dd993dbuzbee#define rSELF r9 384f0d07c783afef89703dce32c94440fc8621a29bIan Rogers// Offset of field Thread::suspend_count_ verified in InitCpu 39474b6da273c7ce6df50a4e51eb9929a77e1611c3Ian Rogers#define THREAD_FLAGS_OFFSET 0 40bbdb1437f55948e5395b4dcb306e25605539a444Brian Carlstrom// Offset of field Thread::exception_ verified in InitCpu 41474b6da273c7ce6df50a4e51eb9929a77e1611c3Ian Rogers#define THREAD_EXCEPTION_OFFSET 12 427fbee0731b14b5bf392a4254f5cd84685ab517dajeffhao#elif defined(__mips__) 434b07f172d98846ca6b04d592ea8fd1a1659ada96Ian Rogers// Register holding suspend check count down. 447fbee0731b14b5bf392a4254f5cd84685ab517dajeffhao#define rSUSPEND $s0 454b07f172d98846ca6b04d592ea8fd1a1659ada96Ian Rogers// Register holding Thread::Current(). 467fbee0731b14b5bf392a4254f5cd84685ab517dajeffhao#define rSELF $s1 477fbee0731b14b5bf392a4254f5cd84685ab517dajeffhao// Offset of field Thread::suspend_count_ verified in InitCpu 48474b6da273c7ce6df50a4e51eb9929a77e1611c3Ian Rogers#define THREAD_FLAGS_OFFSET 0 497fbee0731b14b5bf392a4254f5cd84685ab517dajeffhao// Offset of field Thread::exception_ verified in InitCpu 50474b6da273c7ce6df50a4e51eb9929a77e1611c3Ian Rogers#define THREAD_EXCEPTION_OFFSET 12 51ff1ed4770bf7ff024a807b9f909b1a26abb78341Ian Rogers#elif defined(__i386__) 529651f425f7413772a7b5352da2b04eb7de7d416fIan Rogers// Offset of field Thread::self_ verified in InitCpu 53474b6da273c7ce6df50a4e51eb9929a77e1611c3Ian Rogers#define THREAD_SELF_OFFSET 40 54d66a87583bebcd5f89906aeaae9f8fb104ef2ac9jeffhao// Offset of field Thread::exception_ verified in InitCpu 55474b6da273c7ce6df50a4e51eb9929a77e1611c3Ian Rogers#define THREAD_EXCEPTION_OFFSET 12 569651f425f7413772a7b5352da2b04eb7de7d416fIan Rogers#endif 579651f425f7413772a7b5352da2b04eb7de7d416fIan Rogers 589651f425f7413772a7b5352da2b04eb7de7d416fIan Rogers#endif // ART_SRC_ASM_SUPPORT_H_ 59