| InstructionDefinition mret_(ISA32_RV32IMACFD, "mret",(uint64_t) 0x30200073,(uint64_t) 0xffffffff,[](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { { CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//MRET\n"); cp.code()+="etiss_coverage_count(1, 166);\n";{ cp.code()+="etiss_coverage_count(1, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 6621);\n";cp.code()+="{ // block\n";cp.code()+="etiss_coverage_count(1, 6548);\n";cp.code()+="if (((RV32IMACFD*)cpu)->PRIV < 3LL) { // conditional\n";cp.code()+="etiss_coverage_count(2, 6551, 6549);\n";{ cp.code()+="{ // procedure\n";cp.code()+="RV32IMACFD_raise(cpu, system, plugin_pointers, 0LL, 2LL);\n";cp.code()+="etiss_coverage_count(2, 6554, 6552);\n";cp.code()+="goto instr_exit_"+std::to_string(ic.current_address_)+";\n";cp.code()+="} // procedure\n";} cp.code()+="} // conditional\n";cp.code()+="cpu->nextPc = *((RV32IMACFD*)cpu)->CSR[833LL];\n";cp.code()+="etiss_coverage_count(3, 6559, 6555, 6558);\n";cp.code()+="etiss_uint32 s = RV32IMACFD_csr_read(cpu, system, plugin_pointers, 768LL);\n";cp.code()+="etiss_coverage_count(2, 6563, 6562);\n";cp.code()+="etiss_uint32 prev_prv = (etiss_uint32)(RV32IMACFD_get_field(s, 6144LL));\n";cp.code()+="etiss_coverage_count(4, 6570, 6569, 6567, 6565);\n";cp.code()+="etiss_coverage_count(1, 6571);\n";cp.code()+="if (prev_prv != 3LL) { // conditional\n";cp.code()+="etiss_coverage_count(2, 6574, 6572);\n";cp.code()+="s = (etiss_uint32)(RV32IMACFD_set_field(s, 131072LL, 0LL));\n";cp.code()+="etiss_coverage_count(6, 6582, 6575, 6581, 6579, 6576, 6578);\n";cp.code()+="} // conditional\n";cp.code()+="s = (etiss_uint32)(RV32IMACFD_set_field(s, 8LL, RV32IMACFD_get_field(s, 128LL)));\n";cp.code()+="etiss_coverage_count(7, 6592, 6583, 6591, 6589, 6584, 6588, 6586);\n";cp.code()+="s = (etiss_uint32)(RV32IMACFD_set_field(s, 128LL, 1ULL));\n";cp.code()+="etiss_coverage_count(6, 6600, 6593, 6599, 6597, 6594, 6596);\n";cp.code()+="s = (etiss_uint32)(RV32IMACFD_set_field(s, 6144LL, (RV32IMACFD_extension_enabled(cpu, system, plugin_pointers, 85ULL)) ? (0LL) : (3LL)));\n";cp.code()+="etiss_coverage_count(8, 6612, 6601, 6611, 6609, 6602, 6608, 6605, 6604);\n";cp.code()+="RV32IMACFD_csr_write(cpu, system, plugin_pointers, 768LL, s);\n";cp.code()+="etiss_coverage_count(2, 6615, 6614);\n";cp.code()+="((RV32IMACFD*)cpu)->PRIV = ((etiss_uint8)(prev_prv)) & 0x7ULL;\n";cp.code()+="etiss_coverage_count(4, 6620, 6616, 6619, 6617);\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n"; cp.getAffectedRegisters().add("instructionPointer", 32);} { CodePart &cp=cs.append(CodePart::APPENDEDRETURNINGREQUIRED);cp.code()=std::string("//MRET\n"); cp.code()+="return cpu->exception;\n"; } return true;}, 0,[](BitArray &ba, Instruction &instr) { std::stringstream ss; ss<< "mret"<< " # "<< ba<<(" []"); return ss.str();}) |
( |
ISA32_RV32IMACFD |
, |
|
|
"mret" |
, |
|
|
(uint64_t) |
0x30200073, |
|
|
(uint64_t) |
0xffffffff, |
|
|
[] (BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { { CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//MRET\n");cp.code()+="etiss_coverage_count(1, 166);\n";{ cp.code()+="etiss_coverage_count(1, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 6621);\n";cp.code()+="{ // block\n";cp.code()+="etiss_coverage_count(1, 6548);\n";cp.code()+="if (((RV32IMACFD*)cpu)->PRIV < 3LL) { // conditional\n";cp.code()+="etiss_coverage_count(2, 6551, 6549);\n";{ cp.code()+="{ // procedure\n";cp.code()+="RV32IMACFD_raise(cpu, system, plugin_pointers, 0LL, 2LL);\n";cp.code()+="etiss_coverage_count(2, 6554, 6552);\n";cp.code()+="goto instr_exit_"+std::to_string(ic.current_address_)+";\n";cp.code()+="} // procedure\n";} cp.code()+="} // conditional\n";cp.code()+="cpu->nextPc = *((RV32IMACFD*)cpu)->CSR[833LL];\n";cp.code()+="etiss_coverage_count(3, 6559, 6555, 6558);\n";cp.code()+="etiss_uint32 s = RV32IMACFD_csr_read(cpu, system, plugin_pointers, 768LL);\n";cp.code()+="etiss_coverage_count(2, 6563, 6562);\n";cp.code()+="etiss_uint32 prev_prv = (etiss_uint32)(RV32IMACFD_get_field(s, 6144LL));\n";cp.code()+="etiss_coverage_count(4, 6570, 6569, 6567, 6565);\n";cp.code()+="etiss_coverage_count(1, 6571);\n";cp.code()+="if (prev_prv != 3LL) { // conditional\n";cp.code()+="etiss_coverage_count(2, 6574, 6572);\n";cp.code()+="s = (etiss_uint32)(RV32IMACFD_set_field(s, 131072LL, 0LL));\n";cp.code()+="etiss_coverage_count(6, 6582, 6575, 6581, 6579, 6576, 6578);\n";cp.code()+="} // conditional\n";cp.code()+="s = (etiss_uint32)(RV32IMACFD_set_field(s, 8LL, RV32IMACFD_get_field(s, 128LL)));\n";cp.code()+="etiss_coverage_count(7, 6592, 6583, 6591, 6589, 6584, 6588, 6586);\n";cp.code()+="s = (etiss_uint32)(RV32IMACFD_set_field(s, 128LL, 1ULL));\n";cp.code()+="etiss_coverage_count(6, 6600, 6593, 6599, 6597, 6594, 6596);\n";cp.code()+="s = (etiss_uint32)(RV32IMACFD_set_field(s, 6144LL, (RV32IMACFD_extension_enabled(cpu, system, plugin_pointers, 85ULL)) ? (0LL) : (3LL)));\n";cp.code()+="etiss_coverage_count(8, 6612, 6601, 6611, 6609, 6602, 6608, 6605, 6604);\n";cp.code()+="RV32IMACFD_csr_write(cpu, system, plugin_pointers, 768LL, s);\n";cp.code()+="etiss_coverage_count(2, 6615, 6614);\n";cp.code()+="((RV32IMACFD*)cpu)->PRIV = ((etiss_uint8)(prev_prv)) & 0x7ULL;\n";cp.code()+="etiss_coverage_count(4, 6620, 6616, 6619, 6617);\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} { CodePart &cp=cs.append(CodePart::APPENDEDRETURNINGREQUIRED);cp.code()=std::string("//MRET\n");cp.code()+="return cpu->exception;\n";} return true;} |
, |
|
|
0 |
, |
|
|
[] (BitArray &ba, Instruction &instr) { std::stringstream ss;ss<< "mret"<< " # "<< ba<<(" []");return ss.str();} |
|
|
) |
| |
|
static |