1 /** 2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef PANDA_RUNTIME_ARCH_ARM_ASM_CONSTANTS_H_ 17 #define PANDA_RUNTIME_ARCH_ARM_ASM_CONSTANTS_H_ 18 19 // +---+----------------+ 20 // | | LR | 21 // | | FP | 22 // | | Method * | 23 // | c | FLAGS | 24 // | f +----------------+ 25 // | r | ... | 26 // | a | locals | 27 // | m | ... | 28 // | e +--------+-------+ <-- CFRAME_CALLEE_REGS_START_SLOT 29 // | f | | d15.1 | 30 // | r | | d15.0 | 31 // | a | | d14.1 | 32 // | m | | d14.0 | 33 // | e | | d13.1 | 34 // | | | d13.0 | 35 // | | | d12.1 | 36 // | | | d12.0 | 37 // | | | d11.1 | 38 // | | | d11.0 | 39 // | | | d10.1 | 40 // | | callee | d10.0 | 41 // | | saved | d9.1 | 42 // | | | d9.0 | 43 // | | | d8.1 | 44 // | | | d8.0 | 45 // | | | r10 | 46 // | | | r9 | 47 // | | | r8 | 48 // | | | r7 | 49 // | | | r6 | 50 // | | | r5 | 51 // | | | r4 | 52 // +---+--------+-------+ <-- CFRAME_ARM_SOFTFP_CALLEE_REGS_OFFSET 53 54 // NOLINTNEXTLINE(cppcoreguidelines-macro-usage) 55 #define CFRAME_ARM_SOFTFP_CALLEE_REGS_COUNT (16 + 7) /* [d8..d15] + [r4..r10] */ 56 // NOLINTNEXTLINE(cppcoreguidelines-macro-usage) 57 #define CFRAME_ARM_SOFTFP_CALLEE_REGS_OFFSET (4 * (CFRAME_CALLEE_REGS_START_SLOT + CFRAME_ARM_SOFTFP_CALLEE_REGS_COUNT)) 58 59 // +---+----------------+ 60 // | | LR | 61 // | | FP | 62 // | | Method * | 63 // | | FLAGS | 64 // | +----------------+ 65 // | | ... | 66 // | | locals | 67 // | | ... | 68 // | c +--------+-------+ <-- CFRAME_CALLEE_REGS_START_SLOT 69 // | f | | d15.1 | 70 // | r | | d15.0 | 71 // | a | | d14.1 | 72 // | m | | d14.0 | 73 // | e | | d13.1 | 74 // | | | d13.0 | 75 // | | | d12.1 | 76 // | | | d12.0 | 77 // | | | d11.1 | 78 // | | | d11.0 | 79 // | | | d10.1 | 80 // | | callee | d10.0 | 81 // | | saved | d9.1 | 82 // | | | d9.0 | 83 // | | | d8.1 | 84 // | | | d8.0 | 85 // | | | r10 | 86 // | | | r9 | 87 // | | | r8 | 88 // | | | r7 | 89 // | | | r6 | 90 // | | | r5 | 91 // | | | r4 | 92 // +---+--------+-------+ <-- CFRAME_ARM_HARD_CALLEE_REGS_OFFSET 93 94 // NOLINTNEXTLINE(cppcoreguidelines-macro-usage) 95 #define CFRAME_ARM_HARD_CALLEE_REGS_COUNT (16 + 7) /* [d8..d15] + [r4..r10] */ 96 // NOLINTNEXTLINE(cppcoreguidelines-macro-usage) 97 #define CFRAME_ARM_HARD_CALLEE_REGS_OFFSET (4 * (CFRAME_CALLEE_REGS_START_SLOT + CFRAME_ARM_HARD_CALLEE_REGS_COUNT)) 98 99 #endif // PANDA_RUNTIME_ARCH_ARM_ASM_CONSTANTS_H_ 100