diff options
Diffstat (limited to 'cpu-miner.c')
-rw-r--r-- | cpu-miner.c | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/cpu-miner.c b/cpu-miner.c index f7dc37b..237f980 100644 --- a/cpu-miner.c +++ b/cpu-miner.c @@ -14,6 +14,7 @@ #include <stdlib.h> #include <string.h> #include <stdbool.h> +#include <stdint.h> #include <unistd.h> #include <sys/time.h> #ifndef WIN32 @@ -29,8 +30,6 @@ #define DEF_RPC_URL "http://127.0.0.1:8332/" #define DEF_RPC_USERPASS "rpcuser:rpcpass" -#include "sha256_generic.c" - enum { STAT_SLEEP_INTERVAL = 100, STAT_CTR_INTERVAL = 10000000, @@ -39,9 +38,10 @@ enum { enum sha256_algos { ALGO_C, /* plain C */ ALGO_4WAY, /* parallel SSE2 */ + ALGO_VIA, /* VIA padlock */ }; -static bool opt_debug; +bool opt_debug = false; bool opt_protocol = false; static bool program_running = true; static const bool opt_time = true; @@ -66,6 +66,9 @@ static struct option_help options_help[] = { #ifdef WANT_SSE2_4WAY "\n\t4way\t\ttcatm's 4-way SSE2 implementation (EXPERIMENTAL)" #endif +#ifdef WANT_VIA_PADLOCK + "\n\tvia\t\tVIA padlock implementation (EXPERIMENTAL)" +#endif }, { "debug", @@ -106,6 +109,8 @@ struct work { unsigned char hash[32]; }; +#include "sha256_generic.c" + static bool jobj_binary(const json_t *obj, const char *key, void *buf, size_t buflen) { @@ -222,7 +227,7 @@ static void runhash(void *state, void *input, const void *init) sha256_transform(state, input); } -static const uint32_t init_state[8] = { +const uint32_t sha256_init_state[8] = { 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 }; @@ -242,7 +247,7 @@ static bool scanhash(unsigned char *midstate, unsigned char *data, *nonce = n; runhash(hash1, data, midstate); - runhash(hash, hash1, init_state); + runhash(hash, hash1, sha256_init_state); stat_ctr++; @@ -317,6 +322,14 @@ static void *miner_thread(void *thr_id_int) } break; #endif + +#ifdef WANT_VIA_PADLOCK + case ALGO_VIA: + rc = scanhash_via(work.midstate, work.data + 64, + work.hash1, work.hash, + &hashes_done); + break; +#endif } hashmeter(thr_id, &tv_start, hashes_done); @@ -356,6 +369,10 @@ static void parse_arg (int key, char *arg) else if (!strcmp(arg, "4way")) opt_algo = ALGO_4WAY; #endif +#ifdef WANT_VIA_PADLOCK + else if (!strcmp(arg, "via")) + opt_algo = ALGO_VIA; +#endif else show_usage(); break; |