Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Linux-御风守护者
linux
提交
0a328ea4
L
linux
项目概览
Linux-御风守护者
/
linux
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0a328ea4
编写于
9月 05, 2008
作者:
I
Ingo Molnar
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'x86/alternatives' into x86/core
上级
d3d0ba7b
5bbd4c37
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
10 addition
and
10 deletion
+10
-10
arch/x86/kernel/alternative.c
arch/x86/kernel/alternative.c
+4
-4
include/asm-x86/futex.h
include/asm-x86/futex.h
+3
-3
include/asm-x86/spinlock.h
include/asm-x86/spinlock.h
+3
-3
未找到文件。
arch/x86/kernel/alternative.c
浏览文件 @
0a328ea4
...
...
@@ -231,25 +231,25 @@ static void alternatives_smp_lock(u8 **start, u8 **end, u8 *text, u8 *text_end)
continue
;
if
(
*
ptr
>
text_end
)
continue
;
text_poke
(
*
ptr
,
((
unsigned
char
[]){
0xf0
}),
1
);
/* add lock prefix */
/* turn DS segment override prefix into lock prefix */
text_poke
(
*
ptr
,
((
unsigned
char
[]){
0xf0
}),
1
);
};
}
static
void
alternatives_smp_unlock
(
u8
**
start
,
u8
**
end
,
u8
*
text
,
u8
*
text_end
)
{
u8
**
ptr
;
char
insn
[
1
];
if
(
noreplace_smp
)
return
;
add_nops
(
insn
,
1
);
for
(
ptr
=
start
;
ptr
<
end
;
ptr
++
)
{
if
(
*
ptr
<
text
)
continue
;
if
(
*
ptr
>
text_end
)
continue
;
text_poke
(
*
ptr
,
insn
,
1
);
/* turn lock prefix into DS segment override prefix */
text_poke
(
*
ptr
,
((
unsigned
char
[]){
0x3E
}),
1
);
};
}
...
...
include/asm-x86/futex.h
浏览文件 @
0a328ea4
...
...
@@ -25,7 +25,7 @@
asm volatile("1:\tmovl %2, %0\n" \
"\tmovl\t%0, %3\n" \
"\t" insn "\n" \
"2:\t
lock; cmpxchgl %3, %2\n"
\
"2:\t
" LOCK_PREFIX "cmpxchgl %3, %2\n"
\
"\tjnz\t1b\n" \
"3:\t.section .fixup,\"ax\"\n" \
"4:\tmov\t%5, %1\n" \
...
...
@@ -64,7 +64,7 @@ static inline int futex_atomic_op_inuser(int encoded_op, int __user *uaddr)
__futex_atomic_op1
(
"xchgl %0, %2"
,
ret
,
oldval
,
uaddr
,
oparg
);
break
;
case
FUTEX_OP_ADD
:
__futex_atomic_op1
(
"lock;
xaddl %0, %2"
,
ret
,
oldval
,
__futex_atomic_op1
(
LOCK_PREFIX
"
xaddl %0, %2"
,
ret
,
oldval
,
uaddr
,
oparg
);
break
;
case
FUTEX_OP_OR
:
...
...
@@ -122,7 +122,7 @@ static inline int futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval,
if
(
!
access_ok
(
VERIFY_WRITE
,
uaddr
,
sizeof
(
int
)))
return
-
EFAULT
;
asm
volatile
(
"1:
\t
lock;
cmpxchgl %3, %1
\n
"
asm
volatile
(
"1:
\t
"
LOCK_PREFIX
"
cmpxchgl %3, %1
\n
"
"2:
\t
.section .fixup,
\"
ax
\"\n
"
"3:
\t
mov %2, %0
\n
"
"
\t
jmp 2b
\n
"
...
...
include/asm-x86/spinlock.h
浏览文件 @
0a328ea4
...
...
@@ -97,7 +97,7 @@ static __always_inline int __ticket_spin_trylock(raw_spinlock_t *lock)
"jne 1f
\n\t
"
"movw %w0,%w1
\n\t
"
"incb %h1
\n\t
"
"lock ;
cmpxchgw %w1,%2
\n\t
"
LOCK_PREFIX
"
cmpxchgw %w1,%2
\n\t
"
"1:"
"sete %b1
\n\t
"
"movzbl %b1,%0
\n\t
"
...
...
@@ -135,7 +135,7 @@ static __always_inline void __ticket_spin_lock(raw_spinlock_t *lock)
int
inc
=
0x00010000
;
int
tmp
;
asm
volatile
(
"lock ;
xaddl %0, %1
\n
"
asm
volatile
(
LOCK_PREFIX
"
xaddl %0, %1
\n
"
"movzwl %w0, %2
\n\t
"
"shrl $16, %0
\n\t
"
"1:
\t
"
...
...
@@ -162,7 +162,7 @@ static __always_inline int __ticket_spin_trylock(raw_spinlock_t *lock)
"cmpl %0,%1
\n\t
"
"jne 1f
\n\t
"
"addl $0x00010000, %1
\n\t
"
"lock ;
cmpxchgl %1,%2
\n\t
"
LOCK_PREFIX
"
cmpxchgl %1,%2
\n\t
"
"1:"
"sete %b1
\n\t
"
"movzbl %b1,%0
\n\t
"
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录