OLD | NEW |
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
2 // All Rights Reserved. | 2 // All Rights Reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions | 5 // modification, are permitted provided that the following conditions |
6 // are met: | 6 // are met: |
7 // | 7 // |
8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
10 // | 10 // |
(...skipping 12 matching lines...) Expand all Loading... |
23 // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | 23 // FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
24 // COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | 24 // COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
25 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 25 // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
26 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | 26 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
27 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | 27 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
28 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | 28 // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
29 // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 29 // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
30 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | 30 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
31 // OF THE POSSIBILITY OF SUCH DAMAGE. | 31 // OF THE POSSIBILITY OF SUCH DAMAGE. |
32 | 32 |
33 // The original source code covered by the above license above has been modified | 33 // The original source code covered by the above license above has been |
34 // significantly by Google Inc. | 34 // modified significantly by Google Inc. |
35 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 35 // Copyright 2010 the V8 project authors. All rights reserved. |
36 | 36 |
37 #include "v8.h" | 37 #include "v8.h" |
38 | 38 |
39 #include "arm/assembler-arm-inl.h" | 39 #include "arm/assembler-arm-inl.h" |
40 #include "serialize.h" | 40 #include "serialize.h" |
41 | 41 |
42 namespace v8 { | 42 namespace v8 { |
43 namespace internal { | 43 namespace internal { |
44 | 44 |
45 // Safe default is no features. | 45 // Safe default is no features. |
(...skipping 1318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1364 void Assembler::stc2(Coprocessor coproc, | 1364 void Assembler::stc2(Coprocessor coproc, |
1365 CRegister crd, | 1365 CRegister crd, |
1366 Register rn, | 1366 Register rn, |
1367 int option, | 1367 int option, |
1368 LFlag l) { // v5 and above | 1368 LFlag l) { // v5 and above |
1369 stc(coproc, crd, rn, option, l, static_cast<Condition>(nv)); | 1369 stc(coproc, crd, rn, option, l, static_cast<Condition>(nv)); |
1370 } | 1370 } |
1371 | 1371 |
1372 | 1372 |
1373 // Support for VFP. | 1373 // Support for VFP. |
| 1374 void Assembler::vldr(const DwVfpRegister dst, |
| 1375 const Register base, |
| 1376 int offset, |
| 1377 const Condition cond) { |
| 1378 // Ddst = MEM(Rbase + offset). |
| 1379 // Instruction details available in ARM DDI 0406A, A8-628. |
| 1380 // cond(31-28) | 1101(27-24)| 1001(23-20) | Rbase(19-16) | |
| 1381 // Vdst(15-12) | 1011(11-8) | offset |
| 1382 ASSERT(CpuFeatures::IsEnabled(VFP3)); |
| 1383 ASSERT(offset % 4 == 0); |
| 1384 emit(cond | 0xD9*B20 | base.code()*B16 | dst.code()*B12 | |
| 1385 0xB*B8 | ((offset / 4) & 255)); |
| 1386 } |
| 1387 |
| 1388 |
| 1389 void Assembler::vstr(const DwVfpRegister src, |
| 1390 const Register base, |
| 1391 int offset, |
| 1392 const Condition cond) { |
| 1393 // MEM(Rbase + offset) = Dsrc. |
| 1394 // Instruction details available in ARM DDI 0406A, A8-786. |
| 1395 // cond(31-28) | 1101(27-24)| 1000(23-20) | | Rbase(19-16) | |
| 1396 // Vsrc(15-12) | 1011(11-8) | (offset/4) |
| 1397 ASSERT(CpuFeatures::IsEnabled(VFP3)); |
| 1398 ASSERT(offset % 4 == 0); |
| 1399 emit(cond | 0xD8*B20 | base.code()*B16 | src.code()*B12 | |
| 1400 0xB*B8 | ((offset / 4) & 255)); |
| 1401 } |
| 1402 |
| 1403 |
1374 void Assembler::vmov(const DwVfpRegister dst, | 1404 void Assembler::vmov(const DwVfpRegister dst, |
1375 const Register src1, | 1405 const Register src1, |
1376 const Register src2, | 1406 const Register src2, |
1377 const Condition cond) { | 1407 const Condition cond) { |
1378 // Dm = <Rt,Rt2>. | 1408 // Dm = <Rt,Rt2>. |
1379 // Instruction details available in ARM DDI 0406A, A8-646. | 1409 // Instruction details available in ARM DDI 0406A, A8-646. |
1380 // cond(31-28) | 1100(27-24)| 010(23-21) | op=0(20) | Rt2(19-16) | | 1410 // cond(31-28) | 1100(27-24)| 010(23-21) | op=0(20) | Rt2(19-16) | |
1381 // Rt(15-12) | 1011(11-8) | 00(7-6) | M(5) | 1(4) | Vm | 1411 // Rt(15-12) | 1011(11-8) | 00(7-6) | M(5) | 1(4) | Vm |
1382 ASSERT(CpuFeatures::IsEnabled(VFP3)); | 1412 ASSERT(CpuFeatures::IsEnabled(VFP3)); |
1383 ASSERT(!src1.is(pc) && !src2.is(pc)); | 1413 ASSERT(!src1.is(pc) && !src2.is(pc)); |
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1812 bind(&after_pool); | 1842 bind(&after_pool); |
1813 } | 1843 } |
1814 | 1844 |
1815 // Since a constant pool was just emitted, move the check offset forward by | 1845 // Since a constant pool was just emitted, move the check offset forward by |
1816 // the standard interval. | 1846 // the standard interval. |
1817 next_buffer_check_ = pc_offset() + kCheckConstInterval; | 1847 next_buffer_check_ = pc_offset() + kCheckConstInterval; |
1818 } | 1848 } |
1819 | 1849 |
1820 | 1850 |
1821 } } // namespace v8::internal | 1851 } } // namespace v8::internal |
OLD | NEW |