str.isa (7646:a444dbee8c07) str.isa (7746:79adfecb2b8a)
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

--- 98 unchanged lines hidden (view full) ---

107 wbDiff = -8
108 if self.add:
109 wbDiff = 8
110 accCode = '''
111 CPSR cpsr = Cpsr;
112 Mem.ud = (uint64_t)cSwap(LR.uw, cpsr.e) |
113 ((uint64_t)cSwap(Spsr.uw, cpsr.e) << 32);
114 '''
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

--- 98 unchanged lines hidden (view full) ---

107 wbDiff = -8
108 if self.add:
109 wbDiff = 8
110 accCode = '''
111 CPSR cpsr = Cpsr;
112 Mem.ud = (uint64_t)cSwap(LR.uw, cpsr.e) |
113 ((uint64_t)cSwap(Spsr.uw, cpsr.e) << 32);
114 '''
115 if self.writeback:
116 accCode += "SpMode = SpMode + %s;\n" % wbDiff
117
118 global header_output, decoder_output, exec_output
119
120 codeBlobs = { "ea_code": eaCode,
121 "memacc_code": accCode,
122 "postacc_code": "" }
123 codeBlobs["predicate_test"] = pickPredicate(codeBlobs)
124
115
116 global header_output, decoder_output, exec_output
117
118 codeBlobs = { "ea_code": eaCode,
119 "memacc_code": accCode,
120 "postacc_code": "" }
121 codeBlobs["predicate_test"] = pickPredicate(codeBlobs)
122
123 wbDecl = None
124 if self.writeback:
125 wbDecl = '''MicroAddiUop(machInst,
126 intRegInMode((OperatingMode)regMode, INTREG_SP),
127 intRegInMode((OperatingMode)regMode, INTREG_SP),
128 %d);''' % wbDiff
129
125 (newHeader,
126 newDecoder,
127 newExec) = self.fillTemplates(self.name, self.Name, codeBlobs,
128 ["ArmISA::TLB::AlignWord", "ArmISA::TLB::MustBeOne"], [],
130 (newHeader,
131 newDecoder,
132 newExec) = self.fillTemplates(self.name, self.Name, codeBlobs,
133 ["ArmISA::TLB::AlignWord", "ArmISA::TLB::MustBeOne"], [],
129 base = 'SrsOp')
134 'SrsOp', wbDecl)
130
131 header_output += newHeader
132 decoder_output += newDecoder
133 exec_output += newExec
134
135 class StoreImmInst(StoreInst):
136 def __init__(self, *args, **kargs):
137 super(StoreImmInst, self).__init__(*args, **kargs)

--- 237 unchanged lines hidden ---
135
136 header_output += newHeader
137 decoder_output += newDecoder
138 exec_output += newExec
139
140 class StoreImmInst(StoreInst):
141 def __init__(self, *args, **kargs):
142 super(StoreImmInst, self).__init__(*args, **kargs)

--- 237 unchanged lines hidden ---