data64.isa (14127:65faf17eea53) data64.isa (14128:6ed23d07d0d1)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2011-2013, 2016-2019 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

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

507 decoder_output += DCStore64Constructor.subst(msrDCIVACIop);
508 exec_output += DCStore64Execute.subst(msrDCIVACIop);
509 exec_output += DCStore64InitiateAcc.subst(msrDCIVACIop);
510 exec_output += Store64CompleteAcc.subst(msrDCIVACIop);
511
512 def buildMsrImmInst(mnem, inst_name, code):
513 global header_output, decoder_output, exec_output
514 msrImmPermission = '''
1// -*- mode:c++ -*-
2
3// Copyright (c) 2011-2013, 2016-2019 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

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

507 decoder_output += DCStore64Constructor.subst(msrDCIVACIop);
508 exec_output += DCStore64Execute.subst(msrDCIVACIop);
509 exec_output += DCStore64InitiateAcc.subst(msrDCIVACIop);
510 exec_output += Store64CompleteAcc.subst(msrDCIVACIop);
511
512 def buildMsrImmInst(mnem, inst_name, code):
513 global header_output, decoder_output, exec_output
514 msrImmPermission = '''
515 if (!canWriteAArch64SysReg(
516 (MiscRegIndex) xc->tcBase()->flattenRegId(
517 RegId(MiscRegClass, dest)).index(),
518 Scr64, Cpsr, xc->tcBase())) {
519 return std::make_shared(
520 machInst, 0, EC_TRAPPED_MSR_MRS_64,
521 mnemonic);
515 auto misc_index = (MiscRegIndex) xc->tcBase()->flattenRegId(
516 RegId(MiscRegClass, dest)).index();
517
518 if (!miscRegInfo[misc_index][MISCREG_IMPLEMENTED]) {
519 return std::make_shared<UndefinedInstruction>(
520 machInst, false,
521 mnemonic);
522 }
523
522 }
523
524 if (!canWriteAArch64SysReg(misc_index,
525 Scr64, Cpsr, xc->tcBase())) {
526
527 return std::make_shared<UndefinedInstruction>(
528 machInst, 0, EC_TRAPPED_MSR_MRS_64,
529 mnemonic);
530 }
531
524 '''
525 msrIop = InstObjParams("msr", inst_name, "MiscRegImmOp64",
526 msrImmPermission + code,
527 ["IsSerializeAfter", "IsNonSpeculative"])
528 header_output += MiscRegOp64Declare.subst(msrIop)
529 decoder_output += MiscRegOp64Constructor.subst(msrIop)
530 exec_output += BasicExecute.subst(msrIop)
531

--- 67 unchanged lines hidden ---
532 '''
533 msrIop = InstObjParams("msr", inst_name, "MiscRegImmOp64",
534 msrImmPermission + code,
535 ["IsSerializeAfter", "IsNonSpeculative"])
536 header_output += MiscRegOp64Declare.subst(msrIop)
537 decoder_output += MiscRegOp64Constructor.subst(msrIop)
538 exec_output += BasicExecute.subst(msrIop)
539

--- 67 unchanged lines hidden ---