3 Commits

Author SHA1 Message Date
2f15d9676e fix unaligned instr fetch behavior 2021-09-30 19:27:46 +02:00
d78fcc48e5 use marchid in platform 2021-09-30 19:27:03 +02:00
4186723d37 add marchid setting to CoreDSL description 2021-09-30 19:26:21 +02:00
10 changed files with 9 additions and 98 deletions

View File

@@ -8,6 +8,7 @@ Core TGC_B provides RV32I {
// definitions for the architecture wrapper
// XL ZYXWVUTSRQPONMLKJIHGFEDCBA
unsigned MISA_VAL = 0b01000000000000000000000100000000;
unsigned MARCHID_VAL = 0x80000002;
}
}

View File

@@ -8,5 +8,6 @@ Core TGC_C provides RV32I, RV32M, RV32IC {
// definitions for the architecture wrapper
// XL ZYXWVUTSRQPONMLKJIHGFEDCBA
unsigned MISA_VAL = 0b01000000000000000001000100000100;
unsigned MARCHID_VAL = 0x80000003;
}
}

View File

@@ -8,5 +8,6 @@ Core TGC_D provides RV32I, RV32M, RV32IC {
// definitions for the architecture wrapper
// XL ZYXWVUTSRQPONMLKJIHGFEDCBA
unsigned MISA_VAL = 0b01000000000000000001000100000100;
unsigned MARCHID_VAL = 0x80000004;
}
}

View File

@@ -68,5 +68,6 @@ Core TGC_D_XRB_MAC provides RV32I, RV32M, RV32IC, X_RB_MAC {
// definitions for the architecture wrapper
// XL ZYXWVUTSRQPONMLKJIHGFEDCBA
unsigned MISA_VAL = 0b01000000000000000001000100000100;
unsigned MARCHID_VAL = 0x80000004;
}
}

View File

@@ -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){

View File

@@ -307,7 +307,7 @@ riscv_hart_m_p<BASE>::riscv_hart_m_p()
// reset values
csr[misa] = traits<BASE>::MISA_VAL;
csr[mvendorid] = 0x669;
csr[marchid] = 0x80000003;
csr[marchid] = traits<BASE>::MARCHID_VAL;
csr[mimpid] = 1;
uart_buf.str("");
@@ -922,7 +922,7 @@ template <typename BASE> uint64_t riscv_hart_m_p<BASE>::enter_trap(uint64_t flag
csr[mepc] = static_cast<reg_t>(addr) & get_pc_mask(); // store actual address instruction of exception
switch(cause){
case 0:
csr[mtval] = instr;
csr[mtval] = addr;
break;
case 2:
csr[mtval] = (instr & 0x3)==3?instr:instr&0xffff;

View File

@@ -419,7 +419,7 @@ riscv_hart_msu_vp<BASE>::riscv_hart_msu_vp()
// reset values
csr[misa] = traits<BASE>::MISA_VAL;
csr[mvendorid] = 0x669;
csr[marchid] = 0x80000003;
csr[marchid] = traits<BASE>::MARCHID_VAL;
csr[mimpid] = 1;
uart_buf.str("");

View File

@@ -349,7 +349,7 @@ riscv_hart_mu_p<BASE, FEAT>::riscv_hart_mu_p()
// reset values
csr[misa] = traits<BASE>::MISA_VAL;
csr[mvendorid] = 0x669;
csr[marchid] = 0x80000004;
csr[marchid] = traits<BASE>::MARCHID_VAL;
csr[mimpid] = 1;
csr[mclicbase] = 0xc0000000; // TODO: should be taken from YAML file

View File

@@ -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;

View File

@@ -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){