Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
808c783e
Commit
808c783e
authored
Feb 21, 2006
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'upstream' of
git://ftp.linux-mips.org/pub/scm/upstream-linus
parents
52aa536f
8db41685
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
131 additions
and
74 deletions
+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
No files found.
arch/mips/configs/ip27_defconfig
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment