Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
f4d45640
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
大约 1 年 前同步成功
通知
9
Star
18
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Openssl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
f4d45640
编写于
2月 14, 2014
作者:
A
Andy Polyakov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
x86[_64]cpuid.pl: add low-level RDSEED.
上级
5599c733
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
48 addition
and
0 deletion
+48
-0
crypto/perlasm/x86_64-xlate.pl
crypto/perlasm/x86_64-xlate.pl
+13
-0
crypto/perlasm/x86asm.pl
crypto/perlasm/x86asm.pl
+8
-0
crypto/x86_64cpuid.pl
crypto/x86_64cpuid.pl
+15
-0
crypto/x86cpuid.pl
crypto/x86cpuid.pl
+12
-0
未找到文件。
crypto/perlasm/x86_64-xlate.pl
浏览文件 @
f4d45640
...
...
@@ -778,6 +778,19 @@ my $rdrand = sub {
}
};
my
$rdseed
=
sub
{
if
(
shift
=~
/%[er](\w+)/
)
{
my
@opcode
=
();
my
$dst
=
$
1
;
if
(
$dst
!~
/[0-9]+/
)
{
$dst
=
$regrm
{"
%e
$dst
"};
}
rex
(
\
@opcode
,
0
,
$
1
,
8
);
push
@opcode
,
0x0f
,
0xc7
,
0xf8
|
(
$dst
&
7
);
@opcode
;
}
else
{
();
}
};
sub
rxb
{
local
*opcode
=
shift
;
my
(
$dst
,
$src1
,
$src2
,
$rxb
)
=
@_
;
...
...
crypto/perlasm/x86asm.pl
浏览文件 @
f4d45640
...
...
@@ -131,6 +131,14 @@ sub ::rdrand
{
&::
generic
("
rdrand
",
@
_
);
}
}
sub
::
rdseed
{
my
(
$dst
)
=
@_
;
if
(
$dst
=~
/(e[a-dsd][ixp])/
)
{
&::
data_byte
(
0x0f
,
0xc7
,
0xf8
|
$regrm
{
$dst
});
}
else
{
&::
generic
("
rdrand
",
@
_
);
}
}
sub
rxb
{
local
*opcode
=
shift
;
my
(
$dst
,
$src1
,
$src2
,
$rxb
)
=
@_
;
...
...
crypto/x86_64cpuid.pl
浏览文件 @
f4d45640
...
...
@@ -379,6 +379,21 @@ OPENSSL_ia32_rdrand:
cmove %rcx,%rax
ret
.size OPENSSL_ia32_rdrand,.-OPENSSL_ia32_rdrand
.globl OPENSSL_ia32_rdseed
.type OPENSSL_ia32_rdseed,\@abi-omnipotent
.align 16
OPENSSL_ia32_rdseed:
mov \$8,%ecx
.Loop_rdseed:
rdseed %rax
jc .Lbreak_rdseed
loop .Loop_rdseed
.Lbreak_rdseed:
cmp \$0,%rax
cmove %rcx,%rax
ret
.size OPENSSL_ia32_rdseed,.-OPENSSL_ia32_rdseed
___
close
STDOUT
;
# flush
crypto/x86cpuid.pl
浏览文件 @
f4d45640
...
...
@@ -469,6 +469,18 @@ my $max = "ebp";
&ret
();
&function_end_B
("
OPENSSL_ia32_rdrand
");
&function_begin_B
("
OPENSSL_ia32_rdseed
");
&mov
("
ecx
",
8
);
&set_label
("
loop
");
&rdseed
("
eax
");
&jc
(
&label
("
break
"));
&loop
(
&label
("
loop
"));
&set_label
("
break
");
&cmp
("
eax
",
0
);
&cmove
("
eax
","
ecx
");
&ret
();
&function_end_B
("
OPENSSL_ia32_rdseed
");
&initseg
("
OPENSSL_cpuid_setup
");
&hidden
("
OPENSSL_cpuid_setup
");
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录