misc64.isa (12488:19af27d8b34d) misc64.isa (12531:3141027bd11a)
1// -*- mode:c++ -*-
2
1// -*- mode:c++ -*-
2
3// Copyright (c) 2011-2013, 2016-2017 ARM Limited
3// Copyright (c) 2011-2013, 2016-2018 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

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

169 bits(machInst, 20, 5));
170 '''
171
172 brkIop = InstObjParams("brk", "Brk64", "ArmStaticInst",
173 brkCode, ["IsSerializeAfter"])
174 header_output += BasicDeclare.subst(brkIop)
175 decoder_output += BasicConstructor64.subst(brkIop)
176 exec_output += BasicExecute.subst(brkIop)
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

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

169 bits(machInst, 20, 5));
170 '''
171
172 brkIop = InstObjParams("brk", "Brk64", "ArmStaticInst",
173 brkCode, ["IsSerializeAfter"])
174 header_output += BasicDeclare.subst(brkIop)
175 decoder_output += BasicConstructor64.subst(brkIop)
176 exec_output += BasicExecute.subst(brkIop)
177
178 hltCode = '''
179 ThreadContext *tc = xc->tcBase();
180 if (ArmSystem::haveSemihosting(tc) && bits(machInst, 20, 5) == 0xF000) {
181 X0 = ArmSystem::callSemihosting64(tc, X0 & mask(32), X1);
182 } else {
183 // HLT instructions aren't implemented, so treat them as undefined
184 // instructions.
185 fault = std::make_shared<UndefinedInstruction>(
186 machInst, false, mnemonic);
187 }
188
189 '''
190
191 hltIop = InstObjParams("hlt", "Hlt64", "ArmStaticInst",
192 hltCode, ["IsNonSpeculative"])
193 header_output += BasicDeclare.subst(hltIop)
194 decoder_output += BasicConstructor64.subst(hltIop)
195 exec_output += BasicExecute.subst(hltIop)
177}};
196}};