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 --- 37 unchanged lines hidden (view full) --- 46// Load/store microops 47// 48 49let {{ 50 predicateTest = 'testPredicate(CondCodes, condCode)' 51}}; 52 53let {{ |
54 microLdrUopCode = "IWRa = cSwap(Mem.uw, ((CPSR)Cpsr).e);" |
55 microLdrUopIop = InstObjParams('ldr_uop', 'MicroLdrUop', 56 'MicroMemOp', |
57 {'memacc_code': microLdrUopCode, |
58 'ea_code': 'EA = Rb + (up ? imm : -imm);', 59 'predicate_test': predicateTest}, 60 ['IsMicroop']) 61 |
62 microLdrFpUopCode = "Fa = cSwap(Mem.uw, ((CPSR)Cpsr).e);" |
63 microLdrFpUopIop = InstObjParams('ldrfp_uop', 'MicroLdrFpUop', 64 'MicroMemOp', |
65 {'memacc_code': microLdrFpUopCode, |
66 'ea_code': 'EA = Rb + (up ? imm : -imm);', 67 'predicate_test': predicateTest}, 68 ['IsMicroop']) 69 70 microLdrRetUopCode = ''' |
71 CPSR cpsr = Cpsr; |
72 uint32_t newCpsr = |
73 cpsrWriteByInstr(cpsr | CondCodes, Spsr, 0xF, true); |
74 Cpsr = ~CondCodesMask & newCpsr; 75 CondCodes = CondCodesMask & newCpsr; |
76 IWNPC = cSwap(Mem.uw, cpsr.e) | ((Spsr & 0x20) ? 1 : 0); |
77 ''' 78 microLdrRetUopIop = InstObjParams('ldr_ret_uop', 'MicroLdrRetUop', 79 'MicroMemOp', 80 {'memacc_code': microLdrRetUopCode, 81 'ea_code': 82 'EA = Rb + (up ? imm : -imm);', 83 'predicate_test': predicateTest}, 84 ['IsMicroop']) 85 |
86 microStrUopCode = "Mem = cSwap(Ra.uw, ((CPSR)Cpsr).e);" |
87 microStrUopIop = InstObjParams('str_uop', 'MicroStrUop', 88 'MicroMemOp', |
89 {'memacc_code': microStrUopCode, |
90 'ea_code': 'EA = Rb + (up ? imm : -imm);', 91 'predicate_test': predicateTest}, 92 ['IsMicroop']) 93 |
94 microStrFpUopCode = "Mem = cSwap(Fa.uw, ((CPSR)Cpsr).e);" |
95 microStrFpUopIop = InstObjParams('strfp_uop', 'MicroStrFpUop', 96 'MicroMemOp', |
97 {'memacc_code': microStrFpUopCode, |
98 'ea_code': 'EA = Rb + (up ? imm : -imm);', 99 'predicate_test': predicateTest}, 100 ['IsMicroop']) 101 102 header_output = decoder_output = exec_output = '' 103 104 loadIops = (microLdrUopIop, microLdrFpUopIop, microLdrRetUopIop) 105 storeIops = (microStrUopIop, microStrFpUopIop) --- 48 unchanged lines hidden --- |