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