1// -*- mode:c++ -*- 2 |
3// Copyright (c) 2010-2014 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 9// to a hardware implementation of the functionality of the software 10// licensed hereunder. You may use the software subject to the license 11// terms below provided that you ensure that this notice is replicated --- 38 unchanged lines hidden (view full) --- 50 microLdrUopCode = "IWRa = cSwap(Mem_uw, ((CPSR)Cpsr).e);" 51 microLdrUopIop = InstObjParams('ldr_uop', 'MicroLdrUop', 52 'MicroMemOp', 53 {'memacc_code': microLdrUopCode, 54 'ea_code': 'EA = URb + (up ? imm : -imm);', 55 'predicate_test': predicateTest}, 56 ['IsMicroop']) 57 |
58 microLdr2UopCode = ''' 59 uint64_t data = Mem_ud; 60 Dest = cSwap((uint32_t) data, ((CPSR)Cpsr).e); 61 Dest2 = cSwap((uint32_t) (data >> 32), ((CPSR)Cpsr).e); 62 ''' 63 microLdr2UopIop = InstObjParams('ldr2_uop', 'MicroLdr2Uop', 64 'MicroMemPairOp', 65 {'memacc_code': microLdr2UopCode, 66 'ea_code': 'EA = URb + (up ? imm : -imm);', 67 'predicate_test': predicateTest}, 68 ['IsMicroop']) 69 |
70 microLdrFpUopCode = "Fa_uw = cSwap(Mem_uw, ((CPSR)Cpsr).e);" 71 microLdrFpUopIop = InstObjParams('ldrfp_uop', 'MicroLdrFpUop', 72 'MicroMemOp', 73 {'memacc_code': microLdrFpUopCode, 74 'ea_code': vfpEnabledCheckCode + 75 'EA = URb + (up ? imm : -imm);', 76 'predicate_test': predicateTest}, 77 ['IsMicroop']) --- 88 unchanged lines hidden (view full) --- 166 EA = URb + (up ? imm : -imm) - 167 (((CPSR)Cpsr).e ? 4 : 0); 168 ''', 169 'predicate_test': predicateTest}, 170 ['IsMicroop']) 171 172 header_output = decoder_output = exec_output = '' 173 |
174 loadIops = (microLdrUopIop, microLdrRetUopIop, 175 microLdrFpUopIop, microLdrDBFpUopIop, microLdrDTFpUopIop) |
176 storeIops = (microStrUopIop, microStrFpUopIop, 177 microStrDBFpUopIop, microStrDTFpUopIop) 178 for iop in loadIops + storeIops: 179 header_output += MicroMemDeclare.subst(iop) 180 decoder_output += MicroMemConstructor.subst(iop) 181 for iop in loadIops: 182 exec_output += LoadExecute.subst(iop) + \ 183 LoadInitiateAcc.subst(iop) + \ 184 LoadCompleteAcc.subst(iop) 185 for iop in storeIops: 186 exec_output += StoreExecute.subst(iop) + \ 187 StoreInitiateAcc.subst(iop) + \ 188 StoreCompleteAcc.subst(iop) |
189 190 header_output += MicroMemPairDeclare.subst(microLdr2UopIop) 191 decoder_output += MicroMemPairConstructor.subst(microLdr2UopIop) 192 exec_output += LoadExecute.subst(microLdr2UopIop) + \ 193 LoadInitiateAcc.subst(microLdr2UopIop) + \ 194 LoadCompleteAcc.subst(microLdr2UopIop) |
195}}; 196 197let {{ 198 exec_output = header_output = '' 199 200 eaCode = 'EA = XURa + imm;' 201 202 for size in (1, 2, 3, 4, 6, 8, 12, 16): --- 576 unchanged lines hidden --- |