| OLD | NEW |
| 1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 525 vmrs(scratch, cond); | 525 vmrs(scratch, cond); |
| 526 bic(scratch, scratch, Operand(bits_to_clear), LeaveCC, cond); | 526 bic(scratch, scratch, Operand(bits_to_clear), LeaveCC, cond); |
| 527 vmsr(scratch, cond); | 527 vmsr(scratch, cond); |
| 528 } | 528 } |
| 529 | 529 |
| 530 | 530 |
| 531 void MacroAssembler::VFPCompareAndSetFlags(const DwVfpRegister src1, | 531 void MacroAssembler::VFPCompareAndSetFlags(const DwVfpRegister src1, |
| 532 const DwVfpRegister src2, | 532 const DwVfpRegister src2, |
| 533 const Condition cond) { | 533 const Condition cond) { |
| 534 // Compare and move FPSCR flags to the normal condition flags. | 534 // Compare and move FPSCR flags to the normal condition flags. |
| 535 vcmp(src1, src2, cond); | 535 VFPCompareAndLoadFlags(src1, src2, pc, cond); |
| 536 vmrs(pc, cond); | |
| 537 } | 536 } |
| 538 | 537 |
| 539 void MacroAssembler::VFPCompareAndSetFlags(const DwVfpRegister src1, | 538 void MacroAssembler::VFPCompareAndSetFlags(const DwVfpRegister src1, |
| 540 const double src2, | 539 const double src2, |
| 541 const Condition cond) { | 540 const Condition cond) { |
| 542 // Compare and move FPSCR flags to the normal condition flags. | 541 // Compare and move FPSCR flags to the normal condition flags. |
| 543 vcmp(src1, src2, cond); | 542 VFPCompareAndLoadFlags(src1, src2, pc, cond); |
| 544 vmrs(pc, cond); | |
| 545 } | 543 } |
| 546 | 544 |
| 547 | 545 |
| 548 void MacroAssembler::VFPCompareAndLoadFlags(const DwVfpRegister src1, | 546 void MacroAssembler::VFPCompareAndLoadFlags(const DwVfpRegister src1, |
| 549 const DwVfpRegister src2, | 547 const DwVfpRegister src2, |
| 550 const Register fpscr_flags, | 548 const Register fpscr_flags, |
| 551 const Condition cond) { | 549 const Condition cond) { |
| 552 // Clear the Invalid cumulative exception flags (use fpscr_flags as scratch). | |
| 553 ClearFPSCRBits(kVFPInvalidExceptionBit, fpscr_flags); | |
| 554 | |
| 555 // Compare and load FPSCR. | 550 // Compare and load FPSCR. |
| 556 vcmp(src1, src2, cond); | 551 vcmp(src1, src2, cond); |
| 557 vmrs(fpscr_flags); | 552 vmrs(fpscr_flags, cond); |
| 558 } | 553 } |
| 559 | 554 |
| 560 void MacroAssembler::VFPCompareAndLoadFlags(const DwVfpRegister src1, | 555 void MacroAssembler::VFPCompareAndLoadFlags(const DwVfpRegister src1, |
| 561 const double src2, | 556 const double src2, |
| 562 const Register fpscr_flags, | 557 const Register fpscr_flags, |
| 563 const Condition cond) { | 558 const Condition cond) { |
| 564 // Clear the Invalid cumulative exception flags (use fpscr_flags as scratch). | |
| 565 ClearFPSCRBits(kVFPInvalidExceptionBit, fpscr_flags); | |
| 566 | |
| 567 // Compare and load FPSCR. | 559 // Compare and load FPSCR. |
| 568 vcmp(src1, src2, cond); | 560 vcmp(src1, src2, cond); |
| 569 vmrs(fpscr_flags); | 561 vmrs(fpscr_flags, cond); |
| 570 } | 562 } |
| 571 | 563 |
| 572 | 564 |
| 573 void MacroAssembler::EnterFrame(StackFrame::Type type) { | 565 void MacroAssembler::EnterFrame(StackFrame::Type type) { |
| 574 // r0-r3: preserved | 566 // r0-r3: preserved |
| 575 stm(db_w, sp, cp.bit() | fp.bit() | lr.bit()); | 567 stm(db_w, sp, cp.bit() | fp.bit() | lr.bit()); |
| 576 mov(ip, Operand(Smi::FromInt(type))); | 568 mov(ip, Operand(Smi::FromInt(type))); |
| 577 push(ip); | 569 push(ip); |
| 578 mov(ip, Operand(CodeObject())); | 570 mov(ip, Operand(CodeObject())); |
| 579 push(ip); | 571 push(ip); |
| (...skipping 1618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2198 | 2190 |
| 2199 void CodePatcher::Emit(Address addr) { | 2191 void CodePatcher::Emit(Address addr) { |
| 2200 masm()->emit(reinterpret_cast<Instr>(addr)); | 2192 masm()->emit(reinterpret_cast<Instr>(addr)); |
| 2201 } | 2193 } |
| 2202 #endif // ENABLE_DEBUGGER_SUPPORT | 2194 #endif // ENABLE_DEBUGGER_SUPPORT |
| 2203 | 2195 |
| 2204 | 2196 |
| 2205 } } // namespace v8::internal | 2197 } } // namespace v8::internal |
| 2206 | 2198 |
| 2207 #endif // V8_TARGET_ARCH_ARM | 2199 #endif // V8_TARGET_ARCH_ARM |
| OLD | NEW |