From 2f15d9676e850e891acf8af516198f9f18174db6 Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Thu, 30 Sep 2021 19:27:46 +0200 Subject: [PATCH] fix unaligned instr fetch behavior --- gen_input/templates/interp/CORENAME.cpp.gtl | 3 - incl/iss/arch/tgc_c.h | 2 +- src/vm/interp/vm_tgc_c.cpp | 90 --------------------- 3 files changed, 1 insertion(+), 94 deletions(-) diff --git a/gen_input/templates/interp/CORENAME.cpp.gtl b/gen_input/templates/interp/CORENAME.cpp.gtl index f2b86ae..c586317 100644 --- a/gen_input/templates/interp/CORENAME.cpp.gtl +++ b/gen_input/templates/interp/CORENAME.cpp.gtl @@ -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){ diff --git a/incl/iss/arch/tgc_c.h b/incl/iss/arch/tgc_c.h index 8e5a728..5a96c9e 100644 --- a/incl/iss/arch/tgc_c.h +++ b/incl/iss/arch/tgc_c.h @@ -53,7 +53,7 @@ template <> struct traits { static constexpr std::array 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; diff --git a/src/vm/interp/vm_tgc_c.cpp b/src/vm/interp/vm_tgc_c.cpp index b1fceab..715e3c9 100644 --- a/src/vm/interp/vm_tgc_c.cpp +++ b/src/vm/interp/vm_tgc_c.cpp @@ -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){