Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
btwise
openssl
提交
2238e0e4
O
openssl
项目概览
btwise
/
openssl
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
openssl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2238e0e4
编写于
12月 01, 2015
作者:
A
Andy Polyakov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
crypto/sparcv9cap.c: add SIGILL-free feature detection for Solaris.
Reviewed-by:
N
Rich Salz
<
rsalz@openssl.org
>
上级
81f3d632
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
47 addition
and
0 deletion
+47
-0
crypto/sparcv9cap.c
crypto/sparcv9cap.c
+47
-0
未找到文件。
crypto/sparcv9cap.c
浏览文件 @
2238e0e4
...
...
@@ -115,6 +115,17 @@ static void common_handler(int sig)
siglongjmp
(
common_jmp
,
sig
);
}
#if defined(__sun) && defined(__SVR4)
# if defined(__GNUC__) && __GNUC__>=2
extern
unsigned
int
getisax
(
unsigned
int
vec
[],
unsigned
int
sz
)
__attribute__
((
weak
));
# elif defined(__SUNPRO_C)
#pragma weak getisax
extern
unsigned
int
getisax
(
unsigned
int
vec
[],
unsigned
int
sz
);
# else
static
unsigned
int
(
*
getisax
)
(
unsigned
int
vec
[],
unsigned
int
sz
)
=
NULL
;
# endif
#endif
void
OPENSSL_cpuid_setup
(
void
)
{
char
*
e
;
...
...
@@ -133,6 +144,42 @@ void OPENSSL_cpuid_setup(void)
return
;
}
#if defined(__sun) && defined(__SVR4)
if
(
getisax
!=
NULL
)
{
unsigned
int
vec
[
1
];
if
(
getisax
(
vec
,
1
))
{
if
(
vec
[
0
]
&
0x0020
)
OPENSSL_sparcv9cap_P
[
0
]
|=
SPARCV9_VIS1
;
if
(
vec
[
0
]
&
0x0040
)
OPENSSL_sparcv9cap_P
[
0
]
|=
SPARCV9_VIS2
;
if
(
vec
[
0
]
&
0x0080
)
OPENSSL_sparcv9cap_P
[
0
]
|=
SPARCV9_BLK
;
if
(
vec
[
0
]
&
0x0100
)
OPENSSL_sparcv9cap_P
[
0
]
|=
SPARCV9_FMADD
;
if
(
vec
[
0
]
&
0x0400
)
OPENSSL_sparcv9cap_P
[
0
]
|=
SPARCV9_VIS3
;
/* reconstruct %cfr copy */
OPENSSL_sparcv9cap_P
[
1
]
=
(
vec
[
0
]
>>
17
)
&
0x3ff
;
OPENSSL_sparcv9cap_P
[
1
]
|=
(
OPENSSL_sparcv9cap_P
[
1
]
&
CFR_MONTMUL
)
<<
1
;
if
(
vec
[
0
]
&
0x20000000
)
OPENSSL_sparcv9cap_P
[
1
]
|=
CFR_CRC32C
;
/* Some heuristics */
/* all known VIS2-capable CPUs have unprivileged tick counter */
if
(
OPENSSL_sparcv9cap_P
[
0
]
&
SPARCV9_VIS2
)
OPENSSL_sparcv9cap_P
[
0
]
&=
~
SPARCV9_TICK_PRIVILEGED
;
OPENSSL_sparcv9cap_P
[
0
]
|=
SPARCV9_PREFER_FPU
;
/* detect UltraSPARC-Tx, see sparccpud.S for details... */
if
((
OPENSSL_sparcv9cap_P
[
0
]
&
SPARCV9_VIS1
)
&&
_sparcv9_vis1_instrument
()
>=
12
)
OPENSSL_sparcv9cap_P
[
0
]
&=
~
(
SPARCV9_VIS1
|
SPARCV9_PREFER_FPU
);
}
if
(
sizeof
(
size_t
)
==
8
)
OPENSSL_sparcv9cap_P
[
0
]
|=
SPARCV9_64BIT_STACK
;
return
;
}
#endif
/* Initial value, fits UltraSPARC-I&II... */
OPENSSL_sparcv9cap_P
[
0
]
=
SPARCV9_PREFER_FPU
|
SPARCV9_TICK_PRIVILEGED
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录