mirror of
https://github.com/monero-project/monero.git
synced 2024-12-14 12:26:31 +02:00
Merge pull request #1968
5e5b8512
Fix obsolete OpenSSL API usage (hyc)6c72d6a0
Fix Android recognition (hyc)e65d66fe
Fix ARM64 identification (hyc)a4673218
Clean up ARMv8-a aes_expand_key() (hyc)a3d77901
Fix block_longhash_worker thread (hyc)
This commit is contained in:
commit
865bb03ecf
@ -80,9 +80,10 @@ if (ARM_TEST STREQUAL "arm")
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ARM_ID STREQUAL "aarch64" OR ARM_ID STREQUAL "arm64")
|
if (ARM_ID STREQUAL "aarch64" OR ARM_ID STREQUAL "arm64" OR ARM_ID STREQUAL "armv8-a")
|
||||||
set(ARM 1)
|
set(ARM 1)
|
||||||
set(ARM8 1)
|
set(ARM8 1)
|
||||||
|
set(ARCH "armv8-a")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WIN32 OR ARM)
|
if(WIN32 OR ARM)
|
||||||
|
6
external/db_drivers/liblmdb/mdb.c
vendored
6
external/db_drivers/liblmdb/mdb.c
vendored
@ -137,7 +137,7 @@ typedef SSIZE_T ssize_t;
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__sun) || defined(ANDROID)
|
#if defined(__sun) || defined(__ANDROID__)
|
||||||
/* Most platforms have posix_memalign, older may only have memalign */
|
/* Most platforms have posix_memalign, older may only have memalign */
|
||||||
#define HAVE_MEMALIGN 1
|
#define HAVE_MEMALIGN 1
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
@ -153,7 +153,7 @@ typedef SSIZE_T ssize_t;
|
|||||||
# define MDB_USE_SYSV_SEM 1
|
# define MDB_USE_SYSV_SEM 1
|
||||||
# endif
|
# endif
|
||||||
# define MDB_FDATASYNC fsync
|
# define MDB_FDATASYNC fsync
|
||||||
#elif defined(ANDROID)
|
#elif defined(__ANDROID__)
|
||||||
# define MDB_FDATASYNC fsync
|
# define MDB_FDATASYNC fsync
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -298,7 +298,7 @@ union semun {
|
|||||||
*/
|
*/
|
||||||
#ifndef MDB_USE_ROBUST
|
#ifndef MDB_USE_ROBUST
|
||||||
/* Android currently lacks Robust Mutex support. So does glibc < 2.4. */
|
/* Android currently lacks Robust Mutex support. So does glibc < 2.4. */
|
||||||
# if defined(MDB_USE_POSIX_MUTEX) && (defined(ANDROID) || \
|
# if defined(MDB_USE_POSIX_MUTEX) && (defined(__ANDROID__) || \
|
||||||
(defined(__GLIBC__) && GLIBC_VER < 0x020004))
|
(defined(__GLIBC__) && GLIBC_VER < 0x020004))
|
||||||
# define MDB_USE_ROBUST 0
|
# define MDB_USE_ROBUST 0
|
||||||
# else
|
# else
|
||||||
|
4
external/unbound/validator/val_secalgo.c
vendored
4
external/unbound/validator/val_secalgo.c
vendored
@ -345,7 +345,11 @@ setup_key_digest(int algo, EVP_PKEY** evp_key, const EVP_MD** digest_type,
|
|||||||
"EVP_PKEY_assign_DSA failed");
|
"EVP_PKEY_assign_DSA failed");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#ifdef HAVE_EVP_DSS1
|
||||||
*digest_type = EVP_dss1();
|
*digest_type = EVP_dss1();
|
||||||
|
#else
|
||||||
|
*digest_type = EVP_sha1();
|
||||||
|
#endif
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case LDNS_RSASHA1:
|
case LDNS_RSASHA1:
|
||||||
|
@ -722,32 +722,24 @@ union cn_slow_hash_state
|
|||||||
* key schedule. Don't try to use this for vanilla AES.
|
* key schedule. Don't try to use this for vanilla AES.
|
||||||
*/
|
*/
|
||||||
static void aes_expand_key(const uint8_t *key, uint8_t *expandedKey) {
|
static void aes_expand_key(const uint8_t *key, uint8_t *expandedKey) {
|
||||||
__asm__("mov x2, %1\n\t" : : "r"(key), "r"(expandedKey));
|
static const int rcon[] = {
|
||||||
|
0x01,0x01,0x01,0x01,
|
||||||
|
0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d, // rotate-n-splat
|
||||||
|
0x1b,0x1b,0x1b,0x1b };
|
||||||
__asm__(
|
__asm__(
|
||||||
" adr x3,Lrcon\n"
|
|
||||||
"\n"
|
|
||||||
" eor v0.16b,v0.16b,v0.16b\n"
|
" eor v0.16b,v0.16b,v0.16b\n"
|
||||||
" ld1 {v3.16b},[x0],#16\n"
|
" ld1 {v3.16b},[%0],#16\n"
|
||||||
" ld1 {v1.4s,v2.4s},[x3],#32\n"
|
" ld1 {v1.4s,v2.4s},[%2],#32\n"
|
||||||
" b L256\n"
|
" ld1 {v4.16b},[%0]\n"
|
||||||
".align 5\n"
|
" mov w2,#5\n"
|
||||||
"Lrcon:\n"
|
" st1 {v3.4s},[%1],#16\n"
|
||||||
".long 0x01,0x01,0x01,0x01\n"
|
|
||||||
".long 0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d,0x0c0f0e0d // rotate-n-splat\n"
|
|
||||||
".long 0x1b,0x1b,0x1b,0x1b\n"
|
|
||||||
"\n"
|
"\n"
|
||||||
".align 4\n"
|
"1:\n"
|
||||||
"L256:\n"
|
|
||||||
" ld1 {v4.16b},[x0]\n"
|
|
||||||
" mov w1,#5\n"
|
|
||||||
" st1 {v3.4s},[x2],#16\n"
|
|
||||||
"\n"
|
|
||||||
"Loop256:\n"
|
|
||||||
" tbl v6.16b,{v4.16b},v2.16b\n"
|
" tbl v6.16b,{v4.16b},v2.16b\n"
|
||||||
" ext v5.16b,v0.16b,v3.16b,#12\n"
|
" ext v5.16b,v0.16b,v3.16b,#12\n"
|
||||||
" st1 {v4.4s},[x2],#16\n"
|
" st1 {v4.4s},[%1],#16\n"
|
||||||
" aese v6.16b,v0.16b\n"
|
" aese v6.16b,v0.16b\n"
|
||||||
" subs w1,w1,#1\n"
|
" subs w2,w2,#1\n"
|
||||||
"\n"
|
"\n"
|
||||||
" eor v3.16b,v3.16b,v5.16b\n"
|
" eor v3.16b,v3.16b,v5.16b\n"
|
||||||
" ext v5.16b,v0.16b,v5.16b,#12\n"
|
" ext v5.16b,v0.16b,v5.16b,#12\n"
|
||||||
@ -757,8 +749,8 @@ __asm__(
|
|||||||
" eor v3.16b,v3.16b,v5.16b\n"
|
" eor v3.16b,v3.16b,v5.16b\n"
|
||||||
" shl v1.16b,v1.16b,#1\n"
|
" shl v1.16b,v1.16b,#1\n"
|
||||||
" eor v3.16b,v3.16b,v6.16b\n"
|
" eor v3.16b,v3.16b,v6.16b\n"
|
||||||
" st1 {v3.4s},[x2],#16\n"
|
" st1 {v3.4s},[%1],#16\n"
|
||||||
" b.eq Ldone\n"
|
" b.eq 2f\n"
|
||||||
"\n"
|
"\n"
|
||||||
" dup v6.4s,v3.s[3] // just splat\n"
|
" dup v6.4s,v3.s[3] // just splat\n"
|
||||||
" ext v5.16b,v0.16b,v4.16b,#12\n"
|
" ext v5.16b,v0.16b,v4.16b,#12\n"
|
||||||
@ -771,9 +763,9 @@ __asm__(
|
|||||||
" eor v4.16b,v4.16b,v5.16b\n"
|
" eor v4.16b,v4.16b,v5.16b\n"
|
||||||
"\n"
|
"\n"
|
||||||
" eor v4.16b,v4.16b,v6.16b\n"
|
" eor v4.16b,v4.16b,v6.16b\n"
|
||||||
" b Loop256\n"
|
" b 1b\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Ldone:\n");
|
"2:\n" : : "r"(key), "r"(expandedKey), "r"(rcon));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* An ordinary AES round is a sequence of SubBytes, ShiftRows, MixColumns, AddRoundKey. There
|
/* An ordinary AES round is a sequence of SubBytes, ShiftRows, MixColumns, AddRoundKey. There
|
||||||
|
@ -3665,6 +3665,8 @@ bool Blockchain::prepare_handle_incoming_blocks(const std::list<block_complete_e
|
|||||||
std::vector<std::unordered_map<crypto::hash, crypto::hash>> maps(threads);
|
std::vector<std::unordered_map<crypto::hash, crypto::hash>> maps(threads);
|
||||||
std::vector < std::vector < block >> blocks(threads);
|
std::vector < std::vector < block >> blocks(threads);
|
||||||
auto it = blocks_entry.begin();
|
auto it = blocks_entry.begin();
|
||||||
|
boost::thread::attributes attrs;
|
||||||
|
attrs.set_stack_size(THREAD_STACK_SIZE);
|
||||||
|
|
||||||
for (uint64_t i = 0; i < threads; i++)
|
for (uint64_t i = 0; i < threads; i++)
|
||||||
{
|
{
|
||||||
@ -3724,7 +3726,7 @@ bool Blockchain::prepare_handle_incoming_blocks(const std::list<block_complete_e
|
|||||||
m_blocks_longhash_table.clear();
|
m_blocks_longhash_table.clear();
|
||||||
for (uint64_t i = 0; i < threads; i++)
|
for (uint64_t i = 0; i < threads; i++)
|
||||||
{
|
{
|
||||||
thread_list.push_back(new boost::thread(&Blockchain::block_longhash_worker, this, height + (i * batches), std::cref(blocks[i]), std::ref(maps[i])));
|
thread_list.push_back(new boost::thread(attrs, boost::bind(&Blockchain::block_longhash_worker, this, height + (i * batches), std::cref(blocks[i]), std::ref(maps[i]))));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t j = 0; j < thread_list.size(); j++)
|
for (size_t j = 0; j < thread_list.size(); j++)
|
||||||
|
Loading…
Reference in New Issue
Block a user