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 |