Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
3c97b5e9
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 4 年多
通知
15
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
3c97b5e9
编写于
12月 07, 2006
作者:
K
Kyle McMartin
提交者:
Kyle McMartin
12月 08, 2006
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[PARISC] Move spinlock_t out of struct cpu_data
Signed-off-by:
N
Kyle McMartin
<
kyle@parisc-linux.org
>
上级
6858f3bf
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
7 addition
and
5 deletion
+7
-5
arch/parisc/kernel/smp.c
arch/parisc/kernel/smp.c
+7
-4
include/asm-parisc/processor.h
include/asm-parisc/processor.h
+0
-1
未找到文件。
arch/parisc/kernel/smp.c
浏览文件 @
3c97b5e9
...
@@ -76,6 +76,7 @@ cpumask_t cpu_possible_map __read_mostly = CPU_MASK_ALL; /* Bitmap of Present CP
...
@@ -76,6 +76,7 @@ cpumask_t cpu_possible_map __read_mostly = CPU_MASK_ALL; /* Bitmap of Present CP
EXPORT_SYMBOL
(
cpu_online_map
);
EXPORT_SYMBOL
(
cpu_online_map
);
EXPORT_SYMBOL
(
cpu_possible_map
);
EXPORT_SYMBOL
(
cpu_possible_map
);
DEFINE_PER_CPU
(
spinlock_t
,
ipi_lock
)
=
SPIN_LOCK_UNLOCKED
;
struct
smp_call_struct
{
struct
smp_call_struct
{
void
(
*
func
)
(
void
*
info
);
void
(
*
func
)
(
void
*
info
);
...
@@ -167,10 +168,11 @@ ipi_interrupt(int irq, void *dev_id)
...
@@ -167,10 +168,11 @@ ipi_interrupt(int irq, void *dev_id)
mb
();
/* Order interrupt and bit testing. */
mb
();
/* Order interrupt and bit testing. */
for
(;;)
{
for
(;;)
{
spin_lock_irqsave
(
&
(
p
->
lock
),
flags
);
spinlock_t
*
lock
=
&
per_cpu
(
ipi_lock
,
this_cpu
);
spin_lock_irqsave
(
lock
,
flags
);
ops
=
p
->
pending_ipi
;
ops
=
p
->
pending_ipi
;
p
->
pending_ipi
=
0
;
p
->
pending_ipi
=
0
;
spin_unlock_irqrestore
(
&
(
p
->
lock
),
flags
);
spin_unlock_irqrestore
(
lock
,
flags
);
mb
();
/* Order bit clearing and data access. */
mb
();
/* Order bit clearing and data access. */
...
@@ -275,12 +277,13 @@ static inline void
...
@@ -275,12 +277,13 @@ static inline void
ipi_send
(
int
cpu
,
enum
ipi_message_type
op
)
ipi_send
(
int
cpu
,
enum
ipi_message_type
op
)
{
{
struct
cpuinfo_parisc
*
p
=
&
cpu_data
[
cpu
];
struct
cpuinfo_parisc
*
p
=
&
cpu_data
[
cpu
];
spinlock_t
*
lock
=
&
per_cpu
(
ipi_lock
,
cpu
);
unsigned
long
flags
;
unsigned
long
flags
;
spin_lock_irqsave
(
&
(
p
->
lock
),
flags
);
spin_lock_irqsave
(
lock
,
flags
);
p
->
pending_ipi
|=
1
<<
op
;
p
->
pending_ipi
|=
1
<<
op
;
gsc_writel
(
IPI_IRQ
-
CPU_IRQ_BASE
,
cpu_data
[
cpu
].
hpa
);
gsc_writel
(
IPI_IRQ
-
CPU_IRQ_BASE
,
cpu_data
[
cpu
].
hpa
);
spin_unlock_irqrestore
(
&
(
p
->
lock
),
flags
);
spin_unlock_irqrestore
(
lock
,
flags
);
}
}
...
...
include/asm-parisc/processor.h
浏览文件 @
3c97b5e9
...
@@ -87,7 +87,6 @@ struct cpuinfo_parisc {
...
@@ -87,7 +87,6 @@ struct cpuinfo_parisc {
unsigned
long
hpa
;
/* Host Physical address */
unsigned
long
hpa
;
/* Host Physical address */
unsigned
long
txn_addr
;
/* MMIO addr of EIR or id_eid */
unsigned
long
txn_addr
;
/* MMIO addr of EIR or id_eid */
#ifdef CONFIG_SMP
#ifdef CONFIG_SMP
spinlock_t
lock
;
/* synchronization for ipi's */
unsigned
long
pending_ipi
;
/* bitmap of type ipi_message_type */
unsigned
long
pending_ipi
;
/* bitmap of type ipi_message_type */
unsigned
long
ipi_count
;
/* number ipi Interrupts */
unsigned
long
ipi_count
;
/* number ipi Interrupts */
#endif
#endif
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录