| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef RUNTIME_VM_CONSTANTS_ARM_H_ | 5 #ifndef RUNTIME_VM_CONSTANTS_ARM_H_ |
| 6 #define RUNTIME_VM_CONSTANTS_ARM_H_ | 6 #define RUNTIME_VM_CONSTANTS_ARM_H_ |
| 7 | 7 |
| 8 #include "platform/globals.h" | 8 #include "platform/globals.h" |
| 9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
| 10 | 10 |
| 11 namespace dart { | 11 namespace dart { |
| 12 | 12 |
| 13 // We support both VFPv3-D16 and VFPv3-D32 profiles, but currently only one at | 13 // We support both VFPv3-D16 and VFPv3-D32 profiles, but currently only one at |
| 14 // a time. | 14 // a time. |
| 15 #if defined(__ARM_ARCH_7A__) | 15 #if defined(__ARM_ARCH_7A__) |
| 16 #define VFPv3_D32 | 16 #define VFPv3_D32 |
| 17 #elif defined(TARGET_ARCH_ARM) && !defined(HOST_ARCH_ARM) | 17 #elif defined(TARGET_ARCH_ARM) && !defined(HOST_ARCH_ARM) |
| 18 // If we're running in the simulator, use all 32. | 18 // If we're running in the simulator, use all 32. |
| 19 #define VFPv3_D32 | 19 #define VFPv3_D32 |
| 20 #else | 20 #else |
| 21 #define VFPv3_D16 | 21 #define VFPv3_D16 |
| 22 #endif | 22 #endif |
| 23 #if defined(VFPv3_D16) == defined(VFPv3_D32) | 23 #if defined(VFPv3_D16) == defined(VFPv3_D32) |
| 24 #error "Exactly one of VFPv3_D16 or VFPv3_D32 can be defined at a time." | 24 #error "Exactly one of VFPv3_D16 or VFPv3_D32 can be defined at a time." |
| 25 #endif | 25 #endif |
| 26 | 26 |
| 27 | 27 |
| 28 // The Linux/Android ABI and the iOS ABI differ in their choice of frame | 28 // The Linux/Android ABI and the iOS ABI differ in their choice of frame |
| 29 // pointer, their treatment of R9, and the interproduceral stack alignment. | 29 // pointer, their treatment of R9, and the interprocedural stack alignment. |
| 30 | 30 |
| 31 // EABI (Linux, Android) | 31 // EABI (Linux, Android) |
| 32 // See "Procedure Call Standard for the ARM Architecture". | 32 // See "Procedure Call Standard for the ARM Architecture". |
| 33 // R0-R1: Argument / result / volatile | 33 // R0-R1: Argument / result / volatile |
| 34 // R2-R3: Argument / volatile | 34 // R2-R3: Argument / volatile |
| 35 // R4-R10: Preserved | 35 // R4-R10: Preserved |
| 36 // R11: Frame pointer | 36 // R11: Frame pointer |
| 37 // R12: Volatile | 37 // R12: Volatile |
| 38 // R13: Stack pointer | 38 // R13: Stack pointer |
| 39 // R14: Link register | 39 // R14: Link register |
| (...skipping 718 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 758 static Instr* At(uword pc) { return reinterpret_cast<Instr*>(pc); } | 758 static Instr* At(uword pc) { return reinterpret_cast<Instr*>(pc); } |
| 759 | 759 |
| 760 private: | 760 private: |
| 761 DISALLOW_ALLOCATION(); | 761 DISALLOW_ALLOCATION(); |
| 762 DISALLOW_IMPLICIT_CONSTRUCTORS(Instr); | 762 DISALLOW_IMPLICIT_CONSTRUCTORS(Instr); |
| 763 }; | 763 }; |
| 764 | 764 |
| 765 } // namespace dart | 765 } // namespace dart |
| 766 | 766 |
| 767 #endif // RUNTIME_VM_CONSTANTS_ARM_H_ | 767 #endif // RUNTIME_VM_CONSTANTS_ARM_H_ |
| OLD | NEW |