Lines Matching refs:address

754 bool EmulateInstructionARM::WriteBits32UnknownToMemory(addr_t address) {  in WriteBits32UnknownToMemory()  argument
762 return MemAWrite(context, address, random_data, addr_byte_size); in WriteBits32UnknownToMemory()
897 address = SP - 4*BitCount(registers); in EmulatePUSH()
904 MemA[address,4] = bits(32) UNKNOWN; in EmulatePUSH()
906 MemA[address,4] = R[i]; in EmulatePUSH()
907 address = address + 4; in EmulatePUSH()
912 MemA[address,4] = PCStoreValue(); in EmulatePUSH()
1018 address = SP; in EmulatePOP()
1021 … R[i] = if UnalignedAllowed then MemU[address,4] else MemA[address,4]; address = address + 4; in EmulatePOP()
1024 LoadWritePC(MemU[address,4]); in EmulatePOP()
1026 LoadWritePC(MemA[address,4]); in EmulatePOP()
1744 address = if add then (base + imm32) else (base - imm32); in EmulateLDRRtPCRelative()
1745 data = MemU[address,4]; in EmulateLDRRtPCRelative()
1747 if address<1:0> == '00' then LoadWritePC(data); else UNPREDICTABLE; in EmulateLDRRtPCRelative()
1748 elsif UnalignedSupport() || address<1:0> = '00' then in EmulateLDRRtPCRelative()
1752 R[t] = ROR(data, 8*UInt(address<1:0>)); in EmulateLDRRtPCRelative()
1775 addr_t address; // the PC relative address in EmulateLDRRtPCRelative() local
1796 address = base + imm32; in EmulateLDRRtPCRelative()
1798 address = base - imm32; in EmulateLDRRtPCRelative()
1800 context.SetRegisterPlusOffset(pc_reg, address - base); in EmulateLDRRtPCRelative()
1801 data = MemURead(context, address, 4, 0, &success); in EmulateLDRRtPCRelative()
1806 if (Bits32(address, 1, 0) == 0) { in EmulateLDRRtPCRelative()
1812 } else if (UnalignedSupport() || Bits32(address, 1, 0) == 0) { in EmulateLDRRtPCRelative()
2463 address = if index then offset_addr else R[n]; in EmulateSTRRtSP()
2464 MemU[address,4] = if t == 15 then PCStoreValue() else R[t]; in EmulateSTRRtSP()
2556 address = SP - imm32; in EmulateVPUSH()
2560 MemA[address,4] = S[d+r]; address = address+4; in EmulateVPUSH()
2565 MemA[address,4] = if BigEndian() then D[d+r]<63:32> else D[d+r]<31:0>; in EmulateVPUSH()
2566 MemA[address+4,4] = if BigEndian() then D[d+r]<31:0> else D[d+r]<63:32>; in EmulateVPUSH()
2567 address = address+8; in EmulateVPUSH()
2649 address = SP; in EmulateVPOP()
2653 S[d+r] = MemA[address,4]; address = address+4; in EmulateVPOP()
2656 word1 = MemA[address,4]; word2 = MemA[address+4,4]; address = address+8; in EmulateVPOP()
3912 address = R[n]; in EmulateLDM()
3916 R[i] = MemA[address, 4]; address = address + 4; in EmulateLDM()
3918 LoadWritePC (MemA[address, 4]); in EmulateLDM()
4055 address = R[n] - 4*BitCount(registers) + 4; in EmulateLDMDA()
4059 R[i] = MemA[address,4]; address = address + 4; in EmulateLDMDA()
4062 LoadWritePC(MemA[address,4]); in EmulateLDMDA()
4101 addr_t address = in EmulateLDMDA() local
4115 context.SetRegisterPlusOffset(dwarf_reg, Rn - (address + offset)); in EmulateLDMDA()
4117 MemARead(context, address + offset, addr_byte_size, 0, &success); in EmulateLDMDA()
4132 MemARead(context, address + offset, addr_byte_size, 0, &success); in EmulateLDMDA()
4172 address = R[n] - 4*BitCount(registers); in EmulateLDMDB()
4176 R[i] = MemA[address,4]; address = address + 4; in EmulateLDMDB()
4178 LoadWritePC(MemA[address,4]); in EmulateLDMDB()
4241 addr_t address = Rn - (addr_byte_size * BitCount(registers)); in EmulateLDMDB() local
4246 context.SetRegisterPlusOffset(dwarf_reg, Rn - address); in EmulateLDMDB()
4251 context.SetRegisterPlusOffset(dwarf_reg, Rn - (address + offset)); in EmulateLDMDB()
4253 MemARead(context, address + offset, addr_byte_size, 0, &success); in EmulateLDMDB()
4270 MemARead(context, address + offset, addr_byte_size, 0, &success); in EmulateLDMDB()
4310 address = R[n] + 4; in EmulateLDMIB()
4314 R[i] = MemA[address,4]; address = address + 4; in EmulateLDMIB()
4316 LoadWritePC(MemA[address,4]); in EmulateLDMIB()
4353 addr_t address = Rn + addr_byte_size; in EmulateLDMIB() local
4367 MemARead(context, address + offset, addr_byte_size, 0, &success); in EmulateLDMIB()
4384 MemARead(context, address + offset, addr_byte_size, 0, &success); in EmulateLDMIB()
4425 address = if index then offset_addr else R[n]; in EmulateLDRRtRnImm()
4426 data = MemU[address,4]; in EmulateLDRRtRnImm()
4429 if address<1:0> == '00' then LoadWritePC(data); else UNPREDICTABLE; in EmulateLDRRtRnImm()
4430 elsif UnalignedSupport() || address<1:0> = '00' then in EmulateLDRRtRnImm()
4443 addr_t address; // the calculated address in EmulateLDRRtRnImm() local
4527 address = (index ? offset_addr : base); in EmulateLDRRtRnImm()
4555 data = MemURead(context, address, 4, 0, &success); in EmulateLDRRtRnImm()
4560 if (Bits32(address, 1, 0) == 0) { in EmulateLDRRtRnImm()
4565 } else if (UnalignedSupport() || Bits32(address, 1, 0) == 0) { in EmulateLDRRtRnImm()
4585 address = R[n]; in EmulateSTM()
4590 MemA[address,4] = bits(32) UNKNOWN; // Only possible for encodings T1 and A1 in EmulateSTM()
4592 MemA[address,4] = R[i]; in EmulateSTM()
4593 address = address + 4; in EmulateSTM()
4596 MemA[address,4] = PCStoreValue(); in EmulateSTM()
4658 const addr_t address = in EmulateSTM() local
4679 WriteBits32UnknownToMemory(address + offset); in EmulateSTM()
4690 if (!MemAWrite(context, address + offset, data, addr_byte_size)) in EmulateSTM()
4709 if (!MemAWrite(context, address + offset, pc, addr_byte_size)) in EmulateSTM()
4718 addr_t data = address + offset; in EmulateSTM()
4737 address = R[n] - 4*BitCount(registers) + 4; in EmulateSTMDA()
4742 MemA[address,4] = bits(32) UNKNOWN; in EmulateSTMDA()
4744 MemA[address,4] = R[i]; in EmulateSTMDA()
4745 address = address + 4; in EmulateSTMDA()
4748 MemA[address,4] = PCStoreValue(); in EmulateSTMDA()
4783 addr_t address = Rn - (addr_byte_size * BitCount(registers)) + 4; in EmulateSTMDA() local
4800 WriteBits32UnknownToMemory(address + offset); in EmulateSTMDA()
4811 Rn - (address + offset)); in EmulateSTMDA()
4812 if (!MemAWrite(context, address + offset, data, addr_byte_size)) in EmulateSTMDA()
4831 if (!MemAWrite(context, address + offset, pc, addr_byte_size)) in EmulateSTMDA()
4859 address = R[n] - 4*BitCount(registers); in EmulateSTMDB()
4864 MemA[address,4] = bits(32) UNKNOWN; // Only possible for encoding A1 in EmulateSTMDB()
4866 MemA[address,4] = R[i]; in EmulateSTMDB()
4867 address = address + 4; in EmulateSTMDB()
4870 MemA[address,4] = PCStoreValue(); in EmulateSTMDB()
4931 addr_t address = Rn - (addr_byte_size * BitCount(registers)); in EmulateSTMDB() local
4949 WriteBits32UnknownToMemory(address + offset); in EmulateSTMDB()
4960 Rn - (address + offset)); in EmulateSTMDB()
4961 if (!MemAWrite(context, address + offset, data, addr_byte_size)) in EmulateSTMDB()
4980 if (!MemAWrite(context, address + offset, pc, addr_byte_size)) in EmulateSTMDB()
5008 address = R[n] + 4; in EmulateSTMIB()
5013 MemA[address,4] = bits(32) UNKNOWN; in EmulateSTMIB()
5015 MemA[address,4] = R[i]; in EmulateSTMIB()
5016 address = address + 4; in EmulateSTMIB()
5019 MemA[address,4] = PCStoreValue(); in EmulateSTMIB()
5054 addr_t address = Rn + addr_byte_size; in EmulateSTMIB() local
5071 WriteBits32UnknownToMemory(address + offset); in EmulateSTMIB()
5084 if (!MemAWrite(context, address + offset, data, addr_byte_size)) in EmulateSTMIB()
5103 if (!MemAWrite(context, address + offset, pc, addr_byte_size)) in EmulateSTMIB()
5131 address = if index then offset_addr else R[n]; in EmulateSTRThumb()
5132 if UnalignedSupport() || address<1:0> == '00' then in EmulateSTRThumb()
5133 MemU[address,4] = R[t]; in EmulateSTRThumb()
5135 MemU[address,4] = bits(32) UNKNOWN; in EmulateSTRThumb()
5225 addr_t address; in EmulateSTRThumb() local
5239 address = offset_addr; in EmulateSTRThumb()
5241 address = base_address; in EmulateSTRThumb()
5254 (BitIsClear(address, 1) && BitIsClear(address, 0))) { in EmulateSTRThumb()
5263 int32_t offset = address - base_address; in EmulateSTRThumb()
5265 if (!MemUWrite(context, address, data, addr_byte_size)) in EmulateSTRThumb()
5269 WriteBits32UnknownToMemory(address); in EmulateSTRThumb()
5299 address = if index then offset_addr else R[n]; in EmulateSTRRegister()
5304 if UnalignedSupport() || address<1:0> == '00' || CurrentInstrSet() == InstrSet_ARM then in EmulateSTRRegister()
5305 MemU[address,4] = data; in EmulateSTRRegister()
5307 MemU[address,4] = bits(32) UNKNOWN; in EmulateSTRRegister()
5402 addr_t address; in EmulateSTRRegister() local
5428 address = offset_addr; in EmulateSTRRegister()
5430 address = base_address; in EmulateSTRRegister()
5451 (BitIsClear(address, 1) && BitIsClear(address, 0)) || in EmulateSTRRegister()
5462 address - base_address); in EmulateSTRRegister()
5463 if (!MemUWrite(context, address, data, addr_byte_size)) in EmulateSTRRegister()
5468 WriteBits32UnknownToMemory(address); in EmulateSTRRegister()
5488 address = if index then offset_addr else R[n]; in EmulateSTRBThumb()
5489 MemU[address,1] = R[t]<7:0>; in EmulateSTRBThumb()
5562 addr_t address; in EmulateSTRBThumb() local
5576 address = offset_addr; in EmulateSTRBThumb()
5578 address = base_address; in EmulateSTRBThumb()
5590 address - base_address); in EmulateSTRBThumb()
5599 if (!MemUWrite(context, address, data, 1)) in EmulateSTRBThumb()
5626 address = if index then offset_addr else R[n]; in EmulateSTRHRegister()
5627 if UnalignedSupport() || address<0> == '0' then in EmulateSTRHRegister()
5628 MemU[address,2] = R[t]<15:0>; in EmulateSTRHRegister()
5630 MemU[address,2] = bits(16) UNKNOWN; in EmulateSTRHRegister()
5743 addr_t address; in EmulateSTRHRegister() local
5745 address = offset_addr; in EmulateSTRHRegister()
5747 address = Rn; in EmulateSTRHRegister()
5757 if (UnalignedSupport() || BitIsClear(address, 0)) { in EmulateSTRHRegister()
5774 if (!MemUWrite(context, address, Bits32(Rt, 15, 0), 2)) in EmulateSTRHRegister()
6349 address = if index then offset_addr else R[n]; in EmulateLDRImmediateARM()
6350 data = MemU[address,4]; in EmulateLDRImmediateARM()
6353 if address<1:0> == '00' then LoadWritePC(data); else UNPREDICTABLE; in EmulateLDRImmediateARM()
6354 elsif UnalignedSupport() || address<1:0> = '00' then in EmulateLDRImmediateARM()
6357 R[t] = ROR(data, 8*UInt(address<1:0>)); in EmulateLDRImmediateARM()
6399 addr_t address; in EmulateLDRImmediateARM() local
6413 address = offset_addr; in EmulateLDRImmediateARM()
6415 address = base_address; in EmulateLDRImmediateARM()
6424 context.SetRegisterPlusOffset(base_reg, address - base_address); in EmulateLDRImmediateARM()
6426 uint64_t data = MemURead(context, address, addr_byte_size, 0, &success); in EmulateLDRImmediateARM()
6442 if (BitIsClear(address, 1) && BitIsClear(address, 0)) { in EmulateLDRImmediateARM()
6445 context.SetRegisterPlusOffset(base_reg, address - base_address); in EmulateLDRImmediateARM()
6452 (BitIsClear(address, 1) && BitIsClear(address, 0))) { in EmulateLDRImmediateARM()
6455 context.SetRegisterPlusOffset(base_reg, address - base_address); in EmulateLDRImmediateARM()
6463 data = ROR(data, Bits32(address, 1, 0), &success); in EmulateLDRImmediateARM()
6487 address = if index then offset_addr else R[n]; in EmulateLDRRegister()
6488 data = MemU[address,4]; in EmulateLDRRegister()
6491 if address<1:0> == '00' then LoadWritePC(data); else UNPREDICTABLE; in EmulateLDRRegister()
6492 elsif UnalignedSupport() || address<1:0> = '00' then in EmulateLDRRegister()
6496 R[t] = ROR(data, 8*UInt(address<1:0>)); in EmulateLDRRegister()
6603 addr_t address; in EmulateLDRRegister() local
6620 address = offset_addr; in EmulateLDRRegister()
6622 address = Rn; in EmulateLDRRegister()
6630 context.SetRegisterPlusOffset(base_reg, address - Rn); in EmulateLDRRegister()
6632 uint64_t data = MemURead(context, address, addr_byte_size, 0, &success); in EmulateLDRRegister()
6648 if (BitIsClear(address, 1) && BitIsClear(address, 0)) { in EmulateLDRRegister()
6650 context.SetRegisterPlusOffset(base_reg, address - Rn); in EmulateLDRRegister()
6657 (BitIsClear(address, 1) && BitIsClear(address, 0))) { in EmulateLDRRegister()
6660 context.SetRegisterPlusOffset(base_reg, address - Rn); in EmulateLDRRegister()
6669 data = ROR(data, Bits32(address, 1, 0), &success); in EmulateLDRRegister()
6693 address = if index then offset_addr else R[n]; in EmulateLDRBImmediate()
6694 R[t] = ZeroExtend(MemU[address,1], 32); in EmulateLDRBImmediate()
6787 addr_t address; in EmulateLDRBImmediate() local
6798 address = offset_addr; in EmulateLDRBImmediate()
6800 address = Rn; in EmulateLDRBImmediate()
6810 context.SetRegisterToRegisterPlusOffset(data_reg, base_reg, address - Rn); in EmulateLDRBImmediate()
6812 uint64_t data = MemURead(context, address, 1, 0, &success); in EmulateLDRBImmediate()
6840 address = if add then (base + imm32) else (base - imm32); in EmulateLDRBLiteral()
6841 R[t] = ZeroExtend(MemU[address,1], 32); in EmulateLDRBLiteral()
6889 addr_t address; in EmulateLDRBLiteral() local
6892 address = base + imm32; in EmulateLDRBLiteral()
6894 address = base - imm32; in EmulateLDRBLiteral()
6899 context.SetImmediate(address - base); in EmulateLDRBLiteral()
6901 uint64_t data = MemURead(context, address, 1, 0, &success); in EmulateLDRBLiteral()
6922 address = if index then offset_addr else R[n]; in EmulateLDRBRegister()
6923 R[t] = ZeroExtend(MemU[address,1],32); in EmulateLDRBRegister()
7017 addr_t address; in EmulateLDRBRegister() local
7042 address = offset_addr; in EmulateLDRBRegister()
7044 address = Rn; in EmulateLDRBRegister()
7052 context.SetRegisterPlusOffset(base_reg, address - Rn); in EmulateLDRBRegister()
7054 uint64_t data = MemURead(context, address, 1, 0, &success); in EmulateLDRBRegister()
7083 address = if index then offset_addr else R[n]; in EmulateLDRHImmediate()
7084 data = MemU[address,2]; in EmulateLDRHImmediate()
7086 if UnalignedSupport() || address<0> = '0' then in EmulateLDRHImmediate()
7170 addr_t address; in EmulateLDRHImmediate() local
7179 address = offset_addr; in EmulateLDRHImmediate()
7181 address = Rn; in EmulateLDRHImmediate()
7189 context.SetRegisterPlusOffset(base_reg, address - Rn); in EmulateLDRHImmediate()
7191 uint64_t data = MemURead(context, address, 2, 0, &success); in EmulateLDRHImmediate()
7205 if (UnalignedSupport() || BitIsClear(address, 0)) { in EmulateLDRHImmediate()
7208 context.SetRegisterPlusOffset(base_reg, address - Rn); in EmulateLDRHImmediate()
7230 address = if add then (base + imm32) else (base - imm32); in EmulateLDRHLiteral()
7231 data = MemU[address,2]; in EmulateLDRHLiteral()
7232 if UnalignedSupport() || address<0> = '0' then in EmulateLDRHLiteral()
7285 addr_t address; in EmulateLDRHLiteral() local
7289 address = base + imm32; in EmulateLDRHLiteral()
7291 address = base - imm32; in EmulateLDRHLiteral()
7299 context.SetRegisterPlusOffset(base_reg, address - base); in EmulateLDRHLiteral()
7301 uint64_t data = MemURead(context, address, 2, 0, &success); in EmulateLDRHLiteral()
7306 if (UnalignedSupport() || BitIsClear(address, 0)) { in EmulateLDRHLiteral()
7309 context.SetRegisterPlusOffset(base_reg, address - base); in EmulateLDRHLiteral()
7335 address = if index then offset_addr else R[n]; in EmulateLDRHRegister()
7336 data = MemU[address,2]; in EmulateLDRHRegister()
7338 if UnalignedSupport() || address<0> = '0' then in EmulateLDRHRegister()
7442 addr_t address; in EmulateLDRHRegister() local
7457 address = offset_addr; in EmulateLDRHRegister()
7459 address = Rn; in EmulateLDRHRegister()
7470 uint64_t data = MemURead(context, address, 2, 0, &success); in EmulateLDRHRegister()
7484 if (UnalignedSupport() || BitIsClear(address, 0)) { in EmulateLDRHRegister()
7510 address = if index then offset_addr else R[n]; in EmulateLDRSBImmediate()
7511 R[t] = SignExtend(MemU[address,1], 32); in EmulateLDRSBImmediate()
7606 addr_t address; in EmulateLDRSBImmediate() local
7616 address = offset_addr; in EmulateLDRSBImmediate()
7618 address = Rn; in EmulateLDRSBImmediate()
7626 context.SetRegisterPlusOffset(base_reg, address - Rn); in EmulateLDRSBImmediate()
7628 uint64_t unsigned_data = MemURead(context, address, 1, 0, &success); in EmulateLDRSBImmediate()
7659 address = if add then (base + imm32) else (base - imm32); in EmulateLDRSBLiteral()
7660 R[t] = SignExtend(MemU[address,1], 32); in EmulateLDRSBLiteral()
7711 addr_t address; in EmulateLDRSBLiteral() local
7713 address = base + imm32; in EmulateLDRSBLiteral()
7715 address = base - imm32; in EmulateLDRSBLiteral()
7723 context.SetRegisterPlusOffset(base_reg, address - base); in EmulateLDRSBLiteral()
7725 uint64_t unsigned_data = MemURead(context, address, 1, 0, &success); in EmulateLDRSBLiteral()
7748 address = if index then offset_addr else R[n]; in EmulateLDRSBRegister()
7749 R[t] = SignExtend(MemU[address,1], 32); in EmulateLDRSBRegister()
7847 addr_t address; in EmulateLDRSBRegister() local
7862 address = offset_addr; in EmulateLDRSBRegister()
7864 address = Rn; in EmulateLDRSBRegister()
7876 uint64_t unsigned_data = MemURead(context, address, 1, 0, &success); in EmulateLDRSBRegister()
7907 address = if index then offset_addr else R[n]; in EmulateLDRSHImmediate()
7908 data = MemU[address,2]; in EmulateLDRSHImmediate()
7910 if UnalignedSupport() || address<0> = '0' then in EmulateLDRSHImmediate()
8012 addr_t address; in EmulateLDRSHImmediate() local
8014 address = offset_addr; in EmulateLDRSHImmediate()
8016 address = Rn; in EmulateLDRSHImmediate()
8024 context.SetRegisterPlusOffset(base_reg, address - Rn); in EmulateLDRSHImmediate()
8026 uint64_t data = MemURead(context, address, 2, 0, &success); in EmulateLDRSHImmediate()
8040 if (UnalignedSupport() || BitIsClear(address, 0)) { in EmulateLDRSHImmediate()
8044 context.SetRegisterPlusOffset(base_reg, address - Rn); in EmulateLDRSHImmediate()
8066 address = if add then (base + imm32) else (base - imm32); in EmulateLDRSHLiteral()
8067 data = MemU[address,2]; in EmulateLDRSHLiteral()
8068 if UnalignedSupport() || address<0> = '0' then in EmulateLDRSHLiteral()
8121 addr_t address; in EmulateLDRSHLiteral() local
8124 address = base + imm32; in EmulateLDRSHLiteral()
8126 address = base - imm32; in EmulateLDRSHLiteral()
8136 uint64_t data = MemURead(context, address, 2, 0, &success); in EmulateLDRSHLiteral()
8141 if (UnalignedSupport() || BitIsClear(address, 0)) { in EmulateLDRSHLiteral()
8168 address = if index then offset_addr else R[n]; in EmulateLDRSHRegister()
8169 data = MemU[address,2]; in EmulateLDRSHRegister()
8171 if UnalignedSupport() || address<0> = '0' then in EmulateLDRSHRegister()
8280 addr_t address; in EmulateLDRSHRegister() local
8290 address = offset_addr; in EmulateLDRSHRegister()
8292 address = Rn; in EmulateLDRSHRegister()
8305 uint64_t data = MemURead(context, address, 2, 0, &success); in EmulateLDRSHRegister()
8319 if (UnalignedSupport() || BitIsClear(address, 0)) { in EmulateLDRSHRegister()
8683 address = if increment then R[n] else R[n]-8; in EmulateRFE()
8684 if wordhigher then address = address+4; in EmulateRFE()
8685 CPSRWriteByInstr(MemA[address+4,4], '1111', TRUE); in EmulateRFE()
8686 BranchWritePC(MemA[address,4]); in EmulateRFE()
8765 addr_t address; in EmulateRFE() local
8768 address = Rn; in EmulateRFE()
8770 address = Rn - 8; in EmulateRFE()
8774 address = address + 4; in EmulateRFE()
8782 context.SetRegisterPlusOffset(base_reg, address - Rn); in EmulateRFE()
8784 uint64_t data = MemARead(context, address + 4, 4, 0, &success); in EmulateRFE()
8791 uint64_t data2 = MemARead(context, address, 4, 0, &success); in EmulateRFE()
10341 address = R[n] + imm32; in EmulateSTREX()
10342 if ExclusiveMonitorsPass(address,4) then in EmulateSTREX()
10343 MemA[address,4] = R[t]; in EmulateSTREX()
10405 addr_t address = Rn + imm32; in EmulateSTREX() local
10427 if (!MemAWrite(context, address, Rt, addr_byte_size)) in EmulateSTREX()
10453 address = if index then offset_addr else R[n]; in EmulateSTRBImmARM()
10454 MemU[address,1] = R[t]<7:0>; in EmulateSTRBImmARM()
10507 addr_t address; in EmulateSTRBImmARM() local
10509 address = offset_addr; in EmulateSTRBImmARM()
10511 address = Rn; in EmulateSTRBImmARM()
10524 context.SetRegisterToRegisterPlusOffset(data_reg, base_reg, address - Rn); in EmulateSTRBImmARM()
10526 if (!MemUWrite(context, address, Bits32(Rt, 7, 0), 1)) in EmulateSTRBImmARM()
10546 address = if index then offset_addr else R[n]; in EmulateSTRImmARM()
10547 MemU[address,4] = if t == 15 then PCStoreValue() else R[t]; in EmulateSTRImmARM()
10600 addr_t address; in EmulateSTRImmARM() local
10602 address = offset_addr; in EmulateSTRImmARM()
10604 address = Rn; in EmulateSTRImmARM()
10612 context.SetRegisterToRegisterPlusOffset(data_reg, base_reg, address - Rn); in EmulateSTRImmARM()
10624 if (!MemUWrite(context, address, pc_value, addr_byte_size)) in EmulateSTRImmARM()
10627 if (!MemUWrite(context, address, Rt, addr_byte_size)) in EmulateSTRImmARM()
10655 address = if index then offset_addr else R[n]; in EmulateLDRDImmediate()
10656 R[t] = MemA[address,4]; in EmulateLDRDImmediate()
10657 R[t2] = MemA[address+4,4]; in EmulateLDRDImmediate()
10745 addr_t address; in EmulateLDRDImmediate() local
10747 address = offset_addr; in EmulateLDRDImmediate()
10749 address = Rn; in EmulateLDRDImmediate()
10760 context.SetAddress(address); in EmulateLDRDImmediate()
10763 uint32_t data = MemARead(context, address, addr_byte_size, 0, &success); in EmulateLDRDImmediate()
10771 context.SetAddress(address + 4); in EmulateLDRDImmediate()
10772 data = MemARead(context, address + 4, addr_byte_size, 0, &success); in EmulateLDRDImmediate()
10803 address = if index then offset_addr else R[n]; in EmulateLDRDRegister()
10804 R[t] = MemA[address,4]; in EmulateLDRDRegister()
10805 R[t2] = MemA[address+4,4]; in EmulateLDRDRegister()
10877 addr_t address; in EmulateLDRDRegister() local
10879 address = offset_addr; in EmulateLDRDRegister()
10881 address = Rn; in EmulateLDRDRegister()
10888 context.SetAddress(address); in EmulateLDRDRegister()
10892 uint32_t data = MemARead(context, address, addr_byte_size, 0, &success); in EmulateLDRDRegister()
10901 data = MemARead(context, address + 4, addr_byte_size, 0, &success); in EmulateLDRDRegister()
10932 address = if index then offset_addr else R[n]; in EmulateSTRDImm()
10933 MemA[address,4] = R[t]; in EmulateSTRDImm()
10934 MemA[address+4,4] = R[t2]; in EmulateSTRDImm()
11024 addr_t address; in EmulateSTRDImm() local
11026 address = offset_addr; in EmulateSTRDImm()
11028 address = Rn; in EmulateSTRDImm()
11043 context.SetRegisterToRegisterPlusOffset(data_reg, base_reg, address - Rn); in EmulateSTRDImm()
11047 if (!MemAWrite(context, address, data, addr_byte_size)) in EmulateSTRDImm()
11053 (address + 4) - Rn); in EmulateSTRDImm()
11059 if (!MemAWrite(context, address + 4, data, addr_byte_size)) in EmulateSTRDImm()
11085 address = if index then offset_addr else R[n]; in EmulateSTRDReg()
11086 MemA[address,4] = R[t]; in EmulateSTRDReg()
11087 MemA[address+4,4] = R[t2]; in EmulateSTRDReg()
11163 addr_t address; in EmulateSTRDReg() local
11165 address = offset_addr; in EmulateSTRDReg()
11167 address = Rn; in EmulateSTRDReg()
11185 if (!MemAWrite(context, address, Rt, addr_byte_size)) in EmulateSTRDReg()
11198 if (!MemAWrite(context, address + 4, Rt2, addr_byte_size)) in EmulateSTRDReg()
11222 address = if add then R[n] else R[n]-imm32; in EmulateVLDM()
11226 S[d+r] = MemA[address,4]; address = address+4; in EmulateVLDM()
11228 word1 = MemA[address,4]; word2 = MemA[address+4,4]; address = address+8; in EmulateVLDM()
11326 addr_t address; in EmulateVLDM() local
11328 address = Rn; in EmulateVLDM()
11330 address = Rn - imm32; in EmulateVLDM()
11358 context.SetRegisterPlusOffset(base_reg, address - Rn); in EmulateVLDM()
11360 uint32_t data = MemARead(context, address, addr_byte_size, 0, &success); in EmulateVLDM()
11368 address = address + 4; in EmulateVLDM()
11372 context.SetRegisterPlusOffset(base_reg, address - Rn); in EmulateVLDM()
11374 MemARead(context, address, addr_byte_size, 0, &success); in EmulateVLDM()
11378 context.SetRegisterPlusOffset(base_reg, (address + 4) - Rn); in EmulateVLDM()
11380 MemARead(context, address + 4, addr_byte_size, 0, &success); in EmulateVLDM()
11384 address = address + 8; in EmulateVLDM()
11415 address = if add then R[n] else R[n]-imm32; in EmulateVSTM()
11419 MemA[address,4] = S[d+r]; address = address+4; in EmulateVSTM()
11423 MemA[address,4] = if BigEndian() then D[d+r]<63:32> else D[d+r]<31:0>; in EmulateVSTM()
11424 MemA[address+4,4] = if BigEndian() then D[d+r]<31:0> else D[d+r]<63:32>; in EmulateVSTM()
11425 address = address+8; in EmulateVSTM()
11521 addr_t address; in EmulateVSTM() local
11523 address = Rn; in EmulateVSTM()
11525 address = Rn - imm32; in EmulateVSTM()
11561 address - Rn); in EmulateVSTM()
11562 if (!MemAWrite(context, address, data, addr_byte_size)) in EmulateVSTM()
11565 address = address + 4; in EmulateVSTM()
11582 address - Rn); in EmulateVSTM()
11583 if (!MemAWrite(context, address, Bits64(data, 63, 32), in EmulateVSTM()
11588 (address + 4) - Rn); in EmulateVSTM()
11589 if (!MemAWrite(context, address + 4, Bits64(data, 31, 0), in EmulateVSTM()
11594 address - Rn); in EmulateVSTM()
11595 if (!MemAWrite(context, address, Bits64(data, 31, 0), addr_byte_size)) in EmulateVSTM()
11599 (address + 4) - Rn); in EmulateVSTM()
11600 if (!MemAWrite(context, address + 4, Bits64(data, 63, 32), in EmulateVSTM()
11605 address = address + 8; in EmulateVSTM()
11621 address = if add then (base + imm32) else (base - imm32); in EmulateVLDR()
11623 S[d] = MemA[address,4]; in EmulateVLDR()
11625 word1 = MemA[address,4]; word2 = MemA[address+4,4]; in EmulateVLDR()
11686 addr_t address; in EmulateVLDR() local
11688 address = base + imm32; in EmulateVLDR()
11690 address = base - imm32; in EmulateVLDR()
11697 context.SetRegisterPlusOffset(base_reg, address - base); in EmulateVLDR()
11701 uint32_t data = MemARead(context, address, addr_byte_size, 0, &success); in EmulateVLDR()
11710 uint32_t word1 = MemARead(context, address, addr_byte_size, 0, &success); in EmulateVLDR()
11714 context.SetRegisterPlusOffset(base_reg, (address + 4) - base); in EmulateVLDR()
11716 MemARead(context, address + 4, addr_byte_size, 0, &success); in EmulateVLDR()
11747 address = if add then (R[n] + imm32) else (R[n] - imm32); in EmulateVSTR()
11749 MemA[address,4] = S[d]; in EmulateVSTR()
11753 MemA[address,4] = if BigEndian() then D[d]<63:32> else D[d]<31:0>; in EmulateVSTR()
11754 MemA[address+4,4] = if BigEndian() then D[d]<31:0> else D[d]<63:32>; in EmulateVSTR()
11814 addr_t address; in EmulateVSTR() local
11816 address = Rn + imm32; in EmulateVSTR()
11818 address = Rn - imm32; in EmulateVSTR()
11827 context.SetRegisterToRegisterPlusOffset(data_reg, base_reg, address - Rn); in EmulateVSTR()
11836 if (!MemAWrite(context, address, data, addr_byte_size)) in EmulateVSTR()
11849 if (!MemAWrite(context, address, Bits64(data, 63, 32), addr_byte_size)) in EmulateVSTR()
11853 (address + 4) - Rn); in EmulateVSTR()
11854 if (!MemAWrite(context, address + 4, Bits64(data, 31, 0), in EmulateVSTR()
11858 if (!MemAWrite(context, address, Bits64(data, 31, 0), addr_byte_size)) in EmulateVSTR()
11862 (address + 4) - Rn); in EmulateVSTR()
11863 if (!MemAWrite(context, address + 4, Bits64(data, 63, 32), in EmulateVSTR()
11880 address = R[n]; if (address MOD alignment) != 0 then GenerateAlignmentException(); in EmulateVLD1Multiple()
11884 Elem[D[d+r],e,esize] = MemU[address,ebytes]; in EmulateVLD1Multiple()
11885 address = address + ebytes; in EmulateVLD1Multiple()
11978 addr_t address = Rn; in EmulateVLD1Multiple() local
11979 if ((address % alignment) != 0) in EmulateVLD1Multiple()
12011 context.SetRegisterPlusOffset(base_reg, address - Rn); in EmulateVLD1Multiple()
12012 uint64_t data = MemURead(context, address, ebytes, 0, &success); in EmulateVLD1Multiple()
12021 address = address + ebytes; in EmulateVLD1Multiple()
12038 address = R[n]; if (address MOD alignment) != 0 then GenerateAlignmentException(); in EmulateVLD1Single()
12040 Elem[D[d],index,esize] = MemU[address,ebytes]; in EmulateVLD1Single()
12145 addr_t address = Rn; in EmulateVLD1Single() local
12146 if ((address % alignment) != 0) in EmulateVLD1Single()
12173 uint32_t element = MemURead(context, address, esize, 0, &success); in EmulateVLD1Single()
12215 address = R[n]; if (address MOD alignment) != 0 then GenerateAlignmentException(); in EmulateVST1Multiple()
12219 MemU[address,ebytes] = Elem[D[d+r],e,esize]; in EmulateVST1Multiple()
12220 address = address + ebytes; in EmulateVST1Multiple()
12311 addr_t address = Rn; in EmulateVST1Multiple() local
12312 if ((address % alignment) != 0) in EmulateVST1Multiple()
12352 address - Rn); in EmulateVST1Multiple()
12353 if (!MemUWrite(context, address, word, ebytes)) in EmulateVST1Multiple()
12357 address = address + ebytes; in EmulateVST1Multiple()
12371 address = R[n]; if (address MOD alignment) != 0 then GenerateAlignmentException(); in EmulateVST1Single()
12373 MemU[address,ebytes] = Elem[D[d],index,esize]; in EmulateVST1Single()
12478 addr_t address = Rn; in EmulateVST1Single() local
12479 if ((address % alignment) != 0) in EmulateVST1Single()
12515 context.SetRegisterToRegisterPlusOffset(data_reg, base_reg, address - Rn); in EmulateVST1Single()
12517 if (!MemUWrite(context, address, word, ebytes)) in EmulateVST1Single()
12530 address = R[n]; if (address MOD alignment) != 0 then GenerateAlignmentException(); in EmulateVLD1SingleAll()
12532 replicated_element = Replicate(MemU[address,ebytes], elements); in EmulateVLD1SingleAll()
12603 addr_t address = Rn; in EmulateVLD1SingleAll() local
12604 if ((address % alignment) != 0) in EmulateVLD1SingleAll()
12631 uint64_t word = MemURead(context, address, ebytes, 0, &success); in EmulateVLD1SingleAll()