| 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 VM_ASSEMBLER_ARM_H_ | 5 #ifndef VM_ASSEMBLER_ARM_H_ |
| 6 #define VM_ASSEMBLER_ARM_H_ | 6 #define VM_ASSEMBLER_ARM_H_ |
| 7 | 7 |
| 8 #ifndef VM_ASSEMBLER_H_ | 8 #ifndef VM_ASSEMBLER_H_ |
| 9 #error Do not include assembler_arm.h directly; use assembler.h instead. | 9 #error Do not include assembler_arm.h directly; use assembler.h instead. |
| 10 #endif | 10 #endif |
| (...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 554 | 554 |
| 555 // Branch to an entry address. Call sequence can be patched or even replaced. | 555 // Branch to an entry address. Call sequence can be patched or even replaced. |
| 556 void BranchPatchable(const ExternalLabel* label); | 556 void BranchPatchable(const ExternalLabel* label); |
| 557 | 557 |
| 558 // Branch and link to an entry address. Call sequence is never patched. | 558 // Branch and link to an entry address. Call sequence is never patched. |
| 559 void BranchLink(const ExternalLabel* label); | 559 void BranchLink(const ExternalLabel* label); |
| 560 | 560 |
| 561 // Branch and link to an entry address. Call sequence can be patched. | 561 // Branch and link to an entry address. Call sequence can be patched. |
| 562 void BranchLinkPatchable(const ExternalLabel* label); | 562 void BranchLinkPatchable(const ExternalLabel* label); |
| 563 | 563 |
| 564 // Branch and link to entry after storing return address at ad. | |
| 565 // Call sequence is never patched. | |
| 566 void BranchLinkStore(const ExternalLabel* label, Address ad); | |
| 567 | |
| 568 // Branch and link to [base + offset]. Call sequence is never patched. | 564 // Branch and link to [base + offset]. Call sequence is never patched. |
| 569 void BranchLinkOffset(Register base, int32_t offset); | 565 void BranchLinkOffset(Register base, int32_t offset); |
| 570 | 566 |
| 571 // Add signed immediate value to rd. May clobber IP. | 567 // Add signed immediate value to rd. May clobber IP. |
| 572 void AddImmediate(Register rd, int32_t value, Condition cond = AL); | 568 void AddImmediate(Register rd, int32_t value, Condition cond = AL); |
| 573 void AddImmediate(Register rd, Register rn, int32_t value, | 569 void AddImmediate(Register rd, Register rn, int32_t value, |
| 574 Condition cond = AL); | 570 Condition cond = AL); |
| 575 void AddImmediateSetFlags(Register rd, Register rn, int32_t value, | 571 void AddImmediateSetFlags(Register rd, Register rn, int32_t value, |
| 576 Condition cond = AL); | 572 Condition cond = AL); |
| 577 void AddImmediateWithCarry(Register rd, Register rn, int32_t value, | 573 void SubImmediateSetFlags(Register rd, Register rn, int32_t value, |
| 578 Condition cond = AL); | 574 Condition cond = AL); |
| 579 | |
| 580 void AndImmediate(Register rd, Register rs, int32_t imm, Condition cond = AL); | 575 void AndImmediate(Register rd, Register rs, int32_t imm, Condition cond = AL); |
| 581 | 576 |
| 582 // Test rn and immediate. May clobber IP. | 577 // Test rn and immediate. May clobber IP. |
| 583 void TestImmediate(Register rn, int32_t imm, Condition cond = AL); | 578 void TestImmediate(Register rn, int32_t imm, Condition cond = AL); |
| 584 | 579 |
| 585 // Compare rn with signed immediate value. May clobber IP. | 580 // Compare rn with signed immediate value. May clobber IP. |
| 586 void CompareImmediate(Register rn, int32_t value, Condition cond = AL); | 581 void CompareImmediate(Register rn, int32_t value, Condition cond = AL); |
| 587 | 582 |
| 588 | 583 |
| 589 // Signed integer division of left by right. Checks to see if integer | 584 // Signed integer division of left by right. Checks to see if integer |
| (...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 905 Register value, | 900 Register value, |
| 906 Label* no_update); | 901 Label* no_update); |
| 907 | 902 |
| 908 DISALLOW_ALLOCATION(); | 903 DISALLOW_ALLOCATION(); |
| 909 DISALLOW_COPY_AND_ASSIGN(Assembler); | 904 DISALLOW_COPY_AND_ASSIGN(Assembler); |
| 910 }; | 905 }; |
| 911 | 906 |
| 912 } // namespace dart | 907 } // namespace dart |
| 913 | 908 |
| 914 #endif // VM_ASSEMBLER_ARM_H_ | 909 #endif // VM_ASSEMBLER_ARM_H_ |
| OLD | NEW |