|
|
|
@ -175,6 +175,15 @@ protected:
|
|
|
|
|
auto sign_mask = 1ULL<<(W-1);
|
|
|
|
|
return (from & mask) | ((from & sign_mask) ? ~mask : 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
inline void process_spawn_blocks() {
|
|
|
|
|
for(auto it = std::begin(spawn_blocks); it!=std::end(spawn_blocks);)
|
|
|
|
|
if(*it){
|
|
|
|
|
(*it)();
|
|
|
|
|
++it;
|
|
|
|
|
} else
|
|
|
|
|
spawn_blocks.erase(it);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
/****************************************************************************
|
|
|
|
@ -397,7 +406,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = (int32_t)imm;
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 0);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -436,7 +445,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = *PC + (int32_t)imm;
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 1);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -483,7 +492,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 2);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -532,7 +541,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 3);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -579,7 +588,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 4);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -626,7 +635,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 5);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -673,7 +682,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 6);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -720,7 +729,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 7);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -767,7 +776,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 8);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -814,7 +823,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 9);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -857,7 +866,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 10);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -901,7 +910,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 11);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -945,7 +954,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 12);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -988,7 +997,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 13);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1032,7 +1041,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 14);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1072,7 +1081,7 @@ private:
|
|
|
|
|
writeSpace1(traits::MEM, *(X+rs1) + (int16_t)sext<12>(imm), (int8_t)*(X+rs2));
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 15);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1115,7 +1124,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 16);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1158,7 +1167,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 17);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1198,7 +1207,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = *(X+rs1) + (int16_t)sext<12>(imm);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 18);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1238,7 +1247,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = (int32_t)*(X+rs1) < (int16_t)sext<12>(imm)? 1 : 0;
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 19);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1278,7 +1287,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = (*(X+rs1) < (uint32_t)((int16_t)sext<12>(imm)))? 1 : 0;
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 20);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1318,7 +1327,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = *(X+rs1) ^ (int16_t)sext<12>(imm);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 21);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1358,7 +1367,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = *(X+rs1) | (int16_t)sext<12>(imm);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 22);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1398,7 +1407,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = *(X+rs1) & (int16_t)sext<12>(imm);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 23);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1443,7 +1452,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 24);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1488,7 +1497,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 25);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1533,7 +1542,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 26);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1573,7 +1582,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = *(X+rs1) + *(X+rs2);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 27);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1613,7 +1622,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = *(X+rs1) - *(X+rs2);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 28);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1653,7 +1662,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = *(X+rs1) << (*(X+rs2) & (traits::XLEN - 1));
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 29);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1693,7 +1702,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = (int32_t)*(X+rs1) < (int32_t)*(X+rs2)? 1 : 0;
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 30);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1733,7 +1742,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = (uint32_t)*(X+rs1) < (uint32_t)*(X+rs2)? 1 : 0;
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 31);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1773,7 +1782,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = *(X+rs1) ^ *(X+rs2);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 32);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1813,7 +1822,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = *(X+rs1) >> (*(X+rs2) & (traits::XLEN - 1));
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 33);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1853,7 +1862,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = (int32_t)*(X+rs1) >> (*(X+rs2) & (traits::XLEN - 1));
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 34);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1893,7 +1902,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = *(X+rs1) | *(X+rs2);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 35);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1933,7 +1942,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = *(X+rs1) & *(X+rs2);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 36);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -1974,7 +1983,7 @@ private:
|
|
|
|
|
writeSpace1(traits::FENCE, traits::fence, pred << 4 | succ);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 37);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2007,7 +2016,7 @@ private:
|
|
|
|
|
raise(0, 11);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 38);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2040,7 +2049,7 @@ private:
|
|
|
|
|
raise(0, 3);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 39);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2073,7 +2082,7 @@ private:
|
|
|
|
|
leave(0);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 40);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2106,7 +2115,7 @@ private:
|
|
|
|
|
leave(1);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 41);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2139,7 +2148,7 @@ private:
|
|
|
|
|
leave(3);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 42);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2172,7 +2181,7 @@ private:
|
|
|
|
|
wait(1);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 43);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2215,7 +2224,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 44);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2265,7 +2274,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 45);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2310,7 +2319,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 46);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2355,7 +2364,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 47);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2399,7 +2408,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 48);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2443,7 +2452,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 49);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2487,7 +2496,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 50);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2526,7 +2535,7 @@ private:
|
|
|
|
|
writeSpace2(traits::FENCE, traits::fencei, imm);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 51);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2571,7 +2580,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 52);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2616,7 +2625,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 53);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2661,7 +2670,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 54);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2706,7 +2715,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 55);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2755,7 +2764,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 56);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2800,7 +2809,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 57);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2849,7 +2858,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 58);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2894,7 +2903,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 59);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2934,7 +2943,7 @@ private:
|
|
|
|
|
else raise(0, 2);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 60);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -2977,7 +2986,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 61);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3020,7 +3029,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 62);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3059,7 +3068,7 @@ private:
|
|
|
|
|
*(X+rs1) = *(X+rs1) + (int8_t)sext<6>(imm);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 63);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3094,7 +3103,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 64);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3135,7 +3144,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 65);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3176,7 +3185,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 66);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3218,7 +3227,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 67);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3257,7 +3266,7 @@ private:
|
|
|
|
|
else raise(0, 2);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 68);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3291,7 +3300,7 @@ private:
|
|
|
|
|
raise(0, 2);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 69);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3333,7 +3342,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 70);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3379,7 +3388,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 71);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3421,7 +3430,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 72);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3463,7 +3472,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 73);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3505,7 +3514,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 74);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3547,7 +3556,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 75);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3589,7 +3598,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 76);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3626,7 +3635,7 @@ private:
|
|
|
|
|
pc_assign(*NEXT_PC) = *PC + (int16_t)sext<12>(imm);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 77);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3665,7 +3674,7 @@ private:
|
|
|
|
|
if(*(X+(rs1 + 8)) == 0) pc_assign(*NEXT_PC) = *PC + (int16_t)sext<9>(imm);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 78);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3704,7 +3713,7 @@ private:
|
|
|
|
|
if(*(X+(rs1 + 8)) != 0) pc_assign(*NEXT_PC) = *PC + (int16_t)sext<9>(imm);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 79);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3743,7 +3752,7 @@ private:
|
|
|
|
|
if(nzuimm) *(X+rs1) = *(X+rs1) << nzuimm;
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 80);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3786,7 +3795,7 @@ private:
|
|
|
|
|
else raise(0, 2);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 81);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3825,7 +3834,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = *(X+rs2);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 82);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3864,7 +3873,7 @@ private:
|
|
|
|
|
else raise(0, 2);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 83);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3897,7 +3906,7 @@ private:
|
|
|
|
|
raise(0, 2);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 84);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3936,7 +3945,7 @@ private:
|
|
|
|
|
if(rd != 0) *(X+rd) = *(X+rd) + *(X+rs2);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 85);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -3978,7 +3987,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 86);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -4011,7 +4020,7 @@ private:
|
|
|
|
|
raise(0, 3);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 87);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -4053,7 +4062,7 @@ private:
|
|
|
|
|
}
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 88);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
@ -4086,7 +4095,7 @@ private:
|
|
|
|
|
raise(0, 2);
|
|
|
|
|
} catch(...){}
|
|
|
|
|
// post execution stuff
|
|
|
|
|
for(auto& spawn_block:spawn_blocks) spawn_block();
|
|
|
|
|
process_spawn_blocks();
|
|
|
|
|
if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, 89);
|
|
|
|
|
// trap check
|
|
|
|
|
if(*trap_state!=0){
|
|
|
|
|