Deleted Added
sdiff udiff text old ( 7207:82cfe1198d6f ) new ( 7296:27c60324ec4d )
full compact
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 ---