Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
061bebc0
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
1 年多 前同步成功
通知
10
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看板
提交
061bebc0
编写于
12月 03, 2005
作者:
A
Andy Polyakov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
x86cpuid.pl update.
上级
802e1d69
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
39 addition
and
0 deletion
+39
-0
crypto/x86cpuid.pl
crypto/x86cpuid.pl
+39
-0
未找到文件。
crypto/x86cpuid.pl
浏览文件 @
061bebc0
...
...
@@ -153,6 +153,45 @@ for (@ARGV) { $sse2=1 if (/-DOPENSSL_IA32_SSE2/); }
&ret
();
&function_end_B
("
OPENSSL_atomic_add
");
# This function can become handy under Win32 in situations when
# we don't know which calling convention, __stdcall or __cdecl(*),
# indirect callee is using. In C it can be deployed as
#
#ifdef OPENSSL_CPUID_OBJ
# type OPENSSL_indirect_call(void *f,...);
# ...
# OPENSSL_indirect_call(func,[up to $max arguments]);
#endif
#
# (*) it's designed to work even for __fastcall if number of
# arguments is 1 or 2!
&function_begin_B
("
OPENSSL_indirect_call
");
{
my
$i
,
$max
=
7
;
# $max has to be chosen as 4*n-1
# in order to preserve eventual
# stack alignment
&push
("
ebp
");
&mov
("
ebp
","
esp
");
&sub
("
esp
",
$max
*
4
);
&mov
("
ecx
",
&DWP
(
12
,"
ebp
"));
&mov
(
&DWP
(
0
,"
esp
"),"
ecx
");
&mov
("
edx
",
&DWP
(
16
,"
ebp
"));
&mov
(
&DWP
(
4
,"
esp
"),"
edx
");
for
(
$i
=
2
;
$i
<
$max
;
$i
++
)
{
# Some copies will be redundant/bogus...
&mov
("
eax
",
&DWP
(
12
+
$i
*
4
,"
ebp
"));
&mov
(
&DWP
(
0
+
$i
*
4
,"
esp
"),"
eax
");
}
&call
(
&DWP
(
8
,"
ebp
"));
# make the call...
&mov
("
esp
","
ebp
");
# ... and just restore the stack pointer
# without paying attention to what we called,
# (__cdecl *func) or (__stdcall *one).
&pop
("
ebp
");
&ret
();
}
&function_end_B
("
OPENSSL_indirect_call
");
&initseg
("
OPENSSL_cpuid_setup
");
&asm_finish
();
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录