Changeset 48782 in webkit for trunk/JavaScriptCore/assembler/MacroAssemblerARM.cpp
- Timestamp:
- Sep 25, 2009, 7:27:02 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/assembler/MacroAssemblerARM.cpp
r48525 r48782 63 63 const bool MacroAssemblerARM::s_isVFPPresent = isVFPPresent(); 64 64 65 #if defined(ARM_REQUIRE_NATURAL_ALIGNMENT) && ARM_REQUIRE_NATURAL_ALIGNMENT 66 void MacroAssemblerARM::load32WithUnalignedHalfWords(BaseIndex address, RegisterID dest) 67 { 68 ARMWord op2; 69 70 ASSERT(address.scale >= 0 && address.scale <= 3); 71 op2 = m_assembler.lsl(address.index, static_cast<int>(address.scale)); 72 73 if (address.offset >= 0 && address.offset + 0x2 <= 0xff) { 74 m_assembler.add_r(ARMRegisters::S0, address.base, op2); 75 m_assembler.ldrh_u(dest, ARMRegisters::S0, ARMAssembler::getOp2Byte(address.offset)); 76 m_assembler.ldrh_u(ARMRegisters::S0, ARMRegisters::S0, ARMAssembler::getOp2Byte(address.offset + 0x2)); 77 } else if (address.offset < 0 && address.offset >= -0xff) { 78 m_assembler.add_r(ARMRegisters::S0, address.base, op2); 79 m_assembler.ldrh_d(dest, ARMRegisters::S0, ARMAssembler::getOp2Byte(-address.offset)); 80 m_assembler.ldrh_d(ARMRegisters::S0, ARMRegisters::S0, ARMAssembler::getOp2Byte(-address.offset - 0x2)); 81 } else { 82 m_assembler.ldr_un_imm(ARMRegisters::S0, address.offset); 83 m_assembler.add_r(ARMRegisters::S0, ARMRegisters::S0, op2); 84 m_assembler.ldrh_r(dest, address.base, ARMRegisters::S0); 85 m_assembler.add_r(ARMRegisters::S0, ARMRegisters::S0, ARMAssembler::OP2_IMM | 0x2); 86 m_assembler.ldrh_r(ARMRegisters::S0, address.base, ARMRegisters::S0); 87 } 88 m_assembler.orr_r(dest, dest, m_assembler.lsl(ARMRegisters::S0, 16)); 89 } 90 #endif 91 65 92 } 66 93
Note:
See TracChangeset
for help on using the changeset viewer.