Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
50a34dbd
K
Kernel
项目概览
openeuler
/
Kernel
大约 1 年 前同步成功
通知
5
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
50a34dbd
编写于
3月 24, 2006
作者:
K
Kyle McMartin
提交者:
Kyle McMartin
3月 30, 2006
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[PARISC] Add PREEMPT support
Signed-off-by:
N
Kyle McMartin
<
kyle@parisc-linux.org
>
上级
bc8846c5
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
39 addition
and
9 deletion
+39
-9
arch/parisc/Kconfig
arch/parisc/Kconfig
+1
-5
arch/parisc/kernel/entry.S
arch/parisc/kernel/entry.S
+36
-3
include/asm-parisc/thread_info.h
include/asm-parisc/thread_info.h
+2
-1
未找到文件。
arch/parisc/Kconfig
浏览文件 @
50a34dbd
...
@@ -177,14 +177,10 @@ config ARCH_DISCONTIGMEM_DEFAULT
...
@@ -177,14 +177,10 @@ config ARCH_DISCONTIGMEM_DEFAULT
def_bool y
def_bool y
depends on ARCH_DISCONTIGMEM_ENABLE
depends on ARCH_DISCONTIGMEM_ENABLE
source "kernel/Kconfig.preempt"
source "kernel/Kconfig.hz"
source "kernel/Kconfig.hz"
source "mm/Kconfig"
source "mm/Kconfig"
config PREEMPT
bool
# bool "Preemptible Kernel"
default n
config COMPAT
config COMPAT
def_bool y
def_bool y
depends on 64BIT
depends on 64BIT
...
...
arch/parisc/kernel/entry.S
浏览文件 @
50a34dbd
...
@@ -1014,14 +1014,21 @@ intr_restore:
...
@@ -1014,14 +1014,21 @@ intr_restore:
nop
nop
nop
nop
#ifndef CONFIG_PREEMPT
# define intr_do_preempt intr_restore
#endif /* !CONFIG_PREEMPT */
.
import
schedule
,
code
.
import
schedule
,
code
intr_do_resched
:
intr_do_resched
:
/
*
Only
do
reschedule
if
we
are
returning
to
user
space
*/
/
*
Only
call
schedule
on
return
to
userspace
.
If
we
're returning
*
to
kernel
space
,
we
may
schedule
if
CONFIG_PREEMPT
,
otherwise
*
we
jump
back
to
intr_restore
.
*/
LDREG
PT_IASQ0
(%
r16
),
%
r20
LDREG
PT_IASQ0
(%
r16
),
%
r20
CMPIB
=
0
,%
r20
,
intr_restore
/*
backward
*/
CMPIB
=
0
,
%
r20
,
intr_do_preempt
nop
nop
LDREG
PT_IASQ1
(%
r16
),
%
r20
LDREG
PT_IASQ1
(%
r16
),
%
r20
CMPIB
=
0
,%
r20
,
intr_restore
/*
backward
*/
CMPIB
=
0
,
%
r20
,
intr_do_preempt
nop
nop
#ifdef CONFIG_64BIT
#ifdef CONFIG_64BIT
...
@@ -1037,6 +1044,32 @@ intr_do_resched:
...
@@ -1037,6 +1044,32 @@ intr_do_resched:
#endif
#endif
ldo
R
%
intr_check_sig
(%
r2
),
%
r2
ldo
R
%
intr_check_sig
(%
r2
),
%
r2
/
*
preempt
the
current
task
on
returning
to
kernel
*
mode
from
an
interrupt
,
iff
need_resched
is
set
,
*
and
preempt_count
is
0
.
otherwise
,
we
continue
on
*
our
merry
way
back
to
the
current
running
task
.
*/
#ifdef CONFIG_PREEMPT
.
import
preempt_schedule_irq
,
code
intr_do_preempt
:
rsm
PSW_SM_I
,
%
r0
/*
disable
interrupts
*/
/
*
current_thread_info
()->
preempt_count
*/
mfctl
%
cr30
,
%
r1
LDREG
TI_PRE_COUNT
(%
r1
),
%
r19
CMPIB
<>
0
,
%
r19
,
intr_restore
/*
if
preempt_count
>
0
*/
nop
/*
prev
insn
branched
backwards
*/
/
*
check
if
we
interrupted
a
critical
path
*/
LDREG
PT_PSW
(%
r16
),
%
r20
bb
,<,
n
%
r20
,
31
-
PSW_SM_I
,
intr_restore
nop
BL
preempt_schedule_irq
,
%
r2
nop
b
intr_restore
/*
ssm
PSW_SM_I
done
by
intr_restore
*/
#endif /* CONFIG_PREEMPT */
.
import
do_signal
,
code
.
import
do_signal
,
code
intr_do_signal
:
intr_do_signal
:
...
...
include/asm-parisc/thread_info.h
浏览文件 @
50a34dbd
...
@@ -49,7 +49,8 @@ struct thread_info {
...
@@ -49,7 +49,8 @@ struct thread_info {
#endif
/* !__ASSEMBLY */
#endif
/* !__ASSEMBLY */
#define PREEMPT_ACTIVE 0x10000000
#define PREEMPT_ACTIVE_BIT 28
#define PREEMPT_ACTIVE (1 << PREEMPT_ACTIVE_BIT)
/*
/*
* thread information flags
* thread information flags
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录