Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
475d5928
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看板
提交
475d5928
编写于
8月 02, 2014
作者:
R
Ralf Baechle
浏览文件
操作
浏览文件
下载
差异文件
Merge branch '3.16-fixes' into mips-for-linux-next
上级
c6b7b9f2
1062080a
变更
15
显示空白变更内容
内联
并排
Showing
15 changed file
with
116 addition
and
28 deletion
+116
-28
arch/mips/jz4740/platform.c
arch/mips/jz4740/platform.c
+1
-1
arch/mips/kernel/ftrace.c
arch/mips/kernel/ftrace.c
+47
-9
arch/mips/kernel/mcount.S
arch/mips/kernel/mcount.S
+13
-0
arch/mips/kernel/ptrace.c
arch/mips/kernel/ptrace.c
+2
-1
arch/mips/kernel/rtlx-cmp.c
arch/mips/kernel/rtlx-cmp.c
+3
-0
arch/mips/kernel/rtlx-mt.c
arch/mips/kernel/rtlx-mt.c
+3
-0
arch/mips/kernel/scall64-n32.S
arch/mips/kernel/scall64-n32.S
+1
-1
arch/mips/kernel/smp-mt.c
arch/mips/kernel/smp-mt.c
+2
-0
arch/mips/kernel/unaligned.c
arch/mips/kernel/unaligned.c
+0
-1
arch/mips/math-emu/cp1emu.c
arch/mips/math-emu/cp1emu.c
+1
-1
arch/mips/mm/tlbex.c
arch/mips/mm/tlbex.c
+3
-0
arch/mips/rb532/devices.c
arch/mips/rb532/devices.c
+1
-0
arch/mips/sgi-ip22/ip22-gio.c
arch/mips/sgi-ip22/ip22-gio.c
+9
-1
arch/mips/txx9/generic/7segled.c
arch/mips/txx9/generic/7segled.c
+11
-3
arch/mips/txx9/generic/setup.c
arch/mips/txx9/generic/setup.c
+19
-10
未找到文件。
arch/mips/jz4740/platform.c
浏览文件 @
475d5928
...
...
@@ -59,7 +59,7 @@ struct platform_device jz4740_usb_ohci_device = {
/* USB Device Controller */
struct
platform_device
jz4740_udc_xceiv_device
=
{
.
name
=
"usb_phy_gen
_xceiv
"
,
.
name
=
"usb_phy_gen
eric
"
,
.
id
=
0
,
};
...
...
arch/mips/kernel/ftrace.c
浏览文件 @
475d5928
...
...
@@ -63,7 +63,7 @@ static inline int in_kernel_space(unsigned long ip)
((unsigned int)(JAL | (((addr) >> 2) & ADDR_MASK)))
static
unsigned
int
insn_jal_ftrace_caller
__read_mostly
;
static
unsigned
int
insn_l
ui_v1_hi16_mcount
__read_mostly
;
static
unsigned
int
insn_l
a_mcount
[
2
]
__read_mostly
;
static
unsigned
int
insn_j_ftrace_graph_caller
__maybe_unused
__read_mostly
;
static
inline
void
ftrace_dyn_arch_init_insns
(
void
)
...
...
@@ -71,10 +71,10 @@ static inline void ftrace_dyn_arch_init_insns(void)
u32
*
buf
;
unsigned
int
v1
;
/* l
ui v1, hi16
_mcount */
/* l
a v1,
_mcount */
v1
=
3
;
buf
=
(
u32
*
)
&
insn_l
ui_v1_hi16_mcount
;
UASM_i_LA
_mostly
(
&
buf
,
v1
,
MCOUNT_ADDR
);
buf
=
(
u32
*
)
&
insn_l
a_mcount
[
0
]
;
UASM_i_LA
(
&
buf
,
v1
,
MCOUNT_ADDR
);
/* jal (ftrace_caller + 8), jump over the first two instruction */
buf
=
(
u32
*
)
&
insn_jal_ftrace_caller
;
...
...
@@ -111,14 +111,47 @@ static int ftrace_modify_code_2(unsigned long ip, unsigned int new_code1,
unsigned
int
new_code2
)
{
int
faulted
;
mm_segment_t
old_fs
;
safe_store_code
(
new_code1
,
ip
,
faulted
);
if
(
unlikely
(
faulted
))
return
-
EFAULT
;
safe_store_code
(
new_code2
,
ip
+
4
,
faulted
);
ip
+=
4
;
safe_store_code
(
new_code2
,
ip
,
faulted
);
if
(
unlikely
(
faulted
))
return
-
EFAULT
;
ip
-=
4
;
old_fs
=
get_fs
();
set_fs
(
get_ds
());
flush_icache_range
(
ip
,
ip
+
8
);
set_fs
(
old_fs
);
return
0
;
}
static
int
ftrace_modify_code_2r
(
unsigned
long
ip
,
unsigned
int
new_code1
,
unsigned
int
new_code2
)
{
int
faulted
;
mm_segment_t
old_fs
;
ip
+=
4
;
safe_store_code
(
new_code2
,
ip
,
faulted
);
if
(
unlikely
(
faulted
))
return
-
EFAULT
;
ip
-=
4
;
safe_store_code
(
new_code1
,
ip
,
faulted
);
if
(
unlikely
(
faulted
))
return
-
EFAULT
;
old_fs
=
get_fs
();
set_fs
(
get_ds
());
flush_icache_range
(
ip
,
ip
+
8
);
set_fs
(
old_fs
);
return
0
;
}
#endif
...
...
@@ -130,13 +163,14 @@ static int ftrace_modify_code_2(unsigned long ip, unsigned int new_code1,
*
* move at, ra
* jal _mcount --> nop
* sub sp, sp, 8 --> nop (CONFIG_32BIT)
*
* 2. For modules:
*
* 2.1 For KBUILD_MCOUNT_RA_ADDRESS and CONFIG_32BIT
*
* lui v1, hi_16bit_of_mcount --> b 1f (0x10000005)
* addiu v1, v1, low_16bit_of_mcount
* addiu v1, v1, low_16bit_of_mcount
--> nop (CONFIG_32BIT)
* move at, ra
* move $12, ra_address
* jalr v1
...
...
@@ -145,7 +179,7 @@ static int ftrace_modify_code_2(unsigned long ip, unsigned int new_code1,
* 2.2 For the Other situations
*
* lui v1, hi_16bit_of_mcount --> b 1f (0x10000004)
* addiu v1, v1, low_16bit_of_mcount
* addiu v1, v1, low_16bit_of_mcount
--> nop (CONFIG_32BIT)
* move at, ra
* jalr v1
* nop | move $12, ra_address | sub sp, sp, 8
...
...
@@ -184,10 +218,14 @@ int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)
unsigned
int
new
;
unsigned
long
ip
=
rec
->
ip
;
new
=
in_kernel_space
(
ip
)
?
insn_jal_ftrace_caller
:
insn_lui_v1_hi16_mcount
;
new
=
in_kernel_space
(
ip
)
?
insn_jal_ftrace_caller
:
insn_la_mcount
[
0
];
#ifdef CONFIG_64BIT
return
ftrace_modify_code
(
ip
,
new
);
#else
return
ftrace_modify_code_2r
(
ip
,
new
,
in_kernel_space
(
ip
)
?
INSN_NOP
:
insn_la_mcount
[
1
]);
#endif
}
#define FTRACE_CALL_IP ((unsigned long)(&ftrace_call))
...
...
arch/mips/kernel/mcount.S
浏览文件 @
475d5928
...
...
@@ -84,6 +84,19 @@ _mcount:
#endif
PTR_SUBU
a0
,
ra
,
8
/*
arg1
:
self
address
*/
PTR_LA
t1
,
_stext
sltu
t2
,
a0
,
t1
/*
t2
=
(
a0
<
_stext
)
*/
PTR_LA
t1
,
_etext
sltu
t3
,
t1
,
a0
/*
t3
=
(
a0
>
_etext
)
*/
or
t1
,
t2
,
t3
beqz
t1
,
ftrace_call
nop
#if defined(KBUILD_MCOUNT_RA_ADDRESS) && defined(CONFIG_32BIT)
PTR_SUBU
a0
,
a0
,
16
/*
arg1
:
adjust
to
module
's recorded callsite */
#else
PTR_SUBU
a0
,
a0
,
12
#endif
.
globl
ftrace_call
ftrace_call
:
nop
/*
a
placeholder
for
the
call
to
a
real
tracing
function
*/
...
...
arch/mips/kernel/ptrace.c
浏览文件 @
475d5928
...
...
@@ -150,6 +150,7 @@ int ptrace_setfpregs(struct task_struct *child, __u32 __user *data)
}
__get_user
(
child
->
thread
.
fpu
.
fcr31
,
data
+
64
);
child
->
thread
.
fpu
.
fcr31
&=
~
FPU_CSR_ALL_X
;
/* FIR may not be written. */
...
...
@@ -695,7 +696,7 @@ long arch_ptrace(struct task_struct *child, long request,
break
;
#endif
case
FPC_CSR
:
child
->
thread
.
fpu
.
fcr31
=
data
;
child
->
thread
.
fpu
.
fcr31
=
data
&
~
FPU_CSR_ALL_X
;
break
;
case
DSP_BASE
...
DSP_BASE
+
5
:
{
dspreg_t
*
dregs
;
...
...
arch/mips/kernel/rtlx-cmp.c
浏览文件 @
475d5928
...
...
@@ -77,6 +77,9 @@ int __init rtlx_module_init(void)
dev
=
device_create
(
mt_class
,
NULL
,
MKDEV
(
major
,
i
),
NULL
,
"%s%d"
,
RTLX_MODULE_NAME
,
i
);
if
(
IS_ERR
(
dev
))
{
while
(
i
--
)
device_destroy
(
mt_class
,
MKDEV
(
major
,
i
));
err
=
PTR_ERR
(
dev
);
goto
out_chrdev
;
}
...
...
arch/mips/kernel/rtlx-mt.c
浏览文件 @
475d5928
...
...
@@ -103,6 +103,9 @@ int __init rtlx_module_init(void)
dev
=
device_create
(
mt_class
,
NULL
,
MKDEV
(
major
,
i
),
NULL
,
"%s%d"
,
RTLX_MODULE_NAME
,
i
);
if
(
IS_ERR
(
dev
))
{
while
(
i
--
)
device_destroy
(
mt_class
,
MKDEV
(
major
,
i
));
err
=
PTR_ERR
(
dev
);
goto
out_chrdev
;
}
...
...
arch/mips/kernel/scall64-n32.S
浏览文件 @
475d5928
...
...
@@ -162,7 +162,7 @@ EXPORT(sysn32_call_table)
PTR
sys_getpeername
PTR
sys_socketpair
PTR
compat_sys_setsockopt
PTR
sys_getsockopt
PTR
compat_
sys_getsockopt
PTR
__sys_clone
/*
6055
*/
PTR
__sys_fork
PTR
compat_sys_execve
...
...
arch/mips/kernel/smp-mt.c
浏览文件 @
475d5928
...
...
@@ -288,6 +288,7 @@ struct plat_smp_ops vsmp_smp_ops = {
.
prepare_cpus
=
vsmp_prepare_cpus
,
};
#ifdef CONFIG_PROC_FS
static
int
proc_cpuinfo_chain_call
(
struct
notifier_block
*
nfb
,
unsigned
long
action_unused
,
void
*
data
)
{
...
...
@@ -309,3 +310,4 @@ static int __init proc_cpuinfo_notifier_init(void)
}
subsys_initcall
(
proc_cpuinfo_notifier_init
);
#endif
arch/mips/kernel/unaligned.c
浏览文件 @
475d5928
...
...
@@ -690,7 +690,6 @@ static void emulate_load_store_insn(struct pt_regs *regs,
case
sdc1_op
:
die_if_kernel
(
"Unaligned FP access in kernel code"
,
regs
);
BUG_ON
(
!
used_math
());
BUG_ON
(
!
is_fpu_owner
());
lose_fpu
(
1
);
/* Save FPU state for the emulator. */
res
=
fpu_emulator_cop1Handler
(
regs
,
&
current
->
thread
.
fpu
,
1
,
...
...
arch/mips/math-emu/cp1emu.c
浏览文件 @
475d5928
...
...
@@ -1827,7 +1827,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx,
case
-
1
:
if
(
cpu_has_mips_4_5_r
)
cbit
=
fpucondbit
[
MIPSInst_
RT
(
ir
)
>>
2
];
cbit
=
fpucondbit
[
MIPSInst_
FD
(
ir
)
>>
2
];
else
cbit
=
FPU_CSR_COND
;
if
(
rv
.
w
)
...
...
arch/mips/mm/tlbex.c
浏览文件 @
475d5928
...
...
@@ -429,6 +429,7 @@ static void build_r3000_tlb_refill_handler(void)
(
unsigned
int
)(
p
-
tlb_handler
));
memcpy
((
void
*
)
ebase
,
tlb_handler
,
0x80
);
local_flush_icache_range
(
ebase
,
ebase
+
0x80
);
dump_handler
(
"r3000_tlb_refill"
,
(
u32
*
)
ebase
,
32
);
}
...
...
@@ -1299,6 +1300,7 @@ static void build_r4000_tlb_refill_handler(void)
}
#ifdef CONFIG_MIPS_HUGE_TLB_SUPPORT
uasm_l_tlb_huge_update
(
&
l
,
p
);
UASM_i_LW
(
&
p
,
K0
,
0
,
K1
);
build_huge_update_entries
(
&
p
,
htlb_info
.
huge_pte
,
K1
);
build_huge_tlb_write_entry
(
&
p
,
&
l
,
&
r
,
K0
,
tlb_random
,
htlb_info
.
restore_scratch
);
...
...
@@ -1415,6 +1417,7 @@ static void build_r4000_tlb_refill_handler(void)
final_len
);
memcpy
((
void
*
)
ebase
,
final_handler
,
0x100
);
local_flush_icache_range
(
ebase
,
ebase
+
0x100
);
dump_handler
(
"r4000_tlb_refill"
,
(
u32
*
)
ebase
,
64
);
}
...
...
arch/mips/rb532/devices.c
浏览文件 @
475d5928
...
...
@@ -223,6 +223,7 @@ static struct platform_device rb532_wdt = {
static
struct
plat_serial8250_port
rb532_uart_res
[]
=
{
{
.
type
=
PORT_16550A
,
.
membase
=
(
char
*
)
KSEG1ADDR
(
REGBASE
+
UART0BASE
),
.
irq
=
UART0_IRQ
,
.
regshift
=
2
,
...
...
arch/mips/sgi-ip22/ip22-gio.c
浏览文件 @
475d5928
...
...
@@ -27,8 +27,14 @@ static struct {
{
.
name
=
"SGI GR2/GR3"
,
.
id
=
0x7f
},
};
static
void
gio_bus_release
(
struct
device
*
dev
)
{
kfree
(
dev
);
}
static
struct
device
gio_bus
=
{
.
init_name
=
"gio"
,
.
release
=
&
gio_bus_release
,
};
/**
...
...
@@ -413,8 +419,10 @@ int __init ip22_gio_init(void)
int
ret
;
ret
=
device_register
(
&
gio_bus
);
if
(
ret
)
if
(
ret
)
{
put_device
(
&
gio_bus
);
return
ret
;
}
ret
=
bus_register
(
&
gio_bus_type
);
if
(
!
ret
)
{
...
...
arch/mips/txx9/generic/7segled.c
浏览文件 @
475d5928
...
...
@@ -83,6 +83,11 @@ static struct bus_type tx_7segled_subsys = {
.
dev_name
=
"7segled"
,
};
static
void
tx_7segled_release
(
struct
device
*
dev
)
{
kfree
(
dev
);
}
static
int
__init
tx_7segled_init_sysfs
(
void
)
{
int
error
,
i
;
...
...
@@ -103,12 +108,15 @@ static int __init tx_7segled_init_sysfs(void)
}
dev
->
id
=
i
;
dev
->
bus
=
&
tx_7segled_subsys
;
dev
->
release
=
&
tx_7segled_release
;
error
=
device_register
(
dev
);
if
(
!
error
)
{
if
(
error
)
{
put_device
(
dev
);
return
error
;
}
device_create_file
(
dev
,
&
dev_attr_ascii
);
device_create_file
(
dev
,
&
dev_attr_raw
);
}
}
return
error
;
}
...
...
arch/mips/txx9/generic/setup.c
浏览文件 @
475d5928
...
...
@@ -937,6 +937,14 @@ static ssize_t txx9_sram_write(struct file *filp, struct kobject *kobj,
return
size
;
}
static
void
txx9_device_release
(
struct
device
*
dev
)
{
struct
txx9_sramc_dev
*
tdev
;
tdev
=
container_of
(
dev
,
struct
txx9_sramc_dev
,
dev
);
kfree
(
tdev
);
}
void
__init
txx9_sramc_init
(
struct
resource
*
r
)
{
struct
txx9_sramc_dev
*
dev
;
...
...
@@ -951,8 +959,11 @@ void __init txx9_sramc_init(struct resource *r)
return
;
size
=
resource_size
(
r
);
dev
->
base
=
ioremap
(
r
->
start
,
size
);
if
(
!
dev
->
base
)
goto
exit
;
if
(
!
dev
->
base
)
{
kfree
(
dev
);
return
;
}
dev
->
dev
.
release
=
&
txx9_device_release
;
dev
->
dev
.
bus
=
&
txx9_sramc_subsys
;
sysfs_bin_attr_init
(
&
dev
->
bindata_attr
);
dev
->
bindata_attr
.
attr
.
name
=
"bindata"
;
...
...
@@ -963,17 +974,15 @@ void __init txx9_sramc_init(struct resource *r)
dev
->
bindata_attr
.
private
=
dev
;
err
=
device_register
(
&
dev
->
dev
);
if
(
err
)
goto
exit
;
goto
exit
_put
;
err
=
sysfs_create_bin_file
(
&
dev
->
dev
.
kobj
,
&
dev
->
bindata_attr
);
if
(
err
)
{
device_unregister
(
&
dev
->
dev
);
goto
exit
;
}
return
;
exit:
if
(
dev
)
{
if
(
dev
->
base
)
iounmap
(
dev
->
base
);
kfree
(
dev
);
}
return
;
exit_put:
put_device
(
&
dev
->
dev
);
return
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录