Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
4255b07f
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
161
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看板
提交
4255b07f
编写于
9月 22, 2014
作者:
V
Vineet Gupta
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ARCv2: STAR 9000793984: Handle return from intr to Delay Slot
Signed-off-by:
N
Vineet Gupta
<
vgupta@synopsys.com
>
上级
1f6ccfff
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
53 addition
and
0 deletion
+53
-0
arch/arc/kernel/asm-offsets.c
arch/arc/kernel/asm-offsets.c
+1
-0
arch/arc/kernel/entry-arcv2.S
arch/arc/kernel/entry-arcv2.S
+50
-0
arch/arc/kernel/setup.c
arch/arc/kernel/setup.c
+2
-0
未找到文件。
arch/arc/kernel/asm-offsets.c
浏览文件 @
4255b07f
...
...
@@ -56,6 +56,7 @@ int main(void)
DEFINE
(
PT_r5
,
offsetof
(
struct
pt_regs
,
r5
));
DEFINE
(
PT_r6
,
offsetof
(
struct
pt_regs
,
r6
));
DEFINE
(
PT_r7
,
offsetof
(
struct
pt_regs
,
r7
));
DEFINE
(
PT_ret
,
offsetof
(
struct
pt_regs
,
ret
));
DEFINE
(
SZ_CALLEE_REGS
,
sizeof
(
struct
callee_regs
));
DEFINE
(
SZ_PT_REGS
,
sizeof
(
struct
pt_regs
));
...
...
arch/arc/kernel/entry-arcv2.S
浏览文件 @
4255b07f
...
...
@@ -163,6 +163,9 @@ END(EV_TLBProtV)
;####### Return from Intr #######
debug_marker_l1
:
bbit1.nt
r0
,
STATUS_DE_BIT
,
.
Lintr_ret_to_delay_slot
.
Lisr_ret_fast_path
:
; Handle special case #1: (Entry via Exception, Return via IRQ)
;
; Exception in U mode, preempted in kernel, Intr taken (K mode), orig
...
...
@@ -186,4 +189,51 @@ debug_marker_syscall:
EXCEPTION_EPILOGUE
rtie
;####### Return from Intr to insn in delay slot #######
; Handle special case #2: (Entry via Exception in Delay Slot, Return via IRQ)
;
; Intr returning to a Delay Slot (DS) insn
; (since IRQ NOT allowed in DS in ARCv2, this can only happen if orig
; entry was via Exception in DS which got preempted in kernel).
;
; IRQ RTIE won't reliably restore DE bit and/or BTA, needs handling
.
Lintr_ret_to_delay_slot
:
debug_marker_ds
:
ld
r2
,
[
@
intr_to_DE_cnt
]
add
r2
,
r2
,
1
st
r2
,
[
@
intr_to_DE_cnt
]
ld
r2
,
[
sp
,
PT_ret
]
ld
r3
,
[
sp
,
PT_status32
]
bic
r0
,
r3
,
STATUS_U_MASK|STATUS_DE_MASK|STATUS_IE_MASK
|
STATUS_L_MASK
st
r0
,
[
sp
,
PT_status32
]
mov
r1
,
.
Lintr_ret_to_delay_slot_2
st
r1
,
[
sp
,
PT_ret
]
st
r2
,
[
sp
,
0
]
st
r3
,
[
sp
,
4
]
b
.
Lisr_ret_fast_path
.
Lintr_ret_to_delay_slot_2
:
sub
sp
,
sp
,
SZ_PT_REGS
st
r9
,
[
sp
,
-
4
]
ld
r9
,
[
sp
,
0
]
sr
r9
,
[
eret
]
ld
r9
,
[
sp
,
4
]
sr
r9
,
[
erstatus
]
ld
r9
,
[
sp
,
8
]
sr
r9
,
[
erbta
]
ld
r9
,
[
sp
,
-
4
]
add
sp
,
sp
,
SZ_PT_REGS
rtie
END
(
ret_from_exception
)
arch/arc/kernel/setup.c
浏览文件 @
4255b07f
...
...
@@ -30,6 +30,8 @@
#define FIX_PTR(x) __asm__ __volatile__(";" : "+r"(x))
unsigned
int
intr_to_DE_cnt
;
/* Part of U-boot ABI: see head.S */
int
__initdata
uboot_tag
;
char
__initdata
*
uboot_arg
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录