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
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