libbb/sha1: simplify cpuid code
function old new delta sha1_begin 107 106 -1 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
805ececa61
commit
e7ff29402d
@ -1143,43 +1143,21 @@ static void FAST_FUNC sha512_process_block128(sha512_ctx_t *ctx)
|
|||||||
#endif /* NEED_SHA512 */
|
#endif /* NEED_SHA512 */
|
||||||
|
|
||||||
#if ENABLE_SHA1_HWACCEL
|
#if ENABLE_SHA1_HWACCEL
|
||||||
# if defined(__GNUC__) && defined(__i386__)
|
# if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
|
||||||
static void cpuid(unsigned *eax, unsigned *ebx, unsigned *ecx, unsigned *edx)
|
static void cpuid(unsigned *eax, unsigned *ebx, unsigned *ecx, unsigned *edx)
|
||||||
{
|
{
|
||||||
asm (
|
asm ("cpuid"
|
||||||
" cpuid\n"
|
: "=a"(*eax), "=b"(*ebx), "=c"(*ecx), "=d"(*edx)
|
||||||
: "=a"(*eax), /* Output */
|
: "0"(*eax), "1"(*ebx), "2"(*ecx), "3"(*edx)
|
||||||
"=b"(*ebx),
|
|
||||||
"=c"(*ecx),
|
|
||||||
"=d"(*edx)
|
|
||||||
: "0"(*eax), /* Input */
|
|
||||||
"1"(*ebx),
|
|
||||||
"2"(*ecx),
|
|
||||||
"3"(*edx)
|
|
||||||
/* No clobbered registers */
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
void FAST_FUNC sha1_process_block64_shaNI(sha1_ctx_t *ctx);
|
||||||
|
# if defined(__i386__)
|
||||||
struct ASM_expects_76_shaNI { char t[1 - 2*(offsetof(sha1_ctx_t, hash) != 76)]; };
|
struct ASM_expects_76_shaNI { char t[1 - 2*(offsetof(sha1_ctx_t, hash) != 76)]; };
|
||||||
void FAST_FUNC sha1_process_block64_shaNI(sha1_ctx_t *ctx);
|
|
||||||
# endif
|
# endif
|
||||||
# if defined(__GNUC__) && defined(__x86_64__)
|
# if defined(__x86_64__)
|
||||||
static void cpuid(unsigned *eax, unsigned *ebx, unsigned *ecx, unsigned *edx)
|
|
||||||
{
|
|
||||||
asm (
|
|
||||||
"cpuid\n"
|
|
||||||
: "=a"(*eax), /* Output */
|
|
||||||
"=b"(*ebx),
|
|
||||||
"=c"(*ecx),
|
|
||||||
"=d"(*edx)
|
|
||||||
: "0"(*eax), /* Input */
|
|
||||||
"1"(*ebx),
|
|
||||||
"2"(*ecx),
|
|
||||||
"3"(*edx)
|
|
||||||
/* No clobbered registers */
|
|
||||||
);
|
|
||||||
}
|
|
||||||
struct ASM_expects_80_shaNI { char t[1 - 2*(offsetof(sha1_ctx_t, hash) != 80)]; };
|
struct ASM_expects_80_shaNI { char t[1 - 2*(offsetof(sha1_ctx_t, hash) != 80)]; };
|
||||||
void FAST_FUNC sha1_process_block64_shaNI(sha1_ctx_t *ctx);
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1199,7 +1177,7 @@ void FAST_FUNC sha1_begin(sha1_ctx_t *ctx)
|
|||||||
if (!shaNI) {
|
if (!shaNI) {
|
||||||
unsigned eax = 7, ebx = ebx, ecx = 0, edx = edx;
|
unsigned eax = 7, ebx = ebx, ecx = 0, edx = edx;
|
||||||
cpuid(&eax, &ebx, &ecx, &edx);
|
cpuid(&eax, &ebx, &ecx, &edx);
|
||||||
shaNI = ((ebx >> 28) & 2) - 1;
|
shaNI = ((ebx >> 29) << 1) - 1;
|
||||||
}
|
}
|
||||||
if (shaNI > 0)
|
if (shaNI > 0)
|
||||||
ctx->process_block = sha1_process_block64_shaNI;
|
ctx->process_block = sha1_process_block64_shaNI;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user