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
Kirill Smelkov
linux
Commits
046e9c3b
Commit
046e9c3b
authored
Sep 19, 2002
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/home/davem/BK/sparc-2.5
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
8f009a86
12f10fbf
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
107 additions
and
41 deletions
+107
-41
arch/sparc/config.in
arch/sparc/config.in
+2
-0
arch/sparc/kernel/sparc_ksyms.c
arch/sparc/kernel/sparc_ksyms.c
+7
-4
arch/sparc64/Makefile
arch/sparc64/Makefile
+2
-0
arch/sparc64/config.in
arch/sparc64/config.in
+2
-0
arch/sparc64/defconfig
arch/sparc64/defconfig
+29
-2
arch/sparc64/kernel/traps.c
arch/sparc64/kernel/traps.c
+11
-7
arch/sparc64/mm/fault.c
arch/sparc64/mm/fault.c
+32
-4
drivers/char/rtc.c
drivers/char/rtc.c
+1
-0
drivers/sbus/char/Config.in
drivers/sbus/char/Config.in
+1
-1
include/asm-sparc64/system.h
include/asm-sparc64/system.h
+1
-20
kernel/signal.c
kernel/signal.c
+19
-3
No files found.
arch/sparc/config.in
View file @
046e9c3b
...
@@ -208,6 +208,8 @@ if [ "$CONFIG_NET" = "y" ]; then
...
@@ -208,6 +208,8 @@ if [ "$CONFIG_NET" = "y" ]; then
endmenu
endmenu
fi
fi
source net/ax25/Config.in
# This one must be before the filesystem configs. -DaveM
# This one must be before the filesystem configs. -DaveM
mainmenu_option next_comment
mainmenu_option next_comment
comment 'Unix98 PTY support'
comment 'Unix98 PTY support'
...
...
arch/sparc/kernel/sparc_ksyms.c
View file @
046e9c3b
...
@@ -46,6 +46,9 @@
...
@@ -46,6 +46,9 @@
#include <asm/sbus.h>
#include <asm/sbus.h>
#include <asm/dma.h>
#include <asm/dma.h>
#endif
#endif
#ifdef CONFIG_PCI
#include <asm/ebus.h>
#endif
#include <asm/a.out.h>
#include <asm/a.out.h>
#include <asm/io-unit.h>
#include <asm/io-unit.h>
...
@@ -183,10 +186,7 @@ EXPORT_SYMBOL(sbus_iounmap);
...
@@ -183,10 +186,7 @@ EXPORT_SYMBOL(sbus_iounmap);
EXPORT_SYMBOL
(
sbus_ioremap
);
EXPORT_SYMBOL
(
sbus_ioremap
);
#endif
#endif
#if CONFIG_PCI
#if CONFIG_PCI
/* Actually, ioremap/iounmap are not PCI specific. But it is ok for drivers. */
EXPORT_SYMBOL
(
ebus_chain
);
EXPORT_SYMBOL
(
ioremap
);
EXPORT_SYMBOL
(
iounmap
);
EXPORT_SYMBOL
(
insl
);
EXPORT_SYMBOL
(
insl
);
EXPORT_SYMBOL
(
outsl
);
EXPORT_SYMBOL
(
outsl
);
EXPORT_SYMBOL
(
pci_alloc_consistent
);
EXPORT_SYMBOL
(
pci_alloc_consistent
);
...
@@ -194,6 +194,9 @@ EXPORT_SYMBOL(pci_free_consistent);
...
@@ -194,6 +194,9 @@ EXPORT_SYMBOL(pci_free_consistent);
EXPORT_SYMBOL
(
pci_map_single
);
EXPORT_SYMBOL
(
pci_map_single
);
EXPORT_SYMBOL
(
pci_unmap_single
);
EXPORT_SYMBOL
(
pci_unmap_single
);
EXPORT_SYMBOL
(
pci_dma_sync_single
);
EXPORT_SYMBOL
(
pci_dma_sync_single
);
/* Actually, ioremap/iounmap are not PCI specific. But it is ok for drivers. */
EXPORT_SYMBOL
(
ioremap
);
EXPORT_SYMBOL
(
iounmap
);
#endif
#endif
/* Solaris/SunOS binary compatibility */
/* Solaris/SunOS binary compatibility */
...
...
arch/sparc64/Makefile
View file @
046e9c3b
...
@@ -8,6 +8,8 @@
...
@@ -8,6 +8,8 @@
# Copyright (C) 1998 Jakub Jelinek (jj@ultra.linux.cz)
# Copyright (C) 1998 Jakub Jelinek (jj@ultra.linux.cz)
#
#
AFLAGS_vmlinux.lds.o
+=
-Usparc
# If the solaris /bin/sh wasn't so broken, I wouldn't need the following
# If the solaris /bin/sh wasn't so broken, I wouldn't need the following
# line...
# line...
SHELL
=
/bin/bash
SHELL
=
/bin/bash
...
...
arch/sparc64/config.in
View file @
046e9c3b
...
@@ -221,6 +221,8 @@ if [ "$CONFIG_NET" = "y" ]; then
...
@@ -221,6 +221,8 @@ if [ "$CONFIG_NET" = "y" ]; then
endmenu
endmenu
fi
fi
source net/ax25/Config.in
# This one must be before the filesystem configs. -DaveM
# This one must be before the filesystem configs. -DaveM
mainmenu_option next_comment
mainmenu_option next_comment
comment 'Unix 98 PTY support'
comment 'Unix 98 PTY support'
...
...
arch/sparc64/defconfig
View file @
046e9c3b
...
@@ -19,7 +19,7 @@ CONFIG_SYSCTL=y
...
@@ -19,7 +19,7 @@ CONFIG_SYSCTL=y
# Loadable module support
# Loadable module support
#
#
CONFIG_MODULES=y
CONFIG_MODULES=y
# CONFIG_MODVERSIONS is not set
CONFIG_MODVERSIONS=y
CONFIG_KMOD=y
CONFIG_KMOD=y
#
#
...
@@ -485,7 +485,6 @@ CONFIG_E100=m
...
@@ -485,7 +485,6 @@ CONFIG_E100=m
# CONFIG_LNE390 is not set
# CONFIG_LNE390 is not set
CONFIG_FEALNX=m
CONFIG_FEALNX=m
CONFIG_NATSEMI=m
CONFIG_NATSEMI=m
# CONFIG_NATSEMI_CABLE_MAGIC is not set
CONFIG_NE2K_PCI=m
CONFIG_NE2K_PCI=m
# CONFIG_NE3210 is not set
# CONFIG_NE3210 is not set
# CONFIG_ES3210 is not set
# CONFIG_ES3210 is not set
...
@@ -566,6 +565,34 @@ CONFIG_DE4X5=m
...
@@ -566,6 +565,34 @@ CONFIG_DE4X5=m
CONFIG_WINBOND_840=m
CONFIG_WINBOND_840=m
# CONFIG_DM9102 is not set
# CONFIG_DM9102 is not set
#
# Amateur Radio support
#
CONFIG_HAMRADIO=y
#
# Packet Radio protocols
#
CONFIG_AX25=m
CONFIG_AX25_DAMA_SLAVE=y
CONFIG_NETROM=m
CONFIG_ROSE=m
#
# AX.25 network device drivers
#
# CONFIG_MKISS is not set
# CONFIG_6PACK is not set
# CONFIG_BPQETHER is not set
# CONFIG_SCC_DELAY is not set
# CONFIG_SCC_TRXECHO is not set
# CONFIG_BAYCOM_SER_FDX is not set
# CONFIG_BAYCOM_SER_HDX is not set
# CONFIG_BAYCOM_PAR is not set
# CONFIG_BAYCOM_EPP is not set
# CONFIG_SOUNDMODEM is not set
# CONFIG_YAM is not set
#
#
# Unix 98 PTY support
# Unix 98 PTY support
#
#
...
...
arch/sparc64/kernel/traps.c
View file @
046e9c3b
...
@@ -1566,17 +1566,14 @@ void user_instruction_dump (unsigned int *pc)
...
@@ -1566,17 +1566,14 @@ void user_instruction_dump (unsigned int *pc)
printk
(
"
\n
"
);
printk
(
"
\n
"
);
}
}
void
show_trace_
task
(
struct
task_struct
*
tsk
)
void
show_trace_
raw
(
struct
thread_info
*
tp
,
unsigned
long
ksp
)
{
{
unsigned
long
pc
,
fp
;
unsigned
long
pc
,
fp
,
thread_base
;
unsigned
long
thread_base
=
(
unsigned
long
)
tsk
->
thread_info
;
struct
reg_window
*
rw
;
struct
reg_window
*
rw
;
int
count
=
0
;
int
count
=
0
;
if
(
!
tsk
)
fp
=
ksp
+
STACK_BIAS
;
return
;
thread_base
=
(
unsigned
long
)
tp
;
fp
=
tsk
->
thread_info
->
ksp
+
STACK_BIAS
;
do
{
do
{
/* Bogus frame pointer? */
/* Bogus frame pointer? */
if
(
fp
<
(
thread_base
+
sizeof
(
struct
thread_info
))
||
if
(
fp
<
(
thread_base
+
sizeof
(
struct
thread_info
))
||
...
@@ -1590,6 +1587,13 @@ void show_trace_task(struct task_struct *tsk)
...
@@ -1590,6 +1587,13 @@ void show_trace_task(struct task_struct *tsk)
printk
(
"
\n
"
);
printk
(
"
\n
"
);
}
}
void
show_trace_task
(
struct
task_struct
*
tsk
)
{
if
(
tsk
)
show_trace_raw
(
tsk
->
thread_info
,
tsk
->
thread_info
->
ksp
);
}
void
die_if_kernel
(
char
*
str
,
struct
pt_regs
*
regs
)
void
die_if_kernel
(
char
*
str
,
struct
pt_regs
*
regs
)
{
{
extern
void
__show_regs
(
struct
pt_regs
*
regs
);
extern
void
__show_regs
(
struct
pt_regs
*
regs
);
...
...
arch/sparc64/mm/fault.c
View file @
046e9c3b
...
@@ -130,7 +130,7 @@ unsigned long __init prom_probe_memory (void)
...
@@ -130,7 +130,7 @@ unsigned long __init prom_probe_memory (void)
return
tally
;
return
tally
;
}
}
void
unhandled_fault
(
unsigned
long
address
,
struct
task_struct
*
tsk
,
static
void
unhandled_fault
(
unsigned
long
address
,
struct
task_struct
*
tsk
,
struct
pt_regs
*
regs
)
struct
pt_regs
*
regs
)
{
{
if
((
unsigned
long
)
address
<
PAGE_SIZE
)
{
if
((
unsigned
long
)
address
<
PAGE_SIZE
)
{
...
@@ -148,6 +148,19 @@ void unhandled_fault(unsigned long address, struct task_struct *tsk,
...
@@ -148,6 +148,19 @@ void unhandled_fault(unsigned long address, struct task_struct *tsk,
die_if_kernel
(
"Oops"
,
regs
);
die_if_kernel
(
"Oops"
,
regs
);
}
}
extern
void
show_trace_raw
(
struct
thread_info
*
,
unsigned
long
);
static
void
bad_kernel_pc
(
struct
pt_regs
*
regs
)
{
unsigned
long
ksp
;
printk
(
KERN_CRIT
"OOPS: Bogus kernel PC [%016lx] in fault handler
\n
"
,
regs
->
tpc
);
__asm__
(
"mov %%sp, %0"
:
"=r"
(
ksp
));
show_trace_raw
(
current_thread_info
(),
ksp
);
unhandled_fault
(
regs
->
tpc
,
current
,
regs
);
}
/*
/*
* We now make sure that mmap_sem is held in all paths that call
* We now make sure that mmap_sem is held in all paths that call
* this. Additionally, to prevent kswapd from ripping ptes from
* this. Additionally, to prevent kswapd from ripping ptes from
...
@@ -215,7 +228,7 @@ static inline unsigned int get_fault_insn(struct pt_regs *regs, unsigned int ins
...
@@ -215,7 +228,7 @@ static inline unsigned int get_fault_insn(struct pt_regs *regs, unsigned int ins
if
(
!
regs
->
tpc
||
(
regs
->
tpc
&
0x3
))
if
(
!
regs
->
tpc
||
(
regs
->
tpc
&
0x3
))
return
0
;
return
0
;
if
(
regs
->
tstate
&
TSTATE_PRIV
)
{
if
(
regs
->
tstate
&
TSTATE_PRIV
)
{
insn
=
*
(
unsigned
int
*
)
regs
->
tpc
;
insn
=
*
(
unsigned
int
*
)
regs
->
tpc
;
}
else
{
}
else
{
insn
=
get_user_insn
(
regs
->
tpc
);
insn
=
get_user_insn
(
regs
->
tpc
);
}
}
...
@@ -306,6 +319,20 @@ asmlinkage void do_sparc64_fault(struct pt_regs *regs)
...
@@ -306,6 +319,20 @@ asmlinkage void do_sparc64_fault(struct pt_regs *regs)
(
fault_code
&
FAULT_CODE_DTLB
))
(
fault_code
&
FAULT_CODE_DTLB
))
BUG
();
BUG
();
if
(
regs
->
tstate
&
TSTATE_PRIV
)
{
unsigned
long
tpc
=
regs
->
tpc
;
extern
unsigned
int
_etext
;
/* Sanity check the PC. */
if
((
tpc
>=
KERNBASE
&&
tpc
<
(
unsigned
long
)
&
_etext
)
||
(
tpc
>=
MODULES_VADDR
&&
tpc
<
MODULES_END
))
{
/* Valid, no problems... */
}
else
{
bad_kernel_pc
(
regs
);
return
;
}
}
/*
/*
* If we're in an interrupt or have no user
* If we're in an interrupt or have no user
* context, we must not take the fault..
* context, we must not take the fault..
...
@@ -314,6 +341,7 @@ asmlinkage void do_sparc64_fault(struct pt_regs *regs)
...
@@ -314,6 +341,7 @@ asmlinkage void do_sparc64_fault(struct pt_regs *regs)
goto
intr_or_no_mm
;
goto
intr_or_no_mm
;
if
(
test_thread_flag
(
TIF_32BIT
))
{
if
(
test_thread_flag
(
TIF_32BIT
))
{
if
(
!
(
regs
->
tstate
&
TSTATE_PRIV
))
regs
->
tpc
&=
0xffffffff
;
regs
->
tpc
&=
0xffffffff
;
address
&=
0xffffffff
;
address
&=
0xffffffff
;
}
}
...
...
drivers/char/rtc.c
View file @
046e9c3b
...
@@ -76,6 +76,7 @@
...
@@ -76,6 +76,7 @@
#include <asm/system.h>
#include <asm/system.h>
#ifdef __sparc__
#ifdef __sparc__
#include <linux/pci.h>
#include <asm/ebus.h>
#include <asm/ebus.h>
#ifdef __sparc_v9__
#ifdef __sparc_v9__
#include <asm/isa.h>
#include <asm/isa.h>
...
...
drivers/sbus/char/Config.in
View file @
046e9c3b
...
@@ -18,7 +18,7 @@ if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
...
@@ -18,7 +18,7 @@ if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
# XXX Why don't we do "source drivers/char/Config.in" somewhere?
# XXX Why don't we do "source drivers/char/Config.in" somewhere?
if [ "$CONFIG_PCI" = "y" ]; then
if [ "$CONFIG_PCI" = "y" ]; then
define_bool CONFIG_APM_RTC_IS_GMT y # no shit
define_bool CONFIG_APM_RTC_IS_GMT y # no shit
bool 'PC-style RTC
' CONFIG_RTC
tristate 'PC-style Real Time Clock Support
' CONFIG_RTC
fi
fi
fi
fi
fi
fi
...
...
include/asm-sparc64/system.h
View file @
046e9c3b
...
@@ -152,24 +152,6 @@ do { spin_unlock_irq(&(prev)->switch_lock); \
...
@@ -152,24 +152,6 @@ do { spin_unlock_irq(&(prev)->switch_lock); \
#define task_running(rq, p) \
#define task_running(rq, p) \
((rq)->curr == (p) || spin_is_locked(&(p)->switch_lock))
((rq)->curr == (p) || spin_is_locked(&(p)->switch_lock))
#ifndef CONFIG_DEBUG_SPINLOCK
#define CHECK_LOCKS(PREV) do { } while(0)
#else
/* CONFIG_DEBUG_SPINLOCK */
#define CHECK_LOCKS(PREV) \
if ((PREV)->thread.smp_lock_count) { \
unsigned long rpc; \
__asm__ __volatile__("mov %%i7, %0" : "=r" (rpc)); \
printk(KERN_CRIT "(%s)[%d]: Sleeping with %d locks held!\n", \
(PREV)->comm, (PREV)->pid, \
(PREV)->thread.smp_lock_count); \
printk(KERN_CRIT "(%s)[%d]: Last lock at %08x\n", \
(PREV)->comm, (PREV)->pid, \
(PREV)->thread.smp_lock_pc); \
printk(KERN_CRIT "(%s)[%d]: Sched caller %016lx\n", \
(PREV)->comm, (PREV)->pid, rpc); \
}
#endif
/* !(CONFIG_DEBUG_SPINLOCK) */
/* See what happens when you design the chip correctly?
/* See what happens when you design the chip correctly?
*
*
* We tell gcc we clobber all non-fixed-usage registers except
* We tell gcc we clobber all non-fixed-usage registers except
...
@@ -180,8 +162,7 @@ if ((PREV)->thread.smp_lock_count) { \
...
@@ -180,8 +162,7 @@ if ((PREV)->thread.smp_lock_count) { \
* and 2 stores in this critical code path. -DaveM
* and 2 stores in this critical code path. -DaveM
*/
*/
#define switch_to(prev, next, last) \
#define switch_to(prev, next, last) \
do { CHECK_LOCKS(prev); \
do { if (test_thread_flag(TIF_PERFCTR)) { \
if (test_thread_flag(TIF_PERFCTR)) { \
unsigned long __tmp; \
unsigned long __tmp; \
read_pcr(__tmp); \
read_pcr(__tmp); \
current_thread_info()->pcr_reg = __tmp; \
current_thread_info()->pcr_reg = __tmp; \
...
...
kernel/signal.c
View file @
046e9c3b
...
@@ -70,6 +70,14 @@ int max_queued_signals = 1024;
...
@@ -70,6 +70,14 @@ int max_queued_signals = 1024;
| SIGWINCH | load-balance | ignore |
| SIGWINCH | load-balance | ignore |
| SIGPWR | load-balance | kill-all |
| SIGPWR | load-balance | kill-all |
| SIGRTMIN-SIGRTMAX | load-balance | kill-all |
| SIGRTMIN-SIGRTMAX | load-balance | kill-all |
----------------------------------------------------------
non-POSIX signal thread group behavior:
----------------------------------------------------------
| | userspace | kernel |
----------------------------------------------------------
| SIGEMT | specific | kill-all+core |
----------------------------------------------------------
----------------------------------------------------------
*/
*/
...
@@ -82,12 +90,19 @@ int max_queued_signals = 1024;
...
@@ -82,12 +90,19 @@ int max_queued_signals = 1024;
#define M_SIGSTKFLT 0
#define M_SIGSTKFLT 0
#endif
#endif
#ifdef SIGEMT
#define M_SIGEMT M(SIGEMT)
#else
#define M_SIGEMT 0
#endif
#define M(sig) (1UL << (sig))
#define M(sig) (1UL << (sig))
#define SIG_USER_SPECIFIC_MASK (\
#define SIG_USER_SPECIFIC_MASK (\
M(SIGILL) | M(SIGTRAP) | M(SIGABRT) | M(SIGBUS) | \
M(SIGILL) | M(SIGTRAP) | M(SIGABRT) | M(SIGBUS) | \
M(SIGFPE) | M(SIGSEGV) | M(SIGPIPE) | M(SIGXFSZ) | \
M(SIGFPE) | M(SIGSEGV) | M(SIGPIPE) | M(SIGXFSZ) | \
M(SIGPROF) | M(SIGSYS) | M_SIGSTKFLT | M(SIGCONT) )
M(SIGPROF) | M(SIGSYS) | M_SIGSTKFLT | M(SIGCONT) | \
M_SIGEMT )
#define SIG_USER_LOAD_BALANCE_MASK (\
#define SIG_USER_LOAD_BALANCE_MASK (\
M(SIGHUP) | M(SIGINT) | M(SIGQUIT) | M(SIGUSR1) | \
M(SIGHUP) | M(SIGINT) | M(SIGQUIT) | M(SIGUSR1) | \
...
@@ -105,7 +120,8 @@ int max_queued_signals = 1024;
...
@@ -105,7 +120,8 @@ int max_queued_signals = 1024;
M(SIGPIPE) | M(SIGALRM) | M(SIGTERM) | M(SIGXCPU) | \
M(SIGPIPE) | M(SIGALRM) | M(SIGTERM) | M(SIGXCPU) | \
M(SIGXFSZ) | M(SIGVTALRM) | M(SIGPROF) | M(SIGPOLL) | \
M(SIGXFSZ) | M(SIGVTALRM) | M(SIGPROF) | M(SIGPOLL) | \
M(SIGSYS) | M_SIGSTKFLT | M(SIGPWR) | M(SIGCONT) | \
M(SIGSYS) | M_SIGSTKFLT | M(SIGPWR) | M(SIGCONT) | \
M(SIGSTOP) | M(SIGTSTP) | M(SIGTTIN) | M(SIGTTOU) )
M(SIGSTOP) | M(SIGTSTP) | M(SIGTTIN) | M(SIGTTOU) | \
M_SIGEMT )
#define SIG_KERNEL_ONLY_MASK (\
#define SIG_KERNEL_ONLY_MASK (\
M(SIGKILL) | M(SIGSTOP) )
M(SIGKILL) | M(SIGSTOP) )
...
@@ -113,7 +129,7 @@ int max_queued_signals = 1024;
...
@@ -113,7 +129,7 @@ int max_queued_signals = 1024;
#define SIG_KERNEL_COREDUMP_MASK (\
#define SIG_KERNEL_COREDUMP_MASK (\
M(SIGQUIT) | M(SIGILL) | M(SIGTRAP) | M(SIGABRT) | \
M(SIGQUIT) | M(SIGILL) | M(SIGTRAP) | M(SIGABRT) | \
M(SIGFPE) | M(SIGSEGV) | M(SIGBUS) | M(SIGSYS) | \
M(SIGFPE) | M(SIGSEGV) | M(SIGBUS) | M(SIGSYS) | \
M(SIGXCPU) | M(SIGXFSZ)
)
M(SIGXCPU) | M(SIGXFSZ)
| M_SIGEMT
)
#define T(sig, mask) \
#define T(sig, mask) \
((1UL << (sig)) & mask)
((1UL << (sig)) & mask)
...
...
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