misc.isa (12258:08990d24fe41) misc.isa (12259:f787f664d57a)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010-2013,2017 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

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

1065
1066 isbCode = '''
1067 // If the barrier is due to a CP15 access check for hyp traps
1068 if ((imm != 0) && mcrMrc15TrapToHyp(MISCREG_CP15ISB, Hcr, Cpsr, Scr,
1069 Hdcr, Hstr, Hcptr, imm)) {
1070 return std::make_shared<HypervisorTrap>(machInst, imm,
1071 EC_TRAPPED_CP15_MCR_MRC);
1072 }
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010-2013,2017 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

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

1065
1066 isbCode = '''
1067 // If the barrier is due to a CP15 access check for hyp traps
1068 if ((imm != 0) && mcrMrc15TrapToHyp(MISCREG_CP15ISB, Hcr, Cpsr, Scr,
1069 Hdcr, Hstr, Hcptr, imm)) {
1070 return std::make_shared<HypervisorTrap>(machInst, imm,
1071 EC_TRAPPED_CP15_MCR_MRC);
1072 }
1073 fault = std::make_shared<FlushPipe>();
1074 '''
1075 isbIop = InstObjParams("isb", "Isb", "ImmOp",
1076 {"code": isbCode,
1077 "predicate_test": predicateTest},
1073 '''
1074 isbIop = InstObjParams("isb", "Isb", "ImmOp",
1075 {"code": isbCode,
1076 "predicate_test": predicateTest},
1078 ['IsSerializeAfter'])
1077 ['IsSerializeAfter', 'IsSquashAfter'])
1079 header_output += ImmOpDeclare.subst(isbIop)
1080 decoder_output += ImmOpConstructor.subst(isbIop)
1081 exec_output += PredOpExecute.subst(isbIop)
1082
1083 dsbCode = '''
1084 // If the barrier is due to a CP15 access check for hyp traps
1085 if ((imm != 0) && mcrMrc15TrapToHyp(MISCREG_CP15DSB, Hcr, Cpsr, Scr,
1086 Hdcr, Hstr, Hcptr, imm)) {
1087 return std::make_shared<HypervisorTrap>(machInst, imm,
1088 EC_TRAPPED_CP15_MCR_MRC);
1089 }
1078 header_output += ImmOpDeclare.subst(isbIop)
1079 decoder_output += ImmOpConstructor.subst(isbIop)
1080 exec_output += PredOpExecute.subst(isbIop)
1081
1082 dsbCode = '''
1083 // If the barrier is due to a CP15 access check for hyp traps
1084 if ((imm != 0) && mcrMrc15TrapToHyp(MISCREG_CP15DSB, Hcr, Cpsr, Scr,
1085 Hdcr, Hstr, Hcptr, imm)) {
1086 return std::make_shared<HypervisorTrap>(machInst, imm,
1087 EC_TRAPPED_CP15_MCR_MRC);
1088 }
1090 fault = std::make_shared<FlushPipe>();
1091 '''
1092 dsbIop = InstObjParams("dsb", "Dsb", "ImmOp",
1093 {"code": dsbCode,
1094 "predicate_test": predicateTest},
1089 '''
1090 dsbIop = InstObjParams("dsb", "Dsb", "ImmOp",
1091 {"code": dsbCode,
1092 "predicate_test": predicateTest},
1095 ['IsMemBarrier', 'IsSerializeAfter'])
1093 ['IsMemBarrier', 'IsSerializeAfter',
1094 'IsSquashAfter'])
1096 header_output += ImmOpDeclare.subst(dsbIop)
1097 decoder_output += ImmOpConstructor.subst(dsbIop)
1098 exec_output += PredOpExecute.subst(dsbIop)
1099
1100 dmbCode = '''
1101 // If the barrier is due to a CP15 access check for hyp traps
1102 if ((imm != 0) && mcrMrc15TrapToHyp(MISCREG_CP15DMB, Hcr, Cpsr, Scr,
1103 Hdcr, Hstr, Hcptr, imm)) {

--- 54 unchanged lines hidden ---
1095 header_output += ImmOpDeclare.subst(dsbIop)
1096 decoder_output += ImmOpConstructor.subst(dsbIop)
1097 exec_output += PredOpExecute.subst(dsbIop)
1098
1099 dmbCode = '''
1100 // If the barrier is due to a CP15 access check for hyp traps
1101 if ((imm != 0) && mcrMrc15TrapToHyp(MISCREG_CP15DMB, Hcr, Cpsr, Scr,
1102 Hdcr, Hstr, Hcptr, imm)) {

--- 54 unchanged lines hidden ---