ldr.isa (7294:fda2c00880db) | ldr.isa (7296:27c60324ec4d) |
---|---|
1// -*- mode:c++ -*- 2 3// Copyright (c) 2010 ARM Limited 4// All rights reserved 5// 6// The license below extends only to copyright in the software and shall 7// not be construed as granting a license to any other intellectual 8// property including but not limited to intellectual property relating --- 90 unchanged lines hidden (view full) --- 99 accCode = ''' 100 uint64_t temp = Mem%s;\n 101 temp = temp; 102 ''' % buildMemSuffix(sign, size) 103 else: 104 if ldrex: 105 memFlags.append("Request::LLSC") 106 Name = "%s_%s" % (mnem.upper(), Name) | 1// -*- mode:c++ -*- 2 3// Copyright (c) 2010 ARM Limited 4// All rights reserved 5// 6// The license below extends only to copyright in the software and shall 7// not be construed as granting a license to any other intellectual 8// property including but not limited to intellectual property relating --- 90 unchanged lines hidden (view full) --- 99 accCode = ''' 100 uint64_t temp = Mem%s;\n 101 temp = temp; 102 ''' % buildMemSuffix(sign, size) 103 else: 104 if ldrex: 105 memFlags.append("Request::LLSC") 106 Name = "%s_%s" % (mnem.upper(), Name) |
107 accCode = "IWDest = Mem%s;\n" % buildMemSuffix(sign, size) | 107 accCode = "IWDest = cSwap(Mem%s, ((CPSR)Cpsr).e);" % \ 108 buildMemSuffix(sign, size) |
108 109 if not prefetch and not ldrex: 110 memFlags.append("ArmISA::TLB::AllowUnaligned") 111 112 if writeback: 113 accCode += "Base = Base %s;\n" % offset 114 base = buildMemBase("MemoryImm", post, writeback) 115 --- 10 unchanged lines hidden (view full) --- 126 offset -= 8 127 128 eaCode = "EA = Base + %d;" % offset 129 130 wbDiff = -8 131 if add: 132 wbDiff = 8 133 accCode = ''' | 109 110 if not prefetch and not ldrex: 111 memFlags.append("ArmISA::TLB::AllowUnaligned") 112 113 if writeback: 114 accCode += "Base = Base %s;\n" % offset 115 base = buildMemBase("MemoryImm", post, writeback) 116 --- 10 unchanged lines hidden (view full) --- 127 offset -= 8 128 129 eaCode = "EA = Base + %d;" % offset 130 131 wbDiff = -8 132 if add: 133 wbDiff = 8 134 accCode = ''' |
134 NPC = bits(Mem.ud, 31, 0); 135 uint32_t newCpsr = cpsrWriteByInstr(Cpsr | CondCodes, 136 bits(Mem.ud, 63, 32), 137 0xF, true); | 135 CPSR cpsr = Cpsr; 136 NPC = cSwap<uint32_t>(Mem.ud, cpsr.e); 137 uint32_t newCpsr = 138 cpsrWriteByInstr(cpsr | CondCodes, 139 cSwap<uint32_t>(Mem.ud >> 32, cpsr.e), 140 0xF, true); |
138 Cpsr = ~CondCodesMask & newCpsr; 139 CondCodes = CondCodesMask & newCpsr; 140 ''' 141 if writeback: 142 accCode += "Base = Base + %s;\n" % wbDiff 143 144 global header_output, decoder_output, exec_output 145 --- 28 unchanged lines hidden (view full) --- 174 if prefetch: 175 Name = "%s_%s" % (mnem.upper(), Name) 176 memFlags.append("Request::PREFETCH") 177 accCode = ''' 178 uint64_t temp = Mem%s;\n 179 temp = temp; 180 ''' % buildMemSuffix(sign, size) 181 else: | 141 Cpsr = ~CondCodesMask & newCpsr; 142 CondCodes = CondCodesMask & newCpsr; 143 ''' 144 if writeback: 145 accCode += "Base = Base + %s;\n" % wbDiff 146 147 global header_output, decoder_output, exec_output 148 --- 28 unchanged lines hidden (view full) --- 177 if prefetch: 178 Name = "%s_%s" % (mnem.upper(), Name) 179 memFlags.append("Request::PREFETCH") 180 accCode = ''' 181 uint64_t temp = Mem%s;\n 182 temp = temp; 183 ''' % buildMemSuffix(sign, size) 184 else: |
182 accCode = "IWDest = Mem%s;\n" % buildMemSuffix(sign, size) | 185 accCode = "IWDest = cSwap(Mem%s, ((CPSR)Cpsr).e);" % \ 186 buildMemSuffix(sign, size) |
183 if writeback: 184 accCode += "Base = Base %s;\n" % offset 185 186 if not prefetch: 187 memFlags.append("ArmISA::TLB::AllowUnaligned") 188 189 base = buildMemBase("MemoryReg", post, writeback) 190 --- 11 unchanged lines hidden (view full) --- 202 203 offset = op + " imm" 204 eaCode = "EA = Base" 205 if not post: 206 eaCode += offset 207 eaCode += ";" 208 209 accCode = ''' | 187 if writeback: 188 accCode += "Base = Base %s;\n" % offset 189 190 if not prefetch: 191 memFlags.append("ArmISA::TLB::AllowUnaligned") 192 193 base = buildMemBase("MemoryReg", post, writeback) 194 --- 11 unchanged lines hidden (view full) --- 206 207 offset = op + " imm" 208 eaCode = "EA = Base" 209 if not post: 210 eaCode += offset 211 eaCode += ";" 212 213 accCode = ''' |
210 Dest = bits(Mem.ud, 31, 0); 211 Dest2 = bits(Mem.ud, 63, 32); | 214 CPSR cpsr = Cpsr; 215 Dest = cSwap<uint32_t>(Mem.ud, cpsr.e); 216 Dest2 = cSwap<uint32_t>(Mem.ud >> 32, cpsr.e); |
212 ''' 213 if ldrex: 214 memFlags = ["Request::LLSC"] 215 Name = "%s_%s" % (mnem.upper(), Name) 216 else: 217 memFlags = [] 218 if writeback: 219 accCode += "Base = Base %s;\n" % offset --- 17 unchanged lines hidden (view full) --- 237 offset = op + " shift_rm_imm(Index, shiftAmt," + \ 238 " shiftType, CondCodes<29:>)" 239 eaCode = "EA = Base" 240 if not post: 241 eaCode += offset 242 eaCode += ";" 243 244 accCode = ''' | 217 ''' 218 if ldrex: 219 memFlags = ["Request::LLSC"] 220 Name = "%s_%s" % (mnem.upper(), Name) 221 else: 222 memFlags = [] 223 if writeback: 224 accCode += "Base = Base %s;\n" % offset --- 17 unchanged lines hidden (view full) --- 242 offset = op + " shift_rm_imm(Index, shiftAmt," + \ 243 " shiftType, CondCodes<29:>)" 244 eaCode = "EA = Base" 245 if not post: 246 eaCode += offset 247 eaCode += ";" 248 249 accCode = ''' |
245 Dest = bits(Mem.ud, 31, 0); 246 Dest2 = bits(Mem.ud, 63, 32); | 250 CPSR cpsr = Cpsr; 251 Dest = cSwap<uint32_t>(Mem.ud, cpsr.e); 252 Dest2 = cSwap<uint32_t>(Mem.ud >> 32, cpsr.e); |
247 ''' 248 if writeback: 249 accCode += "Base = Base %s;\n" % offset 250 base = buildMemBase("MemoryDReg", post, writeback) 251 252 emitLoad(name, Name, False, eaCode, accCode, 253 ["ArmISA::TLB::MustBeOne", "ArmISA::TLB::AlignWord"], 254 [], base, double=True) --- 69 unchanged lines hidden --- | 253 ''' 254 if writeback: 255 accCode += "Base = Base %s;\n" % offset 256 base = buildMemBase("MemoryDReg", post, writeback) 257 258 emitLoad(name, Name, False, eaCode, accCode, 259 ["ArmISA::TLB::MustBeOne", "ArmISA::TLB::AlignWord"], 260 [], base, double=True) --- 69 unchanged lines hidden --- |