Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
808c783e
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看板
提交
808c783e
编写于
2月 21, 2006
作者:
L
Linus Torvalds
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'upstream' of
git://ftp.linux-mips.org/pub/scm/upstream-linus
上级
52aa536f
8db41685
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
131 addition
and
74 deletion
+131
-74
arch/mips/configs/ip27_defconfig
arch/mips/configs/ip27_defconfig
+9
-4
arch/mips/kernel/binfmt_elfn32.c
arch/mips/kernel/binfmt_elfn32.c
+3
-2
arch/mips/kernel/binfmt_elfo32.c
arch/mips/kernel/binfmt_elfo32.c
+3
-2
arch/mips/kernel/linux32.c
arch/mips/kernel/linux32.c
+3
-19
arch/mips/kernel/scall64-n32.S
arch/mips/kernel/scall64-n32.S
+2
-2
arch/mips/kernel/signal32.c
arch/mips/kernel/signal32.c
+43
-31
arch/mips/kernel/signal_n32.c
arch/mips/kernel/signal_n32.c
+33
-0
arch/mips/kernel/smp.c
arch/mips/kernel/smp.c
+20
-0
arch/mips/kernel/traps.c
arch/mips/kernel/traps.c
+3
-1
arch/mips/mm/cex-sb1.S
arch/mips/mm/cex-sb1.S
+1
-1
arch/mips/pmc-sierra/yosemite/smp.c
arch/mips/pmc-sierra/yosemite/smp.c
+1
-1
arch/mips/sibyte/Kconfig
arch/mips/sibyte/Kconfig
+2
-2
arch/mips/sibyte/bcm1480/irq.c
arch/mips/sibyte/bcm1480/irq.c
+2
-3
include/asm-mips/uaccess.h
include/asm-mips/uaccess.h
+3
-3
include/asm-mips/unistd.h
include/asm-mips/unistd.h
+3
-3
未找到文件。
arch/mips/configs/ip27_defconfig
浏览文件 @
808c783e
#
#
# Automatically generated make config: don't edit
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.1
5-rc2
# Linux kernel version: 2.6.1
6-rc4
# T
hu Nov 24 01:06:21 2005
# T
ue Feb 21 13:44:31 2006
#
#
CONFIG_MIPS=y
CONFIG_MIPS=y
...
@@ -144,7 +144,6 @@ CONFIG_PREEMPT_BKL=y
...
@@ -144,7 +144,6 @@ CONFIG_PREEMPT_BKL=y
# Code maturity level options
# Code maturity level options
#
#
CONFIG_EXPERIMENTAL=y
CONFIG_EXPERIMENTAL=y
CONFIG_CLEAN_COMPILE=y
CONFIG_LOCK_KERNEL=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_INIT_ENV_ARG_LIMIT=32
...
@@ -250,6 +249,7 @@ CONFIG_NET=y
...
@@ -250,6 +249,7 @@ CONFIG_NET=y
#
#
# Networking options
# Networking options
#
#
# CONFIG_NETDEBUG is not set
CONFIG_PACKET=y
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
CONFIG_UNIX=y
...
@@ -289,6 +289,7 @@ CONFIG_TCP_CONG_BIC=y
...
@@ -289,6 +289,7 @@ CONFIG_TCP_CONG_BIC=y
# SCTP Configuration (EXPERIMENTAL)
# SCTP Configuration (EXPERIMENTAL)
#
#
# CONFIG_IP_SCTP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_VLAN_8021Q is not set
...
@@ -448,7 +449,7 @@ CONFIG_SCSI_SAS_ATTRS=m
...
@@ -448,7 +449,7 @@ CONFIG_SCSI_SAS_ATTRS=m
#
#
# SCSI low-level drivers
# SCSI low-level drivers
#
#
CONFIG_ISCSI_TCP=m
# CONFIG_ISCSI_TCP is not set
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
# CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_3W_9XXX is not set
# CONFIG_SCSI_ACARD is not set
# CONFIG_SCSI_ACARD is not set
...
@@ -773,6 +774,10 @@ CONFIG_USB_ARCH_HAS_OHCI=y
...
@@ -773,6 +774,10 @@ CONFIG_USB_ARCH_HAS_OHCI=y
# SN Devices
# SN Devices
#
#
#
# EDAC - error detection and reporting (RAS)
#
#
#
# File systems
# File systems
#
#
...
...
arch/mips/kernel/binfmt_elfn32.c
浏览文件 @
808c783e
...
@@ -103,8 +103,9 @@ jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value)
...
@@ -103,8 +103,9 @@ jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value)
* one divide.
* one divide.
*/
*/
u64
nsec
=
(
u64
)
jiffies
*
TICK_NSEC
;
u64
nsec
=
(
u64
)
jiffies
*
TICK_NSEC
;
value
->
tv_sec
=
div_long_long_rem
(
nsec
,
NSEC_PER_SEC
,
&
value
->
tv_usec
);
long
rem
;
value
->
tv_usec
/=
NSEC_PER_USEC
;
value
->
tv_sec
=
div_long_long_rem
(
nsec
,
NSEC_PER_SEC
,
&
rem
);
value
->
tv_usec
=
rem
/
NSEC_PER_USEC
;
}
}
#define ELF_CORE_EFLAGS EF_MIPS_ABI2
#define ELF_CORE_EFLAGS EF_MIPS_ABI2
...
...
arch/mips/kernel/binfmt_elfo32.c
浏览文件 @
808c783e
...
@@ -105,8 +105,9 @@ jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value)
...
@@ -105,8 +105,9 @@ jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value)
* one divide.
* one divide.
*/
*/
u64
nsec
=
(
u64
)
jiffies
*
TICK_NSEC
;
u64
nsec
=
(
u64
)
jiffies
*
TICK_NSEC
;
value
->
tv_sec
=
div_long_long_rem
(
nsec
,
NSEC_PER_SEC
,
&
value
->
tv_usec
);
long
rem
;
value
->
tv_usec
/=
NSEC_PER_USEC
;
value
->
tv_sec
=
div_long_long_rem
(
nsec
,
NSEC_PER_SEC
,
&
rem
);
value
->
tv_usec
=
rem
/
NSEC_PER_USEC
;
}
}
#undef ELF_CORE_COPY_REGS
#undef ELF_CORE_COPY_REGS
...
...
arch/mips/kernel/linux32.c
浏览文件 @
808c783e
...
@@ -230,6 +230,9 @@ sysn32_waitid(int which, compat_pid_t pid,
...
@@ -230,6 +230,9 @@ sysn32_waitid(int which, compat_pid_t pid,
long
ret
;
long
ret
;
mm_segment_t
old_fs
=
get_fs
();
mm_segment_t
old_fs
=
get_fs
();
if
(
!
access_ok
(
VERIFY_WRITE
,
uinfo
,
sizeof
(
*
uinfo
)))
return
-
EFAULT
;
set_fs
(
KERNEL_DS
);
set_fs
(
KERNEL_DS
);
ret
=
sys_waitid
(
which
,
pid
,
uinfo
,
options
,
ret
=
sys_waitid
(
which
,
pid
,
uinfo
,
options
,
uru
?
(
struct
rusage
__user
*
)
&
ru
:
NULL
);
uru
?
(
struct
rusage
__user
*
)
&
ru
:
NULL
);
...
@@ -1450,25 +1453,6 @@ sys32_timer_create(u32 clock, struct sigevent32 __user *se32, timer_t __user *ti
...
@@ -1450,25 +1453,6 @@ sys32_timer_create(u32 clock, struct sigevent32 __user *se32, timer_t __user *ti
return
sys_timer_create
(
clock
,
p
,
timer_id
);
return
sys_timer_create
(
clock
,
p
,
timer_id
);
}
}
asmlinkage
long
sysn32_rt_sigtimedwait
(
const
sigset_t
__user
*
uthese
,
siginfo_t
__user
*
uinfo
,
const
struct
compat_timespec
__user
*
uts32
,
size_t
sigsetsize
)
{
struct
timespec
__user
*
uts
=
NULL
;
if
(
uts32
)
{
struct
timespec
ts
;
uts
=
compat_alloc_user_space
(
sizeof
(
struct
timespec
));
if
(
get_user
(
ts
.
tv_sec
,
&
uts32
->
tv_sec
)
||
get_user
(
ts
.
tv_nsec
,
&
uts32
->
tv_nsec
)
||
copy_to_user
(
uts
,
&
ts
,
sizeof
(
ts
)))
return
-
EFAULT
;
}
return
sys_rt_sigtimedwait
(
uthese
,
uinfo
,
uts
,
sigsetsize
);
}
save_static_function
(
sys32_clone
);
save_static_function
(
sys32_clone
);
__attribute_used__
noinline
static
int
__attribute_used__
noinline
static
int
_sys32_clone
(
nabi_no_regargs
struct
pt_regs
regs
)
_sys32_clone
(
nabi_no_regargs
struct
pt_regs
regs
)
...
...
arch/mips/kernel/scall64-n32.S
浏览文件 @
808c783e
...
@@ -245,9 +245,9 @@ EXPORT(sysn32_call_table)
...
@@ -245,9 +245,9 @@ EXPORT(sysn32_call_table)
PTR
sys_capget
PTR
sys_capget
PTR
sys_capset
PTR
sys_capset
PTR
sys32_rt_sigpending
/*
6125
*/
PTR
sys32_rt_sigpending
/*
6125
*/
PTR
sysn32
_rt_sigtimedwait
PTR
compat_sys
_rt_sigtimedwait
PTR
sys_rt_sigqueueinfo
PTR
sys_rt_sigqueueinfo
PTR
sys32_rt_sigsuspend
PTR
sys
n
32_rt_sigsuspend
PTR
sys32_sigaltstack
PTR
sys32_sigaltstack
PTR
compat_sys_utime
/*
6130
*/
PTR
compat_sys_utime
/*
6130
*/
PTR
sys_mknod
PTR
sys_mknod
...
...
arch/mips/kernel/signal32.c
浏览文件 @
808c783e
...
@@ -4,7 +4,7 @@
...
@@ -4,7 +4,7 @@
* for more details.
* for more details.
*
*
* Copyright (C) 1991, 1992 Linus Torvalds
* Copyright (C) 1991, 1992 Linus Torvalds
* Copyright (C) 1994 - 2000 Ralf Baechle
* Copyright (C) 1994 - 2000
, 2006
Ralf Baechle
* Copyright (C) 1999, 2000 Silicon Graphics, Inc.
* Copyright (C) 1999, 2000 Silicon Graphics, Inc.
*/
*/
#include <linux/cache.h>
#include <linux/cache.h>
...
@@ -106,8 +106,6 @@ typedef struct compat_siginfo {
...
@@ -106,8 +106,6 @@ typedef struct compat_siginfo {
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
extern
int
do_signal32
(
sigset_t
*
oldset
,
struct
pt_regs
*
regs
);
/* 32-bit compatibility types */
/* 32-bit compatibility types */
#define _NSIG_BPW32 32
#define _NSIG_BPW32 32
...
@@ -198,7 +196,7 @@ __attribute_used__ noinline static int
...
@@ -198,7 +196,7 @@ __attribute_used__ noinline static int
_sys32_sigsuspend
(
nabi_no_regargs
struct
pt_regs
regs
)
_sys32_sigsuspend
(
nabi_no_regargs
struct
pt_regs
regs
)
{
{
compat_sigset_t
*
uset
;
compat_sigset_t
*
uset
;
sigset_t
newset
,
saveset
;
sigset_t
newset
;
uset
=
(
compat_sigset_t
*
)
regs
.
regs
[
4
];
uset
=
(
compat_sigset_t
*
)
regs
.
regs
[
4
];
if
(
get_sigset
(
&
newset
,
uset
))
if
(
get_sigset
(
&
newset
,
uset
))
...
@@ -206,19 +204,15 @@ _sys32_sigsuspend(nabi_no_regargs struct pt_regs regs)
...
@@ -206,19 +204,15 @@ _sys32_sigsuspend(nabi_no_regargs struct pt_regs regs)
sigdelsetmask
(
&
newset
,
~
_BLOCKABLE
);
sigdelsetmask
(
&
newset
,
~
_BLOCKABLE
);
spin_lock_irq
(
&
current
->
sighand
->
siglock
);
spin_lock_irq
(
&
current
->
sighand
->
siglock
);
saveset
=
current
->
blocked
;
current
->
saved_sigmask
=
current
->
blocked
;
current
->
blocked
=
newset
;
current
->
blocked
=
newset
;
recalc_sigpending
();
recalc_sigpending
();
spin_unlock_irq
(
&
current
->
sighand
->
siglock
);
spin_unlock_irq
(
&
current
->
sighand
->
siglock
);
regs
.
regs
[
2
]
=
EINTR
;
current
->
state
=
TASK_INTERRUPTIBLE
;
regs
.
regs
[
7
]
=
1
;
schedule
();
while
(
1
)
{
set_thread_flag
(
TIF_RESTORE_SIGMASK
);
current
->
state
=
TASK_INTERRUPTIBLE
;
return
-
ERESTARTNOHAND
;
schedule
();
if
(
do_signal32
(
&
saveset
,
&
regs
))
return
-
EINTR
;
}
}
}
save_static_function
(
sys32_rt_sigsuspend
);
save_static_function
(
sys32_rt_sigsuspend
);
...
@@ -226,8 +220,8 @@ __attribute_used__ noinline static int
...
@@ -226,8 +220,8 @@ __attribute_used__ noinline static int
_sys32_rt_sigsuspend
(
nabi_no_regargs
struct
pt_regs
regs
)
_sys32_rt_sigsuspend
(
nabi_no_regargs
struct
pt_regs
regs
)
{
{
compat_sigset_t
*
uset
;
compat_sigset_t
*
uset
;
sigset_t
newset
,
saveset
;
sigset_t
newset
;
size_t
sigsetsize
;
size_t
sigsetsize
;
/* XXX Don't preclude handling different sized sigset_t's. */
/* XXX Don't preclude handling different sized sigset_t's. */
sigsetsize
=
regs
.
regs
[
5
];
sigsetsize
=
regs
.
regs
[
5
];
...
@@ -240,19 +234,15 @@ _sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
...
@@ -240,19 +234,15 @@ _sys32_rt_sigsuspend(nabi_no_regargs struct pt_regs regs)
sigdelsetmask
(
&
newset
,
~
_BLOCKABLE
);
sigdelsetmask
(
&
newset
,
~
_BLOCKABLE
);
spin_lock_irq
(
&
current
->
sighand
->
siglock
);
spin_lock_irq
(
&
current
->
sighand
->
siglock
);
saveset
=
current
->
blocked
;
current
->
saved_sigmask
=
current
->
blocked
;
current
->
blocked
=
newset
;
current
->
blocked
=
newset
;
recalc_sigpending
();
recalc_sigpending
();
spin_unlock_irq
(
&
current
->
sighand
->
siglock
);
spin_unlock_irq
(
&
current
->
sighand
->
siglock
);
regs
.
regs
[
2
]
=
EINTR
;
current
->
state
=
TASK_INTERRUPTIBLE
;
regs
.
regs
[
7
]
=
1
;
schedule
();
while
(
1
)
{
set_thread_flag
(
TIF_RESTORE_SIGMASK
);
current
->
state
=
TASK_INTERRUPTIBLE
;
return
-
ERESTARTNOHAND
;
schedule
();
if
(
do_signal32
(
&
saveset
,
&
regs
))
return
-
EINTR
;
}
}
}
asmlinkage
int
sys32_sigaction
(
int
sig
,
const
struct
sigaction32
*
act
,
asmlinkage
int
sys32_sigaction
(
int
sig
,
const
struct
sigaction32
*
act
,
...
@@ -783,7 +773,7 @@ static inline int handle_signal(unsigned long sig, siginfo_t *info,
...
@@ -783,7 +773,7 @@ static inline int handle_signal(unsigned long sig, siginfo_t *info,
regs
->
regs
[
2
]
=
EINTR
;
regs
->
regs
[
2
]
=
EINTR
;
break
;
break
;
case
ERESTARTSYS
:
case
ERESTARTSYS
:
if
(
!
(
ka
->
sa
.
sa_flags
&
SA_RESTART
))
{
if
(
!
(
ka
->
sa
.
sa_flags
&
SA_RESTART
))
{
regs
->
regs
[
2
]
=
EINTR
;
regs
->
regs
[
2
]
=
EINTR
;
break
;
break
;
}
}
...
@@ -810,9 +800,10 @@ static inline int handle_signal(unsigned long sig, siginfo_t *info,
...
@@ -810,9 +800,10 @@ static inline int handle_signal(unsigned long sig, siginfo_t *info,
return
ret
;
return
ret
;
}
}
int
do_signal32
(
sigset_t
*
oldset
,
struct
pt_regs
*
regs
)
void
do_signal32
(
struct
pt_regs
*
regs
)
{
{
struct
k_sigaction
ka
;
struct
k_sigaction
ka
;
sigset_t
*
oldset
;
siginfo_t
info
;
siginfo_t
info
;
int
signr
;
int
signr
;
...
@@ -822,17 +813,30 @@ int do_signal32(sigset_t *oldset, struct pt_regs *regs)
...
@@ -822,17 +813,30 @@ int do_signal32(sigset_t *oldset, struct pt_regs *regs)
* if so.
* if so.
*/
*/
if
(
!
user_mode
(
regs
))
if
(
!
user_mode
(
regs
))
return
1
;
return
;
if
(
try_to_freeze
())
if
(
try_to_freeze
())
goto
no_signal
;
goto
no_signal
;
if
(
!
oldset
)
if
(
test_thread_flag
(
TIF_RESTORE_SIGMASK
))
oldset
=
&
current
->
saved_sigmask
;
else
oldset
=
&
current
->
blocked
;
oldset
=
&
current
->
blocked
;
signr
=
get_signal_to_deliver
(
&
info
,
&
ka
,
regs
,
NULL
);
signr
=
get_signal_to_deliver
(
&
info
,
&
ka
,
regs
,
NULL
);
if
(
signr
>
0
)
if
(
signr
>
0
)
{
return
handle_signal
(
signr
,
&
info
,
&
ka
,
oldset
,
regs
);
/* Whee! Actually deliver the signal. */
if
(
handle_signal
(
signr
,
&
info
,
&
ka
,
oldset
,
regs
)
==
0
)
{
/*
* A signal was successfully delivered; the saved
* sigmask will have been stored in the signal frame,
* and will be restored by sigreturn, so we can simply
* clear the TIF_RESTORE_SIGMASK flag.
*/
if
(
test_thread_flag
(
TIF_RESTORE_SIGMASK
))
clear_thread_flag
(
TIF_RESTORE_SIGMASK
);
}
}
no_signal:
no_signal:
/*
/*
...
@@ -853,7 +857,15 @@ int do_signal32(sigset_t *oldset, struct pt_regs *regs)
...
@@ -853,7 +857,15 @@ int do_signal32(sigset_t *oldset, struct pt_regs *regs)
regs
->
cp0_epc
-=
4
;
regs
->
cp0_epc
-=
4
;
}
}
}
}
return
0
;
/*
* If there's no signal to deliver, we just put the saved sigmask
* back
*/
if
(
test_thread_flag
(
TIF_RESTORE_SIGMASK
))
{
clear_thread_flag
(
TIF_RESTORE_SIGMASK
);
sigprocmask
(
SIG_SETMASK
,
&
current
->
saved_sigmask
,
NULL
);
}
}
}
asmlinkage
int
sys32_rt_sigaction
(
int
sig
,
const
struct
sigaction32
*
act
,
asmlinkage
int
sys32_rt_sigaction
(
int
sig
,
const
struct
sigaction32
*
act
,
...
...
arch/mips/kernel/signal_n32.c
浏览文件 @
808c783e
...
@@ -81,6 +81,39 @@ struct rt_sigframe_n32 {
...
@@ -81,6 +81,39 @@ struct rt_sigframe_n32 {
#endif
#endif
};
};
extern
void
sigset_from_compat
(
sigset_t
*
set
,
compat_sigset_t
*
compat
);
save_static_function
(
sysn32_rt_sigsuspend
);
__attribute_used__
noinline
static
int
_sysn32_rt_sigsuspend
(
nabi_no_regargs
struct
pt_regs
regs
)
{
compat_sigset_t
__user
*
unewset
,
uset
;
size_t
sigsetsize
;
sigset_t
newset
;
/* XXX Don't preclude handling different sized sigset_t's. */
sigsetsize
=
regs
.
regs
[
5
];
if
(
sigsetsize
!=
sizeof
(
sigset_t
))
return
-
EINVAL
;
unewset
=
(
compat_sigset_t
__user
*
)
regs
.
regs
[
4
];
if
(
copy_from_user
(
&
uset
,
unewset
,
sizeof
(
uset
)))
return
-
EFAULT
;
sigset_from_compat
(
&
newset
,
&
uset
);
sigdelsetmask
(
&
newset
,
~
_BLOCKABLE
);
spin_lock_irq
(
&
current
->
sighand
->
siglock
);
current
->
saved_sigmask
=
current
->
blocked
;
current
->
blocked
=
newset
;
recalc_sigpending
();
spin_unlock_irq
(
&
current
->
sighand
->
siglock
);
current
->
state
=
TASK_INTERRUPTIBLE
;
schedule
();
set_thread_flag
(
TIF_RESTORE_SIGMASK
);
return
-
ERESTARTNOHAND
;
}
save_static_function
(
sysn32_rt_sigreturn
);
save_static_function
(
sysn32_rt_sigreturn
);
__attribute_used__
noinline
static
void
__attribute_used__
noinline
static
void
_sysn32_rt_sigreturn
(
nabi_no_regargs
struct
pt_regs
regs
)
_sysn32_rt_sigreturn
(
nabi_no_regargs
struct
pt_regs
regs
)
...
...
arch/mips/kernel/smp.c
浏览文件 @
808c783e
...
@@ -29,6 +29,7 @@
...
@@ -29,6 +29,7 @@
#include <linux/timex.h>
#include <linux/timex.h>
#include <linux/sched.h>
#include <linux/sched.h>
#include <linux/cpumask.h>
#include <linux/cpumask.h>
#include <linux/cpu.h>
#include <asm/atomic.h>
#include <asm/atomic.h>
#include <asm/cpu.h>
#include <asm/cpu.h>
...
@@ -424,6 +425,25 @@ void flush_tlb_one(unsigned long vaddr)
...
@@ -424,6 +425,25 @@ void flush_tlb_one(unsigned long vaddr)
local_flush_tlb_one
(
vaddr
);
local_flush_tlb_one
(
vaddr
);
}
}
static
DEFINE_PER_CPU
(
struct
cpu
,
cpu_devices
);
static
int
__init
topology_init
(
void
)
{
int
cpu
;
int
ret
;
for_each_cpu
(
cpu
)
{
ret
=
register_cpu
(
&
per_cpu
(
cpu_devices
,
cpu
),
cpu
,
NULL
);
if
(
ret
)
printk
(
KERN_WARNING
"topology_init: register_cpu %d "
"failed (%d)
\n
"
,
cpu
,
ret
);
}
return
0
;
}
subsys_initcall
(
topology_init
);
EXPORT_SYMBOL
(
flush_tlb_page
);
EXPORT_SYMBOL
(
flush_tlb_page
);
EXPORT_SYMBOL
(
flush_tlb_one
);
EXPORT_SYMBOL
(
flush_tlb_one
);
EXPORT_SYMBOL
(
cpu_data
);
EXPORT_SYMBOL
(
cpu_data
);
...
...
arch/mips/kernel/traps.c
浏览文件 @
808c783e
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
* License. See the file "COPYING" in the main directory of this archive
* License. See the file "COPYING" in the main directory of this archive
* for more details.
* for more details.
*
*
* Copyright (C) 1994 - 1999, 2000, 01 Ralf Baechle
* Copyright (C) 1994 - 1999, 2000, 01
, 06
Ralf Baechle
* Copyright (C) 1995, 1996 Paul M. Antoine
* Copyright (C) 1995, 1996 Paul M. Antoine
* Copyright (C) 1998 Ulf Carlsson
* Copyright (C) 1998 Ulf Carlsson
* Copyright (C) 1999 Silicon Graphics, Inc.
* Copyright (C) 1999 Silicon Graphics, Inc.
...
@@ -548,6 +548,8 @@ asmlinkage void do_ov(struct pt_regs *regs)
...
@@ -548,6 +548,8 @@ asmlinkage void do_ov(struct pt_regs *regs)
{
{
siginfo_t
info
;
siginfo_t
info
;
die_if_kernel
(
"Integer overflow"
,
regs
);
info
.
si_code
=
FPE_INTOVF
;
info
.
si_code
=
FPE_INTOVF
;
info
.
si_signo
=
SIGFPE
;
info
.
si_signo
=
SIGFPE
;
info
.
si_errno
=
0
;
info
.
si_errno
=
0
;
...
...
arch/mips/mm/cex-sb1.S
浏览文件 @
808c783e
...
@@ -64,7 +64,7 @@ LEAF(except_vec2_sb1)
...
@@ -64,7 +64,7 @@ LEAF(except_vec2_sb1)
sd
k0
,
0x170
(
$
0
)
sd
k0
,
0x170
(
$
0
)
sd
k1
,
0x178
(
$
0
)
sd
k1
,
0x178
(
$
0
)
#if CONFIG_SB1_CEX_ALWAYS_FATAL
#if
def
CONFIG_SB1_CEX_ALWAYS_FATAL
j
handle_vec2_sb1
j
handle_vec2_sb1
nop
nop
#else
#else
...
...
arch/mips/pmc-sierra/yosemite/smp.c
浏览文件 @
808c783e
...
@@ -94,7 +94,7 @@ void __init prom_prepare_cpus(unsigned int max_cpus)
...
@@ -94,7 +94,7 @@ void __init prom_prepare_cpus(unsigned int max_cpus)
void
prom_boot_secondary
(
int
cpu
,
struct
task_struct
*
idle
)
void
prom_boot_secondary
(
int
cpu
,
struct
task_struct
*
idle
)
{
{
unsigned
long
gp
=
(
unsigned
long
)
task_thread_info
(
idle
);
unsigned
long
gp
=
(
unsigned
long
)
task_thread_info
(
idle
);
unsigned
long
sp
=
__KSTK_TO
P
(
idle
);
unsigned
long
sp
=
__KSTK_TO
S
(
idle
);
secondary_sp
=
sp
;
secondary_sp
=
sp
;
secondary_gp
=
gp
;
secondary_gp
=
gp
;
...
...
arch/mips/sibyte/Kconfig
浏览文件 @
808c783e
...
@@ -102,11 +102,11 @@ config SIMULATION
...
@@ -102,11 +102,11 @@ config SIMULATION
Build a kernel suitable for running under the GDB simulator.
Build a kernel suitable for running under the GDB simulator.
Primarily adjusts the kernel's notion of time.
Primarily adjusts the kernel's notion of time.
config
CONFIG_
SB1_CEX_ALWAYS_FATAL
config SB1_CEX_ALWAYS_FATAL
bool "All cache exceptions considered fatal (no recovery attempted)"
bool "All cache exceptions considered fatal (no recovery attempted)"
depends on SIBYTE_SB1xxx_SOC
depends on SIBYTE_SB1xxx_SOC
config
CONFIG_
SB1_CERR_STALL
config SB1_CERR_STALL
bool "Stall (rather than panic) on fatal cache error"
bool "Stall (rather than panic) on fatal cache error"
depends on SIBYTE_SB1xxx_SOC
depends on SIBYTE_SB1xxx_SOC
...
...
arch/mips/sibyte/bcm1480/irq.c
浏览文件 @
808c783e
...
@@ -139,7 +139,7 @@ void bcm1480_unmask_irq(int cpu, int irq)
...
@@ -139,7 +139,7 @@ void bcm1480_unmask_irq(int cpu, int irq)
#ifdef CONFIG_SMP
#ifdef CONFIG_SMP
static
void
bcm1480_set_affinity
(
unsigned
int
irq
,
cpumask_t
mask
)
static
void
bcm1480_set_affinity
(
unsigned
int
irq
,
cpumask_t
mask
)
{
{
int
i
=
0
,
old_cpu
,
cpu
,
int_on
;
int
i
=
0
,
old_cpu
,
cpu
,
int_on
,
k
;
u64
cur_ints
;
u64
cur_ints
;
irq_desc_t
*
desc
=
irq_desc
+
irq
;
irq_desc_t
*
desc
=
irq_desc
+
irq
;
unsigned
long
flags
;
unsigned
long
flags
;
...
@@ -165,7 +165,6 @@ static void bcm1480_set_affinity(unsigned int irq, cpumask_t mask)
...
@@ -165,7 +165,6 @@ static void bcm1480_set_affinity(unsigned int irq, cpumask_t mask)
irq_dirty
-=
BCM1480_NR_IRQS_HALF
;
irq_dirty
-=
BCM1480_NR_IRQS_HALF
;
}
}
int
k
;
for
(
k
=
0
;
k
<
2
;
k
++
)
{
/* Loop through high and low interrupt mask register */
for
(
k
=
0
;
k
<
2
;
k
++
)
{
/* Loop through high and low interrupt mask register */
cur_ints
=
____raw_readq
(
IOADDR
(
A_BCM1480_IMR_MAPPER
(
old_cpu
)
+
R_BCM1480_IMR_INTERRUPT_MASK_H
+
(
k
*
BCM1480_IMR_HL_SPACING
)));
cur_ints
=
____raw_readq
(
IOADDR
(
A_BCM1480_IMR_MAPPER
(
old_cpu
)
+
R_BCM1480_IMR_INTERRUPT_MASK_H
+
(
k
*
BCM1480_IMR_HL_SPACING
)));
int_on
=
!
(
cur_ints
&
(((
u64
)
1
)
<<
irq_dirty
));
int_on
=
!
(
cur_ints
&
(((
u64
)
1
)
<<
irq_dirty
));
...
@@ -216,6 +215,7 @@ static void ack_bcm1480_irq(unsigned int irq)
...
@@ -216,6 +215,7 @@ static void ack_bcm1480_irq(unsigned int irq)
{
{
u64
pending
;
u64
pending
;
unsigned
int
irq_dirty
;
unsigned
int
irq_dirty
;
int
k
;
/*
/*
* If the interrupt was an HT interrupt, now is the time to
* If the interrupt was an HT interrupt, now is the time to
...
@@ -227,7 +227,6 @@ static void ack_bcm1480_irq(unsigned int irq)
...
@@ -227,7 +227,6 @@ static void ack_bcm1480_irq(unsigned int irq)
if
((
irq_dirty
>=
BCM1480_NR_IRQS_HALF
)
&&
(
irq_dirty
<=
BCM1480_NR_IRQS
))
{
if
((
irq_dirty
>=
BCM1480_NR_IRQS_HALF
)
&&
(
irq_dirty
<=
BCM1480_NR_IRQS
))
{
irq_dirty
-=
BCM1480_NR_IRQS_HALF
;
irq_dirty
-=
BCM1480_NR_IRQS_HALF
;
}
}
int
k
;
for
(
k
=
0
;
k
<
2
;
k
++
)
{
/* Loop through high and low LDT interrupts */
for
(
k
=
0
;
k
<
2
;
k
++
)
{
/* Loop through high and low LDT interrupts */
pending
=
__raw_readq
(
IOADDR
(
A_BCM1480_IMR_REGISTER
(
bcm1480_irq_owner
[
irq
],
pending
=
__raw_readq
(
IOADDR
(
A_BCM1480_IMR_REGISTER
(
bcm1480_irq_owner
[
irq
],
R_BCM1480_IMR_LDT_INTERRUPT_H
+
(
k
*
BCM1480_IMR_HL_SPACING
))));
R_BCM1480_IMR_LDT_INTERRUPT_H
+
(
k
*
BCM1480_IMR_HL_SPACING
))));
...
...
include/asm-mips/uaccess.h
浏览文件 @
808c783e
...
@@ -233,7 +233,7 @@ do { \
...
@@ -233,7 +233,7 @@ do { \
#define __get_user_check(x,ptr,size) \
#define __get_user_check(x,ptr,size) \
({ \
({ \
long __gu_err = -EFAULT; \
long __gu_err = -EFAULT; \
const
void __user * __gu_ptr = (ptr);
\
const
__typeof__(*(ptr)) __user * __gu_ptr = (ptr);
\
\
\
if (likely(access_ok(VERIFY_READ, __gu_ptr, size))) \
if (likely(access_ok(VERIFY_READ, __gu_ptr, size))) \
__get_user_common((x), size, __gu_ptr); \
__get_user_common((x), size, __gu_ptr); \
...
@@ -258,7 +258,7 @@ do { \
...
@@ -258,7 +258,7 @@ do { \
: "=r" (__gu_err), "=r" (__gu_tmp) \
: "=r" (__gu_err), "=r" (__gu_tmp) \
: "0" (0), "o" (__m(addr)), "i" (-EFAULT)); \
: "0" (0), "o" (__m(addr)), "i" (-EFAULT)); \
\
\
(val) = (__typeof__(
val
)) __gu_tmp; \
(val) = (__typeof__(
*(addr)
)) __gu_tmp; \
}
}
/*
/*
...
@@ -284,7 +284,7 @@ do { \
...
@@ -284,7 +284,7 @@ do { \
" .previous \n" \
" .previous \n" \
: "=r" (__gu_err), "=&r" (__gu_tmp) \
: "=r" (__gu_err), "=&r" (__gu_tmp) \
: "0" (0), "r" (addr), "i" (-EFAULT)); \
: "0" (0), "r" (addr), "i" (-EFAULT)); \
(val) =
__gu_tmp;
\
(val) =
(__typeof__(*(addr))) __gu_tmp;
\
}
}
/*
/*
...
...
include/asm-mips/unistd.h
浏览文件 @
808c783e
...
@@ -313,7 +313,7 @@
...
@@ -313,7 +313,7 @@
#define __NR_mknodat (__NR_Linux + 290)
#define __NR_mknodat (__NR_Linux + 290)
#define __NR_fchownat (__NR_Linux + 291)
#define __NR_fchownat (__NR_Linux + 291)
#define __NR_futimesat (__NR_Linux + 292)
#define __NR_futimesat (__NR_Linux + 292)
#define __NR_
new
fstatat (__NR_Linux + 293)
#define __NR_fstatat (__NR_Linux + 293)
#define __NR_unlinkat (__NR_Linux + 294)
#define __NR_unlinkat (__NR_Linux + 294)
#define __NR_renameat (__NR_Linux + 295)
#define __NR_renameat (__NR_Linux + 295)
#define __NR_linkat (__NR_Linux + 296)
#define __NR_linkat (__NR_Linux + 296)
...
@@ -593,7 +593,7 @@
...
@@ -593,7 +593,7 @@
#define __NR_mknodat (__NR_Linux + 249)
#define __NR_mknodat (__NR_Linux + 249)
#define __NR_fchownat (__NR_Linux + 250)
#define __NR_fchownat (__NR_Linux + 250)
#define __NR_futimesat (__NR_Linux + 251)
#define __NR_futimesat (__NR_Linux + 251)
#define __NR_
new
fstatat (__NR_Linux + 252)
#define __NR_fstatat (__NR_Linux + 252)
#define __NR_unlinkat (__NR_Linux + 253)
#define __NR_unlinkat (__NR_Linux + 253)
#define __NR_renameat (__NR_Linux + 254)
#define __NR_renameat (__NR_Linux + 254)
#define __NR_linkat (__NR_Linux + 255)
#define __NR_linkat (__NR_Linux + 255)
...
@@ -877,7 +877,7 @@
...
@@ -877,7 +877,7 @@
#define __NR_mknodat (__NR_Linux + 253)
#define __NR_mknodat (__NR_Linux + 253)
#define __NR_fchownat (__NR_Linux + 254)
#define __NR_fchownat (__NR_Linux + 254)
#define __NR_futimesat (__NR_Linux + 255)
#define __NR_futimesat (__NR_Linux + 255)
#define __NR_
new
fstatat (__NR_Linux + 256)
#define __NR_fstatat (__NR_Linux + 256)
#define __NR_unlinkat (__NR_Linux + 257)
#define __NR_unlinkat (__NR_Linux + 257)
#define __NR_renameat (__NR_Linux + 258)
#define __NR_renameat (__NR_Linux + 258)
#define __NR_linkat (__NR_Linux + 259)
#define __NR_linkat (__NR_Linux + 259)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录