Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xiphi1978
linux
提交
36344762
L
linux
项目概览
xiphi1978
/
linux
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
36344762
编写于
2月 25, 2006
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[SPARC64]: Niagara optimized XOR functions for RAID.
Signed-off-by:
N
David S. Miller
<
davem@davemloft.net
>
上级
c4e9249b
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
342 addition
and
5 deletion
+342
-5
arch/sparc64/kernel/sparc64_ksyms.c
arch/sparc64/kernel/sparc64_ksyms.c
+13
-0
arch/sparc64/lib/xor.S
arch/sparc64/lib/xor.S
+299
-1
include/asm-sparc64/xor.h
include/asm-sparc64/xor.h
+30
-4
未找到文件。
arch/sparc64/kernel/sparc64_ksyms.c
浏览文件 @
36344762
...
...
@@ -108,6 +108,14 @@ extern void xor_vis_4(unsigned long, unsigned long *, unsigned long *,
extern
void
xor_vis_5
(
unsigned
long
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
);
extern
void
xor_niagara_2
(
unsigned
long
,
unsigned
long
*
,
unsigned
long
*
);
extern
void
xor_niagara_3
(
unsigned
long
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
);
extern
void
xor_niagara_4
(
unsigned
long
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
);
extern
void
xor_niagara_5
(
unsigned
long
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
);
/* Per-CPU information table */
EXPORT_PER_CPU_SYMBOL
(
__cpu_data
);
...
...
@@ -388,4 +396,9 @@ EXPORT_SYMBOL(xor_vis_3);
EXPORT_SYMBOL
(
xor_vis_4
);
EXPORT_SYMBOL
(
xor_vis_5
);
EXPORT_SYMBOL
(
xor_niagara_2
);
EXPORT_SYMBOL
(
xor_niagara_3
);
EXPORT_SYMBOL
(
xor_niagara_4
);
EXPORT_SYMBOL
(
xor_niagara_5
);
EXPORT_SYMBOL
(
prom_palette
);
arch/sparc64/lib/xor.S
浏览文件 @
36344762
...
...
@@ -2,9 +2,10 @@
*
arch
/
sparc64
/
lib
/
xor
.
S
*
*
High
speed
xor_block
operation
for
RAID4
/
5
utilizing
the
*
UltraSparc
Visual
Instruction
Set
.
*
UltraSparc
Visual
Instruction
Set
and
Niagara
store
-
init
/
twin
-
load
.
*
*
Copyright
(
C
)
1997
,
1999
Jakub
Jelinek
(
jj
@
ultra
.
linux
.
cz
)
*
Copyright
(
C
)
2006
David
S
.
Miller
<
davem
@
davemloft
.
net
>
*/
#include <asm/visasm.h>
...
...
@@ -19,6 +20,8 @@
*/
.
text
.
align
32
/
*
VIS
versions
.
*/
.
globl
xor_vis_2
.
type
xor_vis_2
,#
function
xor_vis_2
:
...
...
@@ -352,3 +355,298 @@ xor_vis_5:
ret
restore
.
size
xor_vis_5
,
.
-
xor_vis_5
/
*
Niagara
versions
.
*/
.
globl
xor_niagara_2
.
type
xor_niagara_2
,#
function
xor_niagara_2
:
/
*
%
o0
=
bytes
,
%
o1
=
dest
,
%
o2
=
src
*/
save
%
sp
,
-
192
,
%
sp
prefetch
[%
i1
],
#
n_writes
prefetch
[%
i2
],
#
one_read
rd
%
asi
,
%
g7
wr
%
g0
,
ASI_BLK_INIT_QUAD_LDD_P
,
%
asi
srlx
%
i0
,
6
,
%
g1
mov
%
i1
,
%
i0
mov
%
i2
,
%
i1
1
:
ldda
[%
i1
+
0x00
]
%
asi
,
%
i2
/*
%
i2
/%
i3
=
src
+
0x00
*/
ldda
[%
i1
+
0x10
]
%
asi
,
%
i4
/*
%
i4
/%
i5
=
src
+
0x10
*/
ldda
[%
i1
+
0x20
]
%
asi
,
%
g2
/*
%
g2
/%
g3
=
src
+
0x20
*/
ldda
[%
i1
+
0x30
]
%
asi
,
%
l0
/*
%
l0
/%
l1
=
src
+
0x30
*/
prefetch
[%
i1
+
0x40
],
#
one_read
ldda
[%
i0
+
0x00
]
%
asi
,
%
o0
/*
%
o0
/%
o1
=
dest
+
0x00
*/
ldda
[%
i0
+
0x10
]
%
asi
,
%
o2
/*
%
o2
/%
o3
=
dest
+
0x10
*/
ldda
[%
i0
+
0x20
]
%
asi
,
%
o4
/*
%
o4
/%
o5
=
dest
+
0x20
*/
ldda
[%
i0
+
0x30
]
%
asi
,
%
l2
/*
%
l2
/%
l3
=
dest
+
0x30
*/
prefetch
[%
i0
+
0x40
],
#
n_writes
xor
%
o0
,
%
i2
,
%
o0
xor
%
o1
,
%
i3
,
%
o1
stxa
%
o0
,
[%
i0
+
0x00
]
%
asi
stxa
%
o1
,
[%
i0
+
0x08
]
%
asi
xor
%
o2
,
%
i4
,
%
o2
xor
%
o3
,
%
i5
,
%
o3
stxa
%
o2
,
[%
i0
+
0x10
]
%
asi
stxa
%
o3
,
[%
i0
+
0x18
]
%
asi
xor
%
o4
,
%
g2
,
%
o4
xor
%
o5
,
%
g3
,
%
o5
stxa
%
o4
,
[%
i0
+
0x20
]
%
asi
stxa
%
o5
,
[%
i0
+
0x28
]
%
asi
xor
%
l2
,
%
l0
,
%
l2
xor
%
l3
,
%
l1
,
%
l3
stxa
%
l2
,
[%
i0
+
0x30
]
%
asi
stxa
%
l3
,
[%
i0
+
0x38
]
%
asi
add
%
i0
,
0x40
,
%
i0
subcc
%
g1
,
1
,
%
g1
bne
,
pt
%
xcc
,
1
b
add
%
i1
,
0x40
,
%
i1
membar
#
Sync
wr
%
g7
,
0x0
,
%
asi
ret
restore
.
size
xor_niagara_2
,
.
-
xor_niagara_2
.
globl
xor_niagara_3
.
type
xor_niagara_3
,#
function
xor_niagara_3
:
/
*
%
o0
=
bytes
,
%
o1
=
dest
,
%
o2
=
src1
,
%
o3
=
src2
*/
save
%
sp
,
-
192
,
%
sp
prefetch
[%
i1
],
#
n_writes
prefetch
[%
i2
],
#
one_read
prefetch
[%
i3
],
#
one_read
rd
%
asi
,
%
g7
wr
%
g0
,
ASI_BLK_INIT_QUAD_LDD_P
,
%
asi
srlx
%
i0
,
6
,
%
g1
mov
%
i1
,
%
i0
mov
%
i2
,
%
i1
mov
%
i3
,
%
l7
1
:
ldda
[%
i1
+
0x00
]
%
asi
,
%
i2
/*
%
i2
/%
i3
=
src1
+
0x00
*/
ldda
[%
i1
+
0x10
]
%
asi
,
%
i4
/*
%
i4
/%
i5
=
src1
+
0x10
*/
ldda
[%
l7
+
0x00
]
%
asi
,
%
g2
/*
%
g2
/%
g3
=
src2
+
0x00
*/
ldda
[%
l7
+
0x10
]
%
asi
,
%
l0
/*
%
l0
/%
l1
=
src2
+
0x10
*/
ldda
[%
i0
+
0x00
]
%
asi
,
%
o0
/*
%
o0
/%
o1
=
dest
+
0x00
*/
ldda
[%
i0
+
0x10
]
%
asi
,
%
o2
/*
%
o2
/%
o3
=
dest
+
0x10
*/
xor
%
g2
,
%
i2
,
%
g2
xor
%
g3
,
%
i3
,
%
g3
xor
%
o0
,
%
g2
,
%
o0
xor
%
o1
,
%
g3
,
%
o1
stxa
%
o0
,
[%
i0
+
0x00
]
%
asi
stxa
%
o1
,
[%
i0
+
0x08
]
%
asi
ldda
[%
i1
+
0x20
]
%
asi
,
%
i2
/*
%
i2
/%
i3
=
src1
+
0x20
*/
ldda
[%
l7
+
0x20
]
%
asi
,
%
g2
/*
%
g2
/%
g3
=
src2
+
0x20
*/
ldda
[%
i0
+
0x20
]
%
asi
,
%
o0
/*
%
o0
/%
o1
=
dest
+
0x20
*/
xor
%
l0
,
%
i4
,
%
l0
xor
%
l1
,
%
i5
,
%
l1
xor
%
o2
,
%
l0
,
%
o2
xor
%
o3
,
%
l1
,
%
o3
stxa
%
o2
,
[%
i0
+
0x10
]
%
asi
stxa
%
o3
,
[%
i0
+
0x18
]
%
asi
ldda
[%
i1
+
0x30
]
%
asi
,
%
i4
/*
%
i4
/%
i5
=
src1
+
0x30
*/
ldda
[%
l7
+
0x30
]
%
asi
,
%
l0
/*
%
l0
/%
l1
=
src2
+
0x30
*/
ldda
[%
i0
+
0x30
]
%
asi
,
%
o2
/*
%
o2
/%
o3
=
dest
+
0x30
*/
prefetch
[%
i1
+
0x40
],
#
one_read
prefetch
[%
l7
+
0x40
],
#
one_read
prefetch
[%
i0
+
0x40
],
#
n_writes
xor
%
g2
,
%
i2
,
%
g2
xor
%
g3
,
%
i3
,
%
g3
xor
%
o0
,
%
g2
,
%
o0
xor
%
o1
,
%
g3
,
%
o1
stxa
%
o0
,
[%
i0
+
0x20
]
%
asi
stxa
%
o1
,
[%
i0
+
0x28
]
%
asi
xor
%
l0
,
%
i4
,
%
l0
xor
%
l1
,
%
i5
,
%
l1
xor
%
o2
,
%
l0
,
%
o2
xor
%
o3
,
%
l1
,
%
o3
stxa
%
o2
,
[%
i0
+
0x30
]
%
asi
stxa
%
o3
,
[%
i0
+
0x38
]
%
asi
add
%
i0
,
0x40
,
%
i0
add
%
i1
,
0x40
,
%
i1
subcc
%
g1
,
1
,
%
g1
bne
,
pt
%
xcc
,
1
b
add
%
l7
,
0x40
,
%
l7
membar
#
Sync
wr
%
g7
,
0x0
,
%
asi
ret
restore
.
size
xor_niagara_3
,
.
-
xor_niagara_3
.
globl
xor_niagara_4
.
type
xor_niagara_4
,#
function
xor_niagara_4
:
/
*
%
o0
=
bytes
,
%
o1
=
dest
,
%
o2
=
src1
,
%
o3
=
src2
,
%
o4
=
src3
*/
save
%
sp
,
-
192
,
%
sp
prefetch
[%
i1
],
#
n_writes
prefetch
[%
i2
],
#
one_read
prefetch
[%
i3
],
#
one_read
prefetch
[%
i4
],
#
one_read
rd
%
asi
,
%
g7
wr
%
g0
,
ASI_BLK_INIT_QUAD_LDD_P
,
%
asi
srlx
%
i0
,
6
,
%
g1
mov
%
i1
,
%
i0
mov
%
i2
,
%
i1
mov
%
i3
,
%
l7
mov
%
i4
,
%
l6
1
:
ldda
[%
i1
+
0x00
]
%
asi
,
%
i2
/*
%
i2
/%
i3
=
src1
+
0x00
*/
ldda
[%
l7
+
0x00
]
%
asi
,
%
i4
/*
%
i4
/%
i5
=
src2
+
0x00
*/
ldda
[%
l6
+
0x00
]
%
asi
,
%
g2
/*
%
g2
/%
g3
=
src3
+
0x00
*/
ldda
[%
i0
+
0x00
]
%
asi
,
%
l0
/*
%
l0
/%
l1
=
dest
+
0x00
*/
xor
%
i4
,
%
i2
,
%
i4
xor
%
i5
,
%
i3
,
%
i5
ldda
[%
i1
+
0x10
]
%
asi
,
%
i2
/*
%
i2
/%
i3
=
src1
+
0x10
*/
xor
%
g2
,
%
i4
,
%
g2
xor
%
g3
,
%
i5
,
%
g3
ldda
[%
i7
+
0x10
]
%
asi
,
%
i4
/*
%
i4
/%
i5
=
src2
+
0x10
*/
xor
%
l0
,
%
g2
,
%
l0
xor
%
l1
,
%
g3
,
%
l1
stxa
%
l0
,
[%
i0
+
0x00
]
%
asi
stxa
%
l1
,
[%
i0
+
0x08
]
%
asi
ldda
[%
i6
+
0x10
]
%
asi
,
%
g2
/*
%
g2
/%
g3
=
src3
+
0x10
*/
ldda
[%
i0
+
0x10
]
%
asi
,
%
l0
/*
%
l0
/%
l1
=
dest
+
0x10
*/
xor
%
i4
,
%
i2
,
%
i4
xor
%
i5
,
%
i3
,
%
i5
ldda
[%
i1
+
0x20
]
%
asi
,
%
i2
/*
%
i2
/%
i3
=
src1
+
0x20
*/
xor
%
g2
,
%
i4
,
%
g2
xor
%
g3
,
%
i5
,
%
g3
ldda
[%
i7
+
0x20
]
%
asi
,
%
i4
/*
%
i4
/%
i5
=
src2
+
0x20
*/
xor
%
l0
,
%
g2
,
%
l0
xor
%
l1
,
%
g3
,
%
l1
stxa
%
l0
,
[%
i0
+
0x10
]
%
asi
stxa
%
l1
,
[%
i0
+
0x18
]
%
asi
ldda
[%
i6
+
0x20
]
%
asi
,
%
g2
/*
%
g2
/%
g3
=
src3
+
0x20
*/
ldda
[%
i0
+
0x20
]
%
asi
,
%
l0
/*
%
l0
/%
l1
=
dest
+
0x20
*/
xor
%
i4
,
%
i2
,
%
i4
xor
%
i5
,
%
i3
,
%
i5
ldda
[%
i1
+
0x30
]
%
asi
,
%
i2
/*
%
i2
/%
i3
=
src1
+
0x30
*/
xor
%
g2
,
%
i4
,
%
g2
xor
%
g3
,
%
i5
,
%
g3
ldda
[%
i7
+
0x30
]
%
asi
,
%
i4
/*
%
i4
/%
i5
=
src2
+
0x30
*/
xor
%
l0
,
%
g2
,
%
l0
xor
%
l1
,
%
g3
,
%
l1
stxa
%
l0
,
[%
i0
+
0x20
]
%
asi
stxa
%
l1
,
[%
i0
+
0x28
]
%
asi
ldda
[%
i6
+
0x30
]
%
asi
,
%
g2
/*
%
g2
/%
g3
=
src3
+
0x30
*/
ldda
[%
i0
+
0x30
]
%
asi
,
%
l0
/*
%
l0
/%
l1
=
dest
+
0x30
*/
prefetch
[%
i1
+
0x40
],
#
one_read
prefetch
[%
l7
+
0x40
],
#
one_read
prefetch
[%
l6
+
0x40
],
#
one_read
prefetch
[%
i0
+
0x40
],
#
n_writes
xor
%
i4
,
%
i2
,
%
i4
xor
%
i5
,
%
i3
,
%
i5
xor
%
g2
,
%
i4
,
%
g2
xor
%
g3
,
%
i5
,
%
g3
xor
%
l0
,
%
g2
,
%
l0
xor
%
l1
,
%
g3
,
%
l1
stxa
%
l0
,
[%
i0
+
0x30
]
%
asi
stxa
%
l1
,
[%
i0
+
0x38
]
%
asi
add
%
i0
,
0x40
,
%
i0
add
%
i1
,
0x40
,
%
i1
add
%
l7
,
0x40
,
%
l7
subcc
%
g1
,
1
,
%
g1
bne
,
pt
%
xcc
,
1
b
add
%
l6
,
0x40
,
%
l6
membar
#
Sync
wr
%
g7
,
0x0
,
%
asi
ret
restore
.
size
xor_niagara_4
,
.
-
xor_niagara_4
.
globl
xor_niagara_5
.
type
xor_niagara_5
,#
function
xor_niagara_5
:
/
*
%
o0
=
bytes
,
%
o1
=
dest
,
%
o2
=
src1
,
%
o3
=
src2
,
%
o4
=
src3
,
%
o5
=
src4
*/
save
%
sp
,
-
192
,
%
sp
prefetch
[%
i1
],
#
n_writes
prefetch
[%
i2
],
#
one_read
prefetch
[%
i3
],
#
one_read
prefetch
[%
i4
],
#
one_read
prefetch
[%
i5
],
#
one_read
rd
%
asi
,
%
g7
wr
%
g0
,
ASI_BLK_INIT_QUAD_LDD_P
,
%
asi
srlx
%
i0
,
6
,
%
g1
mov
%
i1
,
%
i0
mov
%
i2
,
%
i1
mov
%
i3
,
%
l7
mov
%
i4
,
%
l6
mov
%
i5
,
%
l5
1
:
ldda
[%
i1
+
0x00
]
%
asi
,
%
i2
/*
%
i2
/%
i3
=
src1
+
0x00
*/
ldda
[%
l7
+
0x00
]
%
asi
,
%
i4
/*
%
i4
/%
i5
=
src2
+
0x00
*/
ldda
[%
l6
+
0x00
]
%
asi
,
%
g2
/*
%
g2
/%
g3
=
src3
+
0x00
*/
ldda
[%
l5
+
0x00
]
%
asi
,
%
l0
/*
%
l0
/%
l1
=
src4
+
0x00
*/
ldda
[%
i0
+
0x00
]
%
asi
,
%
l2
/*
%
l2
/%
l3
=
dest
+
0x00
*/
xor
%
i4
,
%
i2
,
%
i4
xor
%
i5
,
%
i3
,
%
i5
ldda
[%
i1
+
0x10
]
%
asi
,
%
i2
/*
%
i2
/%
i3
=
src1
+
0x10
*/
xor
%
g2
,
%
i4
,
%
g2
xor
%
g3
,
%
i5
,
%
g3
ldda
[%
l7
+
0x10
]
%
asi
,
%
i4
/*
%
i4
/%
i5
=
src2
+
0x10
*/
xor
%
l0
,
%
g2
,
%
l0
xor
%
l1
,
%
g3
,
%
l1
ldda
[%
l6
+
0x10
]
%
asi
,
%
g2
/*
%
g2
/%
g3
=
src3
+
0x10
*/
xor
%
l2
,
%
l0
,
%
l2
xor
%
l3
,
%
l1
,
%
l3
stxa
%
l2
,
[%
i0
+
0x00
]
%
asi
stxa
%
l3
,
[%
i0
+
0x08
]
%
asi
ldda
[%
l5
+
0x10
]
%
asi
,
%
l0
/*
%
l0
/%
l1
=
src4
+
0x10
*/
ldda
[%
i0
+
0x10
]
%
asi
,
%
l2
/*
%
l2
/%
l3
=
dest
+
0x10
*/
xor
%
i4
,
%
i2
,
%
i4
xor
%
i5
,
%
i3
,
%
i5
ldda
[%
i1
+
0x20
]
%
asi
,
%
i2
/*
%
i2
/%
i3
=
src1
+
0x20
*/
xor
%
g2
,
%
i4
,
%
g2
xor
%
g3
,
%
i5
,
%
g3
ldda
[%
l7
+
0x20
]
%
asi
,
%
i4
/*
%
i4
/%
i5
=
src2
+
0x20
*/
xor
%
l0
,
%
g2
,
%
l0
xor
%
l1
,
%
g3
,
%
l1
ldda
[%
l6
+
0x20
]
%
asi
,
%
g2
/*
%
g2
/%
g3
=
src3
+
0x20
*/
xor
%
l2
,
%
l0
,
%
l2
xor
%
l3
,
%
l1
,
%
l3
stxa
%
l2
,
[%
i0
+
0x10
]
%
asi
stxa
%
l3
,
[%
i0
+
0x18
]
%
asi
ldda
[%
l5
+
0x20
]
%
asi
,
%
l0
/*
%
l0
/%
l1
=
src4
+
0x20
*/
ldda
[%
i0
+
0x20
]
%
asi
,
%
l2
/*
%
l2
/%
l3
=
dest
+
0x20
*/
xor
%
i4
,
%
i2
,
%
i4
xor
%
i5
,
%
i3
,
%
i5
ldda
[%
i1
+
0x30
]
%
asi
,
%
i2
/*
%
i2
/%
i3
=
src1
+
0x30
*/
xor
%
g2
,
%
i4
,
%
g2
xor
%
g3
,
%
i5
,
%
g3
ldda
[%
l7
+
0x30
]
%
asi
,
%
i4
/*
%
i4
/%
i5
=
src2
+
0x30
*/
xor
%
l0
,
%
g2
,
%
l0
xor
%
l1
,
%
g3
,
%
l1
ldda
[%
l6
+
0x30
]
%
asi
,
%
g2
/*
%
g2
/%
g3
=
src3
+
0x30
*/
xor
%
l2
,
%
l0
,
%
l2
xor
%
l3
,
%
l1
,
%
l3
stxa
%
l2
,
[%
i0
+
0x20
]
%
asi
stxa
%
l3
,
[%
i0
+
0x28
]
%
asi
ldda
[%
l5
+
0x30
]
%
asi
,
%
l0
/*
%
l0
/%
l1
=
src4
+
0x30
*/
ldda
[%
i0
+
0x30
]
%
asi
,
%
l2
/*
%
l2
/%
l3
=
dest
+
0x30
*/
prefetch
[%
i1
+
0x40
],
#
one_read
prefetch
[%
l7
+
0x40
],
#
one_read
prefetch
[%
l6
+
0x40
],
#
one_read
prefetch
[%
l5
+
0x40
],
#
one_read
prefetch
[%
i0
+
0x40
],
#
n_writes
xor
%
i4
,
%
i2
,
%
i4
xor
%
i5
,
%
i3
,
%
i5
xor
%
g2
,
%
i4
,
%
g2
xor
%
g3
,
%
i5
,
%
g3
xor
%
l0
,
%
g2
,
%
l0
xor
%
l1
,
%
g3
,
%
l1
xor
%
l2
,
%
l0
,
%
l2
xor
%
l3
,
%
l1
,
%
l3
stxa
%
l2
,
[%
i0
+
0x30
]
%
asi
stxa
%
l3
,
[%
i0
+
0x38
]
%
asi
add
%
i0
,
0x40
,
%
i0
add
%
i1
,
0x40
,
%
i1
add
%
l7
,
0x40
,
%
l7
add
%
l6
,
0x40
,
%
l6
subcc
%
g1
,
1
,
%
g1
bne
,
pt
%
xcc
,
1
b
add
%
l5
,
0x40
,
%
l5
membar
#
Sync
wr
%
g7
,
0x0
,
%
asi
ret
restore
.
size
xor_niagara_5
,
.
-
xor_niagara_5
include/asm-sparc64/xor.h
浏览文件 @
36344762
...
...
@@ -2,9 +2,11 @@
* include/asm-sparc64/xor.h
*
* High speed xor_block operation for RAID4/5 utilizing the
* UltraSparc Visual Instruction Set.
* UltraSparc Visual Instruction Set and Niagara block-init
* twin-load instructions.
*
* Copyright (C) 1997, 1999 Jakub Jelinek (jj@ultra.linux.cz)
* Copyright (C) 2006 David S. Miller <davem@davemloft.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
...
...
@@ -16,8 +18,7 @@
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <asm/pstate.h>
#include <asm/asi.h>
#include <asm/spitfire.h>
extern
void
xor_vis_2
(
unsigned
long
,
unsigned
long
*
,
unsigned
long
*
);
extern
void
xor_vis_3
(
unsigned
long
,
unsigned
long
*
,
unsigned
long
*
,
...
...
@@ -37,4 +38,29 @@ static struct xor_block_template xor_block_VIS = {
.
do_5
=
xor_vis_5
,
};
#define XOR_TRY_TEMPLATES xor_speed(&xor_block_VIS)
extern
void
xor_niagara_2
(
unsigned
long
,
unsigned
long
*
,
unsigned
long
*
);
extern
void
xor_niagara_3
(
unsigned
long
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
);
extern
void
xor_niagara_4
(
unsigned
long
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
);
extern
void
xor_niagara_5
(
unsigned
long
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
);
static
struct
xor_block_template
xor_block_niagara
=
{
.
name
=
"Niagara"
,
.
do_2
=
xor_niagara_2
,
.
do_3
=
xor_niagara_3
,
.
do_4
=
xor_niagara_4
,
.
do_5
=
xor_niagara_5
,
};
#undef XOR_TRY_TEMPLATES
#define XOR_TRY_TEMPLATES \
do { \
xor_speed(&xor_block_VIS); \
xor_speed(&xor_block_niagara); \
} while (0)
/* For VIS for everything except Niagara. */
#define XOR_SELECT_TEMPLATE(FASTEST) \
(tlb_type == hypervisor ? &xor_block_niagara : &xor_block_VIS)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录