fix unaligned instr fetch behavior
This commit is contained in:
parent
d78fcc48e5
commit
2f15d9676e
@ -65,8 +65,6 @@ public:
|
||||
using reg_t = typename traits::reg_t;
|
||||
using mem_type_e = typename traits::mem_type_e;
|
||||
|
||||
const bool has_compressed = traits::MISA_VAL & 0b100;
|
||||
|
||||
vm_impl();
|
||||
|
||||
vm_impl(ARCH &core, unsigned core_id = 0, unsigned cluster_id = 0);
|
||||
@ -212,7 +210,6 @@ private:
|
||||
<%instr.behavior.eachLine{%>${it}
|
||||
<%}%>} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, ${idx});
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
|
@ -53,7 +53,7 @@ template <> struct traits<tgc_c> {
|
||||
static constexpr std::array<const char*, 35> reg_aliases{
|
||||
{"ZERO", "RA", "SP", "GP", "TP", "T0", "T1", "T2", "S0", "S1", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "S2", "S3", "S4", "S5", "S6", "S7", "S8", "S9", "S10", "S11", "T3", "T4", "T5", "T6", "PC", "NEXT_PC", "PRIV"}};
|
||||
|
||||
enum constants {MISA_VAL=0b01000000000000000001000100000100, XLEN=32, CSR_SIZE=4096, INSTR_ALIGNMENT=2, fence=0, fencei=1, fencevmal=2, fencevmau=3, MUL_LEN=64};
|
||||
enum constants {MISA_VAL=0b01000000000000000001000100000100, MARCHID_VAL=0x80000003, XLEN=32, CSR_SIZE=4096, INSTR_ALIGNMENT=2, fence=0, fencei=1, fencevmal=2, fencevmau=3, MUL_LEN=64};
|
||||
|
||||
constexpr static unsigned FP_REGS_SIZE = 0;
|
||||
|
||||
|
@ -65,8 +65,6 @@ public:
|
||||
using reg_t = typename traits::reg_t;
|
||||
using mem_type_e = typename traits::mem_type_e;
|
||||
|
||||
const bool has_compressed = traits::MISA_VAL & 0b100;
|
||||
|
||||
vm_impl();
|
||||
|
||||
vm_impl(ARCH &core, unsigned core_id = 0, unsigned cluster_id = 0);
|
||||
@ -387,7 +385,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = (int32_t)imm;
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 0);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -428,7 +425,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = *PC + (int32_t)imm;
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 1);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -477,7 +473,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 2);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -528,7 +523,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 3);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -575,7 +569,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 4);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -622,7 +615,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 5);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -669,7 +661,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 6);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -716,7 +707,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 7);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -763,7 +753,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 8);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -810,7 +799,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 9);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -855,7 +843,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 10);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -901,7 +888,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 11);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -947,7 +933,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 12);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -992,7 +977,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 13);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1038,7 +1022,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 14);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1080,7 +1063,6 @@ private:
|
||||
writeSpace1(traits::MEM, *(X+rs1) + (int16_t)sext<12>(imm), (int8_t)*(X+rs2));
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 15);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1125,7 +1107,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 16);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1170,7 +1151,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 17);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1212,7 +1192,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = *(X+rs1) + (int16_t)sext<12>(imm);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 18);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1254,7 +1233,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = (int32_t)*(X+rs1) < (int16_t)sext<12>(imm)? 1 : 0;
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 19);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1296,7 +1274,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = (*(X+rs1) < (uint32_t)((int16_t)sext<12>(imm)))? 1 : 0;
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 20);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1338,7 +1315,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = *(X+rs1) ^ (int16_t)sext<12>(imm);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 21);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1380,7 +1356,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = *(X+rs1) | (int16_t)sext<12>(imm);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 22);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1422,7 +1397,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = *(X+rs1) & (int16_t)sext<12>(imm);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 23);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1469,7 +1443,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 24);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1516,7 +1489,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 25);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1563,7 +1535,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 26);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1605,7 +1576,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = *(X+rs1) + *(X+rs2);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 27);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1647,7 +1617,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = *(X+rs1) - *(X+rs2);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 28);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1689,7 +1658,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = *(X+rs1) << (*(X+rs2) & (traits::XLEN - 1));
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 29);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1731,7 +1699,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = (int32_t)*(X+rs1) < (int32_t)*(X+rs2)? 1 : 0;
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 30);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1773,7 +1740,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = (uint32_t)*(X+rs1) < (uint32_t)*(X+rs2)? 1 : 0;
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 31);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1815,7 +1781,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = *(X+rs1) ^ *(X+rs2);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 32);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1857,7 +1822,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = *(X+rs1) >> (*(X+rs2) & (traits::XLEN - 1));
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 33);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1899,7 +1863,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = (int32_t)*(X+rs1) >> (*(X+rs2) & (traits::XLEN - 1));
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 34);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1941,7 +1904,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = *(X+rs1) | *(X+rs2);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 35);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -1983,7 +1945,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = *(X+rs1) & *(X+rs2);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 36);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2026,7 +1987,6 @@ private:
|
||||
writeSpace1(traits::FENCE, traits::fence, pred << 4 | succ);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 37);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2061,7 +2021,6 @@ private:
|
||||
raise(0, 11);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 38);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2096,7 +2055,6 @@ private:
|
||||
raise(0, 3);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 39);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2131,7 +2089,6 @@ private:
|
||||
leave(0);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 40);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2166,7 +2123,6 @@ private:
|
||||
leave(1);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 41);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2201,7 +2157,6 @@ private:
|
||||
leave(3);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 42);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2236,7 +2191,6 @@ private:
|
||||
wait(1);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 43);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2288,7 +2242,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 44);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2335,7 +2288,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 45);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2382,7 +2334,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 46);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2428,7 +2379,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 47);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2474,7 +2424,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 48);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2520,7 +2469,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 49);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2567,7 +2515,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 50);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2614,7 +2561,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 51);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2661,7 +2607,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 52);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2708,7 +2653,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 53);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2759,7 +2703,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 54);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2806,7 +2749,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 55);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2857,7 +2799,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 56);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2904,7 +2845,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 57);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2946,7 +2886,6 @@ private:
|
||||
else raise(0, 2);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 58);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -2991,7 +2930,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 59);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3036,7 +2974,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 60);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3077,7 +3014,6 @@ private:
|
||||
*(X+rs1) = *(X+rs1) + (int8_t)sext<6>(imm);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 61);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3114,7 +3050,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 62);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3157,7 +3092,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 63);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3200,7 +3134,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 64);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3244,7 +3177,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 65);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3285,7 +3217,6 @@ private:
|
||||
else raise(0, 2);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 66);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3321,7 +3252,6 @@ private:
|
||||
raise(0, 2);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 67);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3365,7 +3295,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 68);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3413,7 +3342,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 69);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3457,7 +3385,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 70);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3501,7 +3428,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 71);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3545,7 +3471,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 72);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3589,7 +3514,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 73);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3633,7 +3557,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 74);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3672,7 +3595,6 @@ private:
|
||||
pc_assign(*NEXT_PC) = *PC + (int16_t)sext<12>(imm);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 75);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3713,7 +3635,6 @@ private:
|
||||
if(*(X+(rs1 + 8)) == 0) pc_assign(*NEXT_PC) = *PC + (int16_t)sext<9>(imm);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 76);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3754,7 +3675,6 @@ private:
|
||||
if(*(X+(rs1 + 8)) != 0) pc_assign(*NEXT_PC) = *PC + (int16_t)sext<9>(imm);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 77);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3795,7 +3715,6 @@ private:
|
||||
if(nzuimm) *(X+rs1) = *(X+rs1) << nzuimm;
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 78);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3840,7 +3759,6 @@ private:
|
||||
else raise(0, 2);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 79);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3881,7 +3799,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = *(X+rs2);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 80);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3922,7 +3839,6 @@ private:
|
||||
else raise(0, 2);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 81);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3957,7 +3873,6 @@ private:
|
||||
raise(0, 2);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 82);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -3998,7 +3913,6 @@ private:
|
||||
if(rd != 0) *(X+rd) = *(X+rd) + *(X+rs2);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 83);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -4042,7 +3956,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 84);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -4077,7 +3990,6 @@ private:
|
||||
raise(0, 3);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 85);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -4121,7 +4033,6 @@ private:
|
||||
}
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 86);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
@ -4156,7 +4067,6 @@ private:
|
||||
raise(0, 2);
|
||||
} catch(...){}
|
||||
// post execution stuff
|
||||
if(!has_compressed && (*NEXT_PC&0x3)!=0) raise(0, 0);
|
||||
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 87);
|
||||
// trap check
|
||||
if(*trap_state!=0){
|
||||
|
Loading…
Reference in New Issue
Block a user