Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
bcd77ffc
cloud-kernel
项目概览
openanolis
/
cloud-kernel
大约 1 年 前同步成功
通知
158
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
bcd77ffc
编写于
10月 30, 2013
作者:
B
Benjamin Herrenschmidt
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-kvm' into next
Add Paul's fix for 32-bit register corruption in the new FP code
上级
3ad26e5c
955c1cab
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
17 addition
and
12 deletion
+17
-12
arch/powerpc/kernel/fpu.S
arch/powerpc/kernel/fpu.S
+8
-6
arch/powerpc/kernel/vector.S
arch/powerpc/kernel/vector.S
+9
-6
未找到文件。
arch/powerpc/kernel/fpu.S
浏览文件 @
bcd77ffc
...
...
@@ -106,6 +106,8 @@ _GLOBAL(store_fp_state)
*
and
save
its
floating
-
point
registers
in
its
thread_struct
.
*
Load
up
this
task
's FP registers from its thread_struct,
*
enable
the
FPU
for
the
current
task
and
return
to
the
task
.
*
Note
that
on
32
-
bit
this
can
only
use
registers
that
will
be
*
restored
by
fast_exception_return
,
i
.
e
.
r3
-
r6
,
r10
and
r11
.
*/
_GLOBAL
(
load_up_fpu
)
mfmsr
r5
...
...
@@ -131,10 +133,10 @@ END_FTR_SECTION_IFSET(CPU_FTR_VSX)
beq
1
f
toreal
(
r4
)
addi
r4
,
r4
,
THREAD
/*
want
last_task_used_math
->
thread
*/
addi
r
8
,
r4
,
THREAD_FPSTATE
SAVE_32FPVSRS
(0,
R5
,
R
8
)
addi
r
10
,
r4
,
THREAD_FPSTATE
SAVE_32FPVSRS
(0,
R5
,
R
10
)
mffs
fr0
stfd
fr0
,
FPSTATE_FPSCR
(
r
8
)
stfd
fr0
,
FPSTATE_FPSCR
(
r
10
)
PPC_LL
r5
,
PT_REGS
(
r4
)
toreal
(
r5
)
PPC_LL
r4
,
_MSR
-
STACK_FRAME_OVERHEAD
(
r5
)
...
...
@@ -157,10 +159,10 @@ END_FTR_SECTION_IFSET(CPU_FTR_VSX)
or
r12
,
r12
,
r4
std
r12
,
_MSR
(
r1
)
#endif
addi
r
7
,
r5
,
THREAD_FPSTATE
lfd
fr0
,
FPSTATE_FPSCR
(
r
7
)
addi
r
10
,
r5
,
THREAD_FPSTATE
lfd
fr0
,
FPSTATE_FPSCR
(
r
10
)
MTFSF_L
(
fr0
)
REST_32FPVSRS
(0,
R4
,
R
7
)
REST_32FPVSRS
(0,
R4
,
R
10
)
#ifndef CONFIG_SMP
subi
r4
,
r5
,
THREAD
fromreal
(
r4
)
...
...
arch/powerpc/kernel/vector.S
浏览文件 @
bcd77ffc
...
...
@@ -64,6 +64,9 @@ _GLOBAL(store_vr_state)
*
Enables
the
VMX
for
use
in
the
kernel
on
return
.
*
On
SMP
we
know
the
VMX
is
free
,
since
we
give
it
up
every
*
switch
(
ie
,
no
lazy
save
of
the
vector
registers
)
.
*
*
Note
that
on
32
-
bit
this
can
only
use
registers
that
will
be
*
restored
by
fast_exception_return
,
i
.
e
.
r3
-
r6
,
r10
and
r11
.
*/
_GLOBAL
(
load_up_altivec
)
mfmsr
r5
/*
grab
the
current
MSR
*/
...
...
@@ -89,11 +92,11 @@ _GLOBAL(load_up_altivec)
/
*
Save
VMX
state
to
last_task_used_altivec
's THREAD struct */
toreal
(
r4
)
addi
r4
,
r4
,
THREAD
addi
r
7
,
r4
,
THREAD_VRSTATE
SAVE_32VRS
(0,
r5
,
r
7
)
addi
r
6
,
r4
,
THREAD_VRSTATE
SAVE_32VRS
(0,
r5
,
r
6
)
mfvscr
vr0
li
r10
,
VRSTATE_VSCR
stvx
vr0
,
r10
,
r
7
stvx
vr0
,
r10
,
r
6
/
*
Disable
VMX
for
last_task_used_altivec
*/
PPC_LL
r5
,
PT_REGS
(
r4
)
toreal
(
r5
)
...
...
@@ -125,13 +128,13 @@ _GLOBAL(load_up_altivec)
oris
r12
,
r12
,
MSR_VEC
@
h
std
r12
,
_MSR
(
r1
)
#endif
addi
r
7
,
r5
,
THREAD_VRSTATE
addi
r
6
,
r5
,
THREAD_VRSTATE
li
r4
,
1
li
r10
,
VRSTATE_VSCR
stw
r4
,
THREAD_USED_VR
(
r5
)
lvx
vr0
,
r10
,
r
7
lvx
vr0
,
r10
,
r
6
mtvscr
vr0
REST_32VRS
(0,
r4
,
r
7
)
REST_32VRS
(0,
r4
,
r
6
)
#ifndef CONFIG_SMP
/
*
Update
last_task_used_altivec
to
'current'
*/
subi
r4
,
r5
,
THREAD
/*
Back
to
'current'
*/
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录