Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
e7e9cae5
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
e7e9cae5
编写于
4月 16, 2014
作者:
R
Ralf Baechle
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
MIPS: math-emu: Use helpers to manipulate CAUSEF_BD flag.
Signed-off-by:
N
Ralf Baechle
<
ralf@linux-mips.org
>
上级
5a7ebbf8
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
8 addition
and
8 deletion
+8
-8
arch/mips/math-emu/cp1emu.c
arch/mips/math-emu/cp1emu.c
+7
-7
arch/mips/math-emu/dsemul.c
arch/mips/math-emu/dsemul.c
+1
-1
未找到文件。
arch/mips/math-emu/cp1emu.c
浏览文件 @
e7e9cae5
...
...
@@ -933,17 +933,17 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
int
pc_inc
;
/* XXX NEC Vr54xx bug workaround */
if
(
xcp
->
cp0_cause
&
CAUSEF_BD
)
{
if
(
delay_slot
(
xcp
)
)
{
if
(
dec_insn
.
micro_mips_mode
)
{
if
(
!
mm_isBranchInstr
(
xcp
,
dec_insn
,
&
contpc
))
xcp
->
cp0_cause
&=
~
CAUSEF_BD
;
clear_delay_slot
(
xcp
)
;
}
else
{
if
(
!
isBranchInstr
(
xcp
,
dec_insn
,
&
contpc
))
xcp
->
cp0_cause
&=
~
CAUSEF_BD
;
clear_delay_slot
(
xcp
)
;
}
}
if
(
xcp
->
cp0_cause
&
CAUSEF_BD
)
{
if
(
delay_slot
(
xcp
)
)
{
/*
* The instruction to be emulated is in a branch delay slot
* which means that we have to emulate the branch instruction
...
...
@@ -1178,7 +1178,7 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
case
bc_op
:{
int
likely
=
0
;
if
(
xcp
->
cp0_cause
&
CAUSEF_BD
)
if
(
delay_slot
(
xcp
)
)
return
SIGILL
;
#if __mips >= 4
...
...
@@ -1201,7 +1201,7 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
return
SIGILL
;
}
xcp
->
cp0_cause
|=
CAUSEF_BD
;
set_delay_slot
(
xcp
)
;
if
(
cond
)
{
/* branch taken: emulate dslot
* instruction
...
...
@@ -1321,7 +1321,7 @@ static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
/* we did it !! */
xcp
->
cp0_epc
=
contpc
;
xcp
->
cp0_cause
&=
~
CAUSEF_BD
;
clear_delay_slot
(
xcp
)
;
return
0
;
}
...
...
arch/mips/math-emu/dsemul.c
浏览文件 @
e7e9cae5
...
...
@@ -59,7 +59,7 @@ int mips_dsemul(struct pt_regs *regs, mips_instruction ir, unsigned long cpc)
(
ir
==
0
))
{
/* NOP is easy */
regs
->
cp0_epc
=
cpc
;
regs
->
cp0_cause
&=
~
CAUSEF_BD
;
clear_delay_slot
(
regs
)
;
return
0
;
}
#ifdef DSEMUL_TRACE
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录