diff options
Diffstat (limited to 'xmrstak/backend/cpu/minethd.cpp')
-rw-r--r-- | xmrstak/backend/cpu/minethd.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/xmrstak/backend/cpu/minethd.cpp b/xmrstak/backend/cpu/minethd.cpp index b02540a..8a65a3b 100644 --- a/xmrstak/backend/cpu/minethd.cpp +++ b/xmrstak/backend/cpu/minethd.cpp @@ -419,6 +419,13 @@ minethd::cn_hash_fun_dbl minethd::func_dbl_selector(bool bHaveAes, bool bNoPrefe return func_table[digit.to_ulong()]; } +uint32_t* minethd::prep_double_work(uint8_t bDoubleWorkBlob[sizeof(miner_work::bWorkBlob) * 2]) +{ + memcpy(bDoubleWorkBlob, oWork.bWorkBlob, oWork.iWorkSize); + memcpy(bDoubleWorkBlob + oWork.iWorkSize, oWork.bWorkBlob, oWork.iWorkSize); + return (uint32_t*)(bDoubleWorkBlob + oWork.iWorkSize + 39); +} + void minethd::double_work_main() { if(affinity >= 0) //-1 means no affinity @@ -431,7 +438,7 @@ void minethd::double_work_main() uint64_t *piHashVal0, *piHashVal1; uint32_t *piNonce0, *piNonce1; uint8_t bDoubleHashOut[64]; - uint8_t bDoubleWorkBlob[sizeof(miner_work::bWorkBlob) * 2]; + uint8_t bDoubleWorkBlob[sizeof(miner_work::bWorkBlob) * 2]; uint32_t iNonce; job_result res; @@ -442,7 +449,11 @@ void minethd::double_work_main() piHashVal0 = (uint64_t*)(bDoubleHashOut + 24); piHashVal1 = (uint64_t*)(bDoubleHashOut + 32 + 24); piNonce0 = (uint32_t*)(bDoubleWorkBlob + 39); - piNonce1 = nullptr; + + if(!oWork.bStall) + piNonce1 = prep_double_work(bDoubleWorkBlob); + else + piNonce1 = nullptr; globalStates::inst().inst().iConsumeCnt++; @@ -460,7 +471,7 @@ void minethd::double_work_main() consume_work(); memcpy(bDoubleWorkBlob, oWork.bWorkBlob, oWork.iWorkSize); memcpy(bDoubleWorkBlob + oWork.iWorkSize, oWork.bWorkBlob, oWork.iWorkSize); - piNonce1 = (uint32_t*)(bDoubleWorkBlob + oWork.iWorkSize + 39); + piNonce1 = prep_double_work(bDoubleWorkBlob); continue; } @@ -500,7 +511,7 @@ void minethd::double_work_main() consume_work(); memcpy(bDoubleWorkBlob, oWork.bWorkBlob, oWork.iWorkSize); memcpy(bDoubleWorkBlob + oWork.iWorkSize, oWork.bWorkBlob, oWork.iWorkSize); - piNonce1 = (uint32_t*)(bDoubleWorkBlob + oWork.iWorkSize + 39); + piNonce1 = prep_double_work(bDoubleWorkBlob); } cryptonight_free_ctx(ctx0); |