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 // This is forked from Dart revision df52deea9f25690eb8b66c5995da92b70f7ac1fe | 5 // This is forked from Dart revision df52deea9f25690eb8b66c5995da92b70f7ac1fe |
6 // Please update the (git) revision if we merge changes from Dart. | 6 // Please update the (git) revision if we merge changes from Dart. |
7 // https://code.google.com/p/dart/wiki/GettingTheSource | 7 // https://code.google.com/p/dart/wiki/GettingTheSource |
8 | 8 |
9 #ifndef VM_ASSEMBLER_ARM_H_ | 9 #ifndef VM_ASSEMBLER_ARM_H_ |
10 #define VM_ASSEMBLER_ARM_H_ | 10 #define VM_ASSEMBLER_ARM_H_ |
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
569 | 569 |
570 void ldrsb(Register rd, Address ad, Condition cond = AL); | 570 void ldrsb(Register rd, Address ad, Condition cond = AL); |
571 void ldrsh(Register rd, Address ad, Condition cond = AL); | 571 void ldrsh(Register rd, Address ad, Condition cond = AL); |
572 | 572 |
573 // ldrd and strd actually support the full range of addressing modes, but | 573 // ldrd and strd actually support the full range of addressing modes, but |
574 // we don't use them, and we need to split them up into two instructions for | 574 // we don't use them, and we need to split them up into two instructions for |
575 // ARMv5TE, so we only support the base + offset mode. | 575 // ARMv5TE, so we only support the base + offset mode. |
576 void ldrd(Register rd, Register rn, int32_t offset, Condition cond = AL); | 576 void ldrd(Register rd, Register rn, int32_t offset, Condition cond = AL); |
577 void strd(Register rd, Register rn, int32_t offset, Condition cond = AL); | 577 void strd(Register rd, Register rn, int32_t offset, Condition cond = AL); |
578 | 578 |
| 579 #if 0 |
| 580 // Folded into ARM32::AssemblerARM32::popList(), since it is its only use (and |
| 581 // doesn't implement ARM LDM instructions). |
579 void ldm(BlockAddressMode am, Register base, | 582 void ldm(BlockAddressMode am, Register base, |
580 RegList regs, Condition cond = AL); | 583 RegList regs, Condition cond = AL); |
581 #if 0 | 584 |
582 // Folded into ARM32::AssemblerARM32::pushList(), since it is its only | 585 // Folded into ARM32::AssemblerARM32::pushList(), since it is its only use |
583 // use (and doesn't implement ARM STM instruction). | 586 // (and doesn't implement ARM STM instruction). |
584 void stm(BlockAddressMode am, Register base, | 587 void stm(BlockAddressMode am, Register base, |
585 RegList regs, Condition cond = AL); | 588 RegList regs, Condition cond = AL); |
586 #endif | 589 #endif |
587 | 590 |
588 void ldrex(Register rd, Register rn, Condition cond = AL); | 591 void ldrex(Register rd, Register rn, Condition cond = AL); |
589 void strex(Register rd, Register rt, Register rn, Condition cond = AL); | 592 void strex(Register rd, Register rt, Register rn, Condition cond = AL); |
590 | 593 |
591 // Miscellaneous instructions. | 594 // Miscellaneous instructions. |
592 void clrex(); | 595 void clrex(); |
593 void nop(Condition cond = AL); | 596 void nop(Condition cond = AL); |
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
929 void CopyDoubleField(Register dst, Register src, | 932 void CopyDoubleField(Register dst, Register src, |
930 Register tmp1, Register tmp2, DRegister dtmp); | 933 Register tmp1, Register tmp2, DRegister dtmp); |
931 void CopyFloat32x4Field(Register dst, Register src, | 934 void CopyFloat32x4Field(Register dst, Register src, |
932 Register tmp1, Register tmp2, DRegister dtmp); | 935 Register tmp1, Register tmp2, DRegister dtmp); |
933 void CopyFloat64x2Field(Register dst, Register src, | 936 void CopyFloat64x2Field(Register dst, Register src, |
934 Register tmp1, Register tmp2, DRegister dtmp); | 937 Register tmp1, Register tmp2, DRegister dtmp); |
935 | 938 |
936 #if 0 | 939 #if 0 |
937 // Moved to ARM32::AssemblerARM32::push(). | 940 // Moved to ARM32::AssemblerARM32::push(). |
938 void Push(Register rd, Condition cond = AL); | 941 void Push(Register rd, Condition cond = AL); |
939 #endif | 942 |
| 943 // Moved to ARM32::AssemblerARM32::pop(). |
940 void Pop(Register rd, Condition cond = AL); | 944 void Pop(Register rd, Condition cond = AL); |
941 | 945 |
942 #if 0 | 946 // Moved to ARM32::AssemblerARM32::pushList(). |
943 // Moved to ARM32::AssemblerARM32::pushList(); | |
944 void PushList(RegList regs, Condition cond = AL); | 947 void PushList(RegList regs, Condition cond = AL); |
| 948 |
| 949 // Moved to ARM32::AssemblerARM32::popList(). |
| 950 void PopList(RegList regs, Condition cond = AL); |
945 #endif | 951 #endif |
946 void PopList(RegList regs, Condition cond = AL); | |
947 | |
948 void MoveRegister(Register rd, Register rm, Condition cond = AL); | 952 void MoveRegister(Register rd, Register rm, Condition cond = AL); |
949 | 953 |
950 // Convenience shift instructions. Use mov instruction with shifter operand | 954 // Convenience shift instructions. Use mov instruction with shifter operand |
951 // for variants setting the status flags. | 955 // for variants setting the status flags. |
952 void Lsl(Register rd, Register rm, const Operand& shift_imm, | 956 void Lsl(Register rd, Register rm, const Operand& shift_imm, |
953 Condition cond = AL); | 957 Condition cond = AL); |
954 void Lsl(Register rd, Register rm, Register rs, Condition cond = AL); | 958 void Lsl(Register rd, Register rm, Register rs, Condition cond = AL); |
955 void Lsr(Register rd, Register rm, const Operand& shift_imm, | 959 void Lsr(Register rd, Register rm, const Operand& shift_imm, |
956 Condition cond = AL); | 960 Condition cond = AL); |
957 void Lsr(Register rd, Register rm, Register rs, Condition cond = AL); | 961 void Lsr(Register rd, Register rm, Register rs, Condition cond = AL); |
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1297 Register new_value, | 1301 Register new_value, |
1298 FieldContent old_content); | 1302 FieldContent old_content); |
1299 | 1303 |
1300 DISALLOW_ALLOCATION(); | 1304 DISALLOW_ALLOCATION(); |
1301 DISALLOW_COPY_AND_ASSIGN(Assembler); | 1305 DISALLOW_COPY_AND_ASSIGN(Assembler); |
1302 }; | 1306 }; |
1303 | 1307 |
1304 } // namespace dart | 1308 } // namespace dart |
1305 | 1309 |
1306 #endif // VM_ASSEMBLER_ARM_H_ | 1310 #endif // VM_ASSEMBLER_ARM_H_ |
OLD | NEW |