Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
af5abf1b
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
af5abf1b
编写于
7月 09, 2014
作者:
V
Vineet Gupta
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ARC: help gcc elide icache helper for !SMP
Signed-off-by:
N
Vineet Gupta
<
vgupta@synopsys.com
>
上级
1b1a22b1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
28 addition
and
11 deletion
+28
-11
arch/arc/mm/cache_arc700.c
arch/arc/mm/cache_arc700.c
+28
-11
未找到文件。
arch/arc/mm/cache_arc700.c
浏览文件 @
af5abf1b
...
...
@@ -396,8 +396,16 @@ static inline void __dc_line_op(unsigned long paddr, unsigned long vaddr,
/***********************************************************
* Machine specific helper for per line I-Cache invalidate.
*/
static
void
__ic_line_inv_vaddr_local
(
unsigned
long
paddr
,
unsigned
long
vaddr
,
unsigned
long
sz
)
static
inline
void
__ic_entire_inv
(
void
)
{
write_aux_reg
(
ARC_REG_IC_IVIC
,
1
);
read_aux_reg
(
ARC_REG_IC_CTRL
);
/* blocks */
}
static
inline
void
__ic_line_inv_vaddr_local
(
unsigned
long
paddr
,
unsigned
long
vaddr
,
unsigned
long
sz
)
{
unsigned
long
flags
;
...
...
@@ -406,30 +414,39 @@ static void __ic_line_inv_vaddr_local(unsigned long paddr, unsigned long vaddr,
local_irq_restore
(
flags
);
}
static
inline
void
__ic_entire_inv
(
void
)
{
write_aux_reg
(
ARC_REG_IC_IVIC
,
1
);
read_aux_reg
(
ARC_REG_IC_CTRL
);
/* blocks */
}
#ifndef CONFIG_SMP
#define __ic_line_inv_vaddr(p, v, s) __ic_line_inv_vaddr_local(p, v, s)
#else
struct
ic_
line_inv_vaddr_ipi
{
struct
ic_
inv_args
{
unsigned
long
paddr
,
vaddr
;
int
sz
;
};
static
void
__ic_line_inv_vaddr_helper
(
void
*
info
)
{
struct
ic_line_inv_vaddr_ipi
*
ic_inv
=
(
struct
ic_line_inv_vaddr_ipi
*
)
info
;
struct
ic_inv
*
ic_inv_args
=
(
struct
ic_inv_args
*
)
info
;
__ic_line_inv_vaddr_local
(
ic_inv
->
paddr
,
ic_inv
->
vaddr
,
ic_inv
->
sz
);
}
static
void
__ic_line_inv_vaddr
(
unsigned
long
paddr
,
unsigned
long
vaddr
,
unsigned
long
sz
)
{
struct
ic_line_inv_vaddr_ipi
ic_inv
=
{
paddr
,
vaddr
,
sz
};
struct
ic_inv_args
ic_inv
=
{
.
paddr
=
paddr
,
.
vaddr
=
vaddr
,
.
sz
=
sz
};
on_each_cpu
(
__ic_line_inv_vaddr_helper
,
&
ic_inv
,
1
);
}
#else
#endif
/* CONFIG_SMP */
#else
/* !CONFIG_ARC_HAS_ICACHE */
#define __ic_entire_inv()
#define __ic_line_inv_vaddr(pstart, vstart, sz)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录