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
c90176df
Commit
c90176df
authored
Feb 16, 2003
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Manual merge
parents
a6f5ccdf
6a8061e8
Changes
37
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
641 additions
and
746 deletions
+641
-746
arch/arm/common/sa1111-pcibuf.c
arch/arm/common/sa1111-pcibuf.c
+1
-1
arch/arm/common/sa1111.c
arch/arm/common/sa1111.c
+6
-4
arch/arm/def-configs/epxa10db
arch/arm/def-configs/epxa10db
+180
-313
arch/arm/kernel/init_task.c
arch/arm/kernel/init_task.c
+1
-0
arch/arm/kernel/irq.c
arch/arm/kernel/irq.c
+55
-6
arch/arm/kernel/ptrace.c
arch/arm/kernel/ptrace.c
+9
-6
arch/arm/kernel/ptrace.h
arch/arm/kernel/ptrace.h
+2
-16
arch/arm/kernel/signal.c
arch/arm/kernel/signal.c
+47
-131
arch/arm/kernel/traps.c
arch/arm/kernel/traps.c
+9
-4
arch/arm/lib/backtrace.S
arch/arm/lib/backtrace.S
+14
-5
arch/arm/mach-epxa10db/irq.c
arch/arm/mach-epxa10db/irq.c
+3
-0
arch/arm/mach-footbridge/irq.c
arch/arm/mach-footbridge/irq.c
+1
-0
arch/arm/mach-footbridge/isa-irq.c
arch/arm/mach-footbridge/isa-irq.c
+1
-0
arch/arm/mach-iop310/iop310-irq.c
arch/arm/mach-iop310/iop310-irq.c
+1
-0
arch/arm/mach-iop310/iop310-pci.c
arch/arm/mach-iop310/iop310-pci.c
+2
-0
arch/arm/mach-iop310/iq80310-irq.c
arch/arm/mach-iop310/iq80310-irq.c
+1
-0
arch/arm/mach-iop310/xs80200-irq.c
arch/arm/mach-iop310/xs80200-irq.c
+1
-0
arch/arm/mach-pxa/irq.c
arch/arm/mach-pxa/irq.c
+0
-14
arch/arm/mach-rpc/irq.c
arch/arm/mach-rpc/irq.c
+1
-0
arch/arm/mach-sa1100/irq.c
arch/arm/mach-sa1100/irq.c
+1
-17
arch/arm/mach-sa1100/xp860.c
arch/arm/mach-sa1100/xp860.c
+1
-1
arch/arm/mm/consistent.c
arch/arm/mm/consistent.c
+1
-1
arch/arm/mm/proc-xscale.S
arch/arm/mm/proc-xscale.S
+1
-1
arch/arm/vmlinux-armv.lds.in
arch/arm/vmlinux-armv.lds.in
+4
-0
drivers/acorn/scsi/acornscsi.c
drivers/acorn/scsi/acornscsi.c
+54
-54
drivers/acorn/scsi/fas216.c
drivers/acorn/scsi/fas216.c
+100
-59
drivers/acorn/scsi/queue.c
drivers/acorn/scsi/queue.c
+4
-4
drivers/acorn/scsi/scsi.h
drivers/acorn/scsi/scsi.h
+2
-2
drivers/char/watchdog/wdt285.c
drivers/char/watchdog/wdt285.c
+96
-75
drivers/char/watchdog/wdt977.c
drivers/char/watchdog/wdt977.c
+16
-16
drivers/input/serio/sa1111ps2.c
drivers/input/serio/sa1111ps2.c
+2
-0
drivers/mtd/maps/sa1100-flash.c
drivers/mtd/maps/sa1100-flash.c
+6
-5
include/asm-arm/arch-iop310/serial.h
include/asm-arm/arch-iop310/serial.h
+2
-2
include/asm-arm/mach/irq.h
include/asm-arm/mach/irq.h
+6
-2
include/asm-arm/proc-armv/processor.h
include/asm-arm/proc-armv/processor.h
+1
-1
include/asm-arm/proc-armv/system.h
include/asm-arm/proc-armv/system.h
+8
-3
include/asm-arm/signal.h
include/asm-arm/signal.h
+1
-3
No files found.
arch/arm/common/sa1111-pcibuf.c
View file @
c90176df
...
@@ -54,7 +54,7 @@ struct safe_buffer {
...
@@ -54,7 +54,7 @@ struct safe_buffer {
dma_addr_t
safe_dma_addr
;
dma_addr_t
safe_dma_addr
;
};
};
LIST_HEAD
(
safe_buffers
);
static
LIST_HEAD
(
safe_buffers
);
#define SIZE_SMALL 1024
#define SIZE_SMALL 1024
...
...
arch/arm/common/sa1111.c
View file @
c90176df
...
@@ -218,7 +218,7 @@ static void sa1111_unmask_lowirq(unsigned int irq)
...
@@ -218,7 +218,7 @@ static void sa1111_unmask_lowirq(unsigned int irq)
* be triggered. In fact, its very difficult, if not impossible to get
* be triggered. In fact, its very difficult, if not impossible to get
* INTSET to re-trigger the interrupt.
* INTSET to re-trigger the interrupt.
*/
*/
static
void
sa1111_rerun
_lowirq
(
unsigned
int
irq
)
static
int
sa1111_retrigger
_lowirq
(
unsigned
int
irq
)
{
{
unsigned
int
mask
=
SA1111_IRQMASK_LO
(
irq
);
unsigned
int
mask
=
SA1111_IRQMASK_LO
(
irq
);
int
i
;
int
i
;
...
@@ -233,6 +233,7 @@ static void sa1111_rerun_lowirq(unsigned int irq)
...
@@ -233,6 +233,7 @@ static void sa1111_rerun_lowirq(unsigned int irq)
if
(
i
==
8
)
if
(
i
==
8
)
printk
(
KERN_ERR
"Danger Will Robinson: failed to "
printk
(
KERN_ERR
"Danger Will Robinson: failed to "
"re-trigger IRQ%d
\n
"
,
irq
);
"re-trigger IRQ%d
\n
"
,
irq
);
return
i
==
8
?
-
1
:
0
;
}
}
static
int
sa1111_type_lowirq
(
unsigned
int
irq
,
unsigned
int
flags
)
static
int
sa1111_type_lowirq
(
unsigned
int
irq
,
unsigned
int
flags
)
...
@@ -270,7 +271,7 @@ static struct irqchip sa1111_low_chip = {
...
@@ -270,7 +271,7 @@ static struct irqchip sa1111_low_chip = {
.
ack
=
sa1111_ack_irq
,
.
ack
=
sa1111_ack_irq
,
.
mask
=
sa1111_mask_lowirq
,
.
mask
=
sa1111_mask_lowirq
,
.
unmask
=
sa1111_unmask_lowirq
,
.
unmask
=
sa1111_unmask_lowirq
,
.
re
run
=
sa1111_rerun
_lowirq
,
.
re
trigger
=
sa1111_retrigger
_lowirq
,
.
type
=
sa1111_type_lowirq
,
.
type
=
sa1111_type_lowirq
,
.
wake
=
sa1111_wake_lowirq
,
.
wake
=
sa1111_wake_lowirq
,
};
};
...
@@ -292,7 +293,7 @@ static void sa1111_unmask_highirq(unsigned int irq)
...
@@ -292,7 +293,7 @@ static void sa1111_unmask_highirq(unsigned int irq)
* be triggered. In fact, its very difficult, if not impossible to get
* be triggered. In fact, its very difficult, if not impossible to get
* INTSET to re-trigger the interrupt.
* INTSET to re-trigger the interrupt.
*/
*/
static
void
sa1111_rerun
_highirq
(
unsigned
int
irq
)
static
int
sa1111_retrigger
_highirq
(
unsigned
int
irq
)
{
{
unsigned
int
mask
=
SA1111_IRQMASK_HI
(
irq
);
unsigned
int
mask
=
SA1111_IRQMASK_HI
(
irq
);
int
i
;
int
i
;
...
@@ -307,6 +308,7 @@ static void sa1111_rerun_highirq(unsigned int irq)
...
@@ -307,6 +308,7 @@ static void sa1111_rerun_highirq(unsigned int irq)
if
(
i
==
8
)
if
(
i
==
8
)
printk
(
KERN_ERR
"Danger Will Robinson: failed to "
printk
(
KERN_ERR
"Danger Will Robinson: failed to "
"re-trigger IRQ%d
\n
"
,
irq
);
"re-trigger IRQ%d
\n
"
,
irq
);
return
i
==
8
?
-
1
:
0
;
}
}
static
int
sa1111_type_highirq
(
unsigned
int
irq
,
unsigned
int
flags
)
static
int
sa1111_type_highirq
(
unsigned
int
irq
,
unsigned
int
flags
)
...
@@ -344,7 +346,7 @@ static struct irqchip sa1111_high_chip = {
...
@@ -344,7 +346,7 @@ static struct irqchip sa1111_high_chip = {
.
ack
=
sa1111_ack_irq
,
.
ack
=
sa1111_ack_irq
,
.
mask
=
sa1111_mask_highirq
,
.
mask
=
sa1111_mask_highirq
,
.
unmask
=
sa1111_unmask_highirq
,
.
unmask
=
sa1111_unmask_highirq
,
.
re
run
=
sa1111_rerun
_highirq
,
.
re
trigger
=
sa1111_retrigger
_highirq
,
.
type
=
sa1111_type_highirq
,
.
type
=
sa1111_type_highirq
,
.
wake
=
sa1111_wake_highirq
,
.
wake
=
sa1111_wake_highirq
,
};
};
...
...
arch/arm/def-configs/epxa10db
View file @
c90176df
This diff is collapsed.
Click to expand it.
arch/arm/kernel/init_task.c
View file @
c90176df
...
@@ -13,6 +13,7 @@
...
@@ -13,6 +13,7 @@
static
struct
fs_struct
init_fs
=
INIT_FS
;
static
struct
fs_struct
init_fs
=
INIT_FS
;
static
struct
files_struct
init_files
=
INIT_FILES
;
static
struct
files_struct
init_files
=
INIT_FILES
;
static
struct
signal_struct
init_signals
=
INIT_SIGNALS
(
init_signals
);
static
struct
signal_struct
init_signals
=
INIT_SIGNALS
(
init_signals
);
static
struct
sighand_struct
init_sighand
=
INIT_SIGHAND
(
init_sighand
);
struct
mm_struct
init_mm
=
INIT_MM
(
init_mm
);
struct
mm_struct
init_mm
=
INIT_MM
(
init_mm
);
/*
/*
...
...
arch/arm/kernel/irq.c
View file @
c90176df
...
@@ -29,6 +29,7 @@
...
@@ -29,6 +29,7 @@
#include <linux/init.h>
#include <linux/init.h>
#include <linux/seq_file.h>
#include <linux/seq_file.h>
#include <linux/errno.h>
#include <linux/errno.h>
#include <linux/list.h>
#include <asm/irq.h>
#include <asm/irq.h>
#include <asm/system.h>
#include <asm/system.h>
...
@@ -45,6 +46,7 @@
...
@@ -45,6 +46,7 @@
static
volatile
unsigned
long
irq_err_count
;
static
volatile
unsigned
long
irq_err_count
;
static
spinlock_t
irq_controller_lock
;
static
spinlock_t
irq_controller_lock
;
static
LIST_HEAD
(
irq_pending
);
struct
irqdesc
irq_desc
[
NR_IRQS
];
struct
irqdesc
irq_desc
[
NR_IRQS
];
void
(
*
init_arch_irq
)(
void
)
__initdata
=
NULL
;
void
(
*
init_arch_irq
)(
void
)
__initdata
=
NULL
;
...
@@ -69,9 +71,10 @@ static struct irqchip bad_chip = {
...
@@ -69,9 +71,10 @@ static struct irqchip bad_chip = {
};
};
static
struct
irqdesc
bad_irq_desc
=
{
static
struct
irqdesc
bad_irq_desc
=
{
.
chip
=
&
bad_chip
,
.
chip
=
&
bad_chip
,
.
handle
=
do_bad_IRQ
,
.
handle
=
do_bad_IRQ
,
.
depth
=
1
,
.
pend
=
LIST_HEAD_INIT
(
bad_irq_desc
.
pend
),
.
disable_depth
=
1
,
};
};
/**
/**
...
@@ -90,6 +93,7 @@ void disable_irq(unsigned int irq)
...
@@ -90,6 +93,7 @@ void disable_irq(unsigned int irq)
spin_lock_irqsave
(
&
irq_controller_lock
,
flags
);
spin_lock_irqsave
(
&
irq_controller_lock
,
flags
);
desc
->
disable_depth
++
;
desc
->
disable_depth
++
;
list_del_init
(
&
desc
->
pend
);
spin_unlock_irqrestore
(
&
irq_controller_lock
,
flags
);
spin_unlock_irqrestore
(
&
irq_controller_lock
,
flags
);
}
}
...
@@ -122,9 +126,11 @@ void enable_irq(unsigned int irq)
...
@@ -122,9 +126,11 @@ void enable_irq(unsigned int irq)
* from here since the caller might be in an
* from here since the caller might be in an
* interrupt-protected region.
* interrupt-protected region.
*/
*/
if
(
desc
->
pending
)
{
if
(
desc
->
pending
&&
list_empty
(
&
desc
->
pend
)
)
{
desc
->
pending
=
0
;
desc
->
pending
=
0
;
desc
->
chip
->
rerun
(
irq
);
if
(
!
desc
->
chip
->
retrigger
||
desc
->
chip
->
retrigger
(
irq
))
list_add
(
&
desc
->
pend
,
&
irq_pending
);
}
}
}
}
spin_unlock_irqrestore
(
&
irq_controller_lock
,
flags
);
spin_unlock_irqrestore
(
&
irq_controller_lock
,
flags
);
...
@@ -346,6 +352,40 @@ do_level_IRQ(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
...
@@ -346,6 +352,40 @@ do_level_IRQ(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
}
}
}
}
static
void
do_pending_irqs
(
struct
pt_regs
*
regs
)
{
struct
list_head
head
,
*
l
,
*
n
;
do
{
struct
irqdesc
*
desc
;
/*
* First, take the pending interrupts off the list.
* The act of calling the handlers may add some IRQs
* back onto the list.
*/
head
=
irq_pending
;
INIT_LIST_HEAD
(
&
irq_pending
);
head
.
next
->
prev
=
&
head
;
head
.
prev
->
next
=
&
head
;
/*
* Now run each entry. We must delete it from our
* list before calling the handler.
*/
list_for_each_safe
(
l
,
n
,
&
head
)
{
desc
=
list_entry
(
l
,
struct
irqdesc
,
pend
);
list_del_init
(
&
desc
->
pend
);
desc
->
handle
(
desc
-
irq_desc
,
desc
,
regs
);
}
/*
* The list must be empty.
*/
BUG_ON
(
!
list_empty
(
&
head
));
}
while
(
!
list_empty
(
&
irq_pending
));
}
/*
/*
* do_IRQ handles all hardware IRQ's. Decoded IRQs should not
* do_IRQ handles all hardware IRQ's. Decoded IRQs should not
* come via this function. Instead, they should provide their
* come via this function. Instead, they should provide their
...
@@ -365,6 +405,13 @@ asmlinkage void asm_do_IRQ(int irq, struct pt_regs *regs)
...
@@ -365,6 +405,13 @@ asmlinkage void asm_do_IRQ(int irq, struct pt_regs *regs)
irq_enter
();
irq_enter
();
spin_lock
(
&
irq_controller_lock
);
spin_lock
(
&
irq_controller_lock
);
desc
->
handle
(
irq
,
desc
,
regs
);
desc
->
handle
(
irq
,
desc
,
regs
);
/*
* Now re-run any pending interrupts.
*/
if
(
!
list_empty
(
&
irq_pending
))
do_pending_irqs
(
regs
);
spin_unlock
(
&
irq_controller_lock
);
spin_unlock
(
&
irq_controller_lock
);
irq_exit
();
irq_exit
();
}
}
...
@@ -740,8 +787,10 @@ void __init init_IRQ(void)
...
@@ -740,8 +787,10 @@ void __init init_IRQ(void)
extern
void
init_dma
(
void
);
extern
void
init_dma
(
void
);
int
irq
;
int
irq
;
for
(
irq
=
0
,
desc
=
irq_desc
;
irq
<
NR_IRQS
;
irq
++
,
desc
++
)
for
(
irq
=
0
,
desc
=
irq_desc
;
irq
<
NR_IRQS
;
irq
++
,
desc
++
)
{
*
desc
=
bad_irq_desc
;
*
desc
=
bad_irq_desc
;
INIT_LIST_HEAD
(
&
desc
->
pend
);
}
init_arch_irq
();
init_arch_irq
();
init_dma
();
init_dma
();
...
...
arch/arm/kernel/ptrace.c
View file @
c90176df
...
@@ -446,7 +446,7 @@ void ptrace_set_bpt(struct task_struct *child)
...
@@ -446,7 +446,7 @@ void ptrace_set_bpt(struct task_struct *child)
* Ensure no single-step breakpoint is pending. Returns non-zero
* Ensure no single-step breakpoint is pending. Returns non-zero
* value if child was being single-stepped.
* value if child was being single-stepped.
*/
*/
void
__
ptrace_cancel_bpt
(
struct
task_struct
*
child
)
void
ptrace_cancel_bpt
(
struct
task_struct
*
child
)
{
{
int
i
,
nsaved
=
child
->
thread
.
debug
.
nsaved
;
int
i
,
nsaved
=
child
->
thread
.
debug
.
nsaved
;
...
@@ -468,7 +468,8 @@ void __ptrace_cancel_bpt(struct task_struct *child)
...
@@ -468,7 +468,8 @@ void __ptrace_cancel_bpt(struct task_struct *child)
*/
*/
void
ptrace_disable
(
struct
task_struct
*
child
)
void
ptrace_disable
(
struct
task_struct
*
child
)
{
{
__ptrace_cancel_bpt
(
child
);
child
->
ptrace
&=
~
PT_SINGLESTEP
;
ptrace_cancel_bpt
(
child
);
}
}
/*
/*
...
@@ -486,7 +487,7 @@ void ptrace_break(struct task_struct *tsk, struct pt_regs *regs)
...
@@ -486,7 +487,7 @@ void ptrace_break(struct task_struct *tsk, struct pt_regs *regs)
if
(
tsk
->
thread
.
debug
.
nsaved
==
0
)
if
(
tsk
->
thread
.
debug
.
nsaved
==
0
)
printk
(
KERN_ERR
"ptrace: bogus breakpoint trap
\n
"
);
printk
(
KERN_ERR
"ptrace: bogus breakpoint trap
\n
"
);
__
ptrace_cancel_bpt
(
tsk
);
ptrace_cancel_bpt
(
tsk
);
info
.
si_signo
=
SIGTRAP
;
info
.
si_signo
=
SIGTRAP
;
info
.
si_errno
=
0
;
info
.
si_errno
=
0
;
...
@@ -637,7 +638,8 @@ static int do_ptrace(int request, struct task_struct *child, long addr, long dat
...
@@ -637,7 +638,8 @@ static int do_ptrace(int request, struct task_struct *child, long addr, long dat
clear_tsk_thread_flag
(
child
,
TIF_SYSCALL_TRACE
);
clear_tsk_thread_flag
(
child
,
TIF_SYSCALL_TRACE
);
child
->
exit_code
=
data
;
child
->
exit_code
=
data
;
/* make sure single-step breakpoint is gone. */
/* make sure single-step breakpoint is gone. */
__ptrace_cancel_bpt
(
child
);
child
->
ptrace
&=
~
PT_SINGLESTEP
;
ptrace_cancel_bpt
(
child
);
wake_up_process
(
child
);
wake_up_process
(
child
);
ret
=
0
;
ret
=
0
;
break
;
break
;
...
@@ -649,7 +651,8 @@ static int do_ptrace(int request, struct task_struct *child, long addr, long dat
...
@@ -649,7 +651,8 @@ static int do_ptrace(int request, struct task_struct *child, long addr, long dat
*/
*/
case
PTRACE_KILL
:
case
PTRACE_KILL
:
/* make sure single-step breakpoint is gone. */
/* make sure single-step breakpoint is gone. */
__ptrace_cancel_bpt
(
child
);
child
->
ptrace
&=
~
PT_SINGLESTEP
;
ptrace_cancel_bpt
(
child
);
if
(
child
->
state
!=
TASK_ZOMBIE
)
{
if
(
child
->
state
!=
TASK_ZOMBIE
)
{
child
->
exit_code
=
SIGKILL
;
child
->
exit_code
=
SIGKILL
;
wake_up_process
(
child
);
wake_up_process
(
child
);
...
@@ -664,7 +667,7 @@ static int do_ptrace(int request, struct task_struct *child, long addr, long dat
...
@@ -664,7 +667,7 @@ static int do_ptrace(int request, struct task_struct *child, long addr, long dat
ret
=
-
EIO
;
ret
=
-
EIO
;
if
((
unsigned
long
)
data
>
_NSIG
)
if
((
unsigned
long
)
data
>
_NSIG
)
break
;
break
;
child
->
thread
.
debug
.
nsaved
=
-
1
;
child
->
ptrace
|=
PT_SINGLESTEP
;
clear_tsk_thread_flag
(
child
,
TIF_SYSCALL_TRACE
);
clear_tsk_thread_flag
(
child
,
TIF_SYSCALL_TRACE
);
child
->
exit_code
=
data
;
child
->
exit_code
=
data
;
/* give it a chance to run. */
/* give it a chance to run. */
...
...
arch/arm/kernel/ptrace.h
View file @
c90176df
/*
/*
* linux/arch/arm/kernel/ptrace.h
* linux/arch/arm/kernel/ptrace.h
*
*
* Copyright (C) 2000-200
2
Russell King
* Copyright (C) 2000-200
3
Russell King
*
*
* This program is free software; you can redistribute it and/or modify
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
* published by the Free Software Foundation.
*/
*/
extern
void
__
ptrace_cancel_bpt
(
struct
task_struct
*
);
extern
void
ptrace_cancel_bpt
(
struct
task_struct
*
);
extern
void
ptrace_set_bpt
(
struct
task_struct
*
);
extern
void
ptrace_set_bpt
(
struct
task_struct
*
);
extern
void
ptrace_break
(
struct
task_struct
*
,
struct
pt_regs
*
);
extern
void
ptrace_break
(
struct
task_struct
*
,
struct
pt_regs
*
);
/*
* Clear a breakpoint, if one exists.
*/
static
inline
int
ptrace_cancel_bpt
(
struct
task_struct
*
tsk
)
{
int
nsaved
=
tsk
->
thread
.
debug
.
nsaved
;
if
(
nsaved
)
__ptrace_cancel_bpt
(
tsk
);
return
nsaved
;
}
arch/arm/kernel/signal.c
View file @
c90176df
...
@@ -216,8 +216,10 @@ asmlinkage int sys_sigreturn(struct pt_regs *regs)
...
@@ -216,8 +216,10 @@ asmlinkage int sys_sigreturn(struct pt_regs *regs)
goto
badframe
;
goto
badframe
;
/* Send SIGTRAP if we're single-stepping */
/* Send SIGTRAP if we're single-stepping */
if
(
ptrace_cancel_bpt
(
current
))
if
(
current
->
ptrace
&
PT_SINGLESTEP
)
{
ptrace_cancel_bpt
(
current
);
send_sig
(
SIGTRAP
,
current
,
1
);
send_sig
(
SIGTRAP
,
current
,
1
);
}
return
regs
->
ARM_r0
;
return
regs
->
ARM_r0
;
...
@@ -256,8 +258,10 @@ asmlinkage int sys_rt_sigreturn(struct pt_regs *regs)
...
@@ -256,8 +258,10 @@ asmlinkage int sys_rt_sigreturn(struct pt_regs *regs)
goto
badframe
;
goto
badframe
;
/* Send SIGTRAP if we're single-stepping */
/* Send SIGTRAP if we're single-stepping */
if
(
ptrace_cancel_bpt
(
current
))
if
(
current
->
ptrace
&
PT_SINGLESTEP
)
{
ptrace_cancel_bpt
(
current
);
send_sig
(
SIGTRAP
,
current
,
1
);
send_sig
(
SIGTRAP
,
current
,
1
);
}
return
regs
->
ARM_r0
;
return
regs
->
ARM_r0
;
...
@@ -441,18 +445,47 @@ setup_rt_frame(int usig, struct k_sigaction *ka, siginfo_t *info,
...
@@ -441,18 +445,47 @@ setup_rt_frame(int usig, struct k_sigaction *ka, siginfo_t *info,
return
err
;
return
err
;
}
}
static
inline
void
restart_syscall
(
struct
pt_regs
*
regs
)
{
regs
->
ARM_r0
=
regs
->
ARM_ORIG_r0
;
regs
->
ARM_pc
-=
thumb_mode
(
regs
)
?
2
:
4
;
}
/*
/*
* OK, we're invoking a handler
* OK, we're invoking a handler
*/
*/
static
void
static
void
handle_signal
(
unsigned
long
sig
,
s
truct
k_sigaction
*
ka
,
handle_signal
(
unsigned
long
sig
,
s
iginfo_t
*
info
,
sigset_t
*
oldset
,
s
iginfo_t
*
info
,
sigset_t
*
oldset
,
struct
pt_regs
*
regs
)
s
truct
pt_regs
*
regs
,
int
syscall
)
{
{
struct
thread_info
*
thread
=
current_thread_info
();
struct
thread_info
*
thread
=
current_thread_info
();
struct
task_struct
*
tsk
=
current
;
struct
task_struct
*
tsk
=
current
;
struct
k_sigaction
*
ka
=
&
tsk
->
sighand
->
action
[
sig
-
1
];
int
usig
=
sig
;
int
usig
=
sig
;
int
ret
;
int
ret
;
/*
* If we were from a system call, check for system call restarting...
*/
if
(
syscall
)
{
switch
(
regs
->
ARM_r0
)
{
case
-
ERESTART_RESTARTBLOCK
:
current_thread_info
()
->
restart_block
.
fn
=
do_no_restart_syscall
;
case
-
ERESTARTNOHAND
:
regs
->
ARM_r0
=
-
EINTR
;
break
;
case
-
ERESTARTSYS
:
if
(
!
(
ka
->
sa
.
sa_flags
&
SA_RESTART
))
{
regs
->
ARM_r0
=
-
EINTR
;
break
;
}
/* fallthrough */
case
-
ERESTARTNOINTR
:
restart_syscall
(
regs
);
}
}
/*
/*
* translate the signal
* translate the signal
*/
*/
...
@@ -504,7 +537,7 @@ handle_signal(unsigned long sig, struct k_sigaction *ka,
...
@@ -504,7 +537,7 @@ handle_signal(unsigned long sig, struct k_sigaction *ka,
static
int
do_signal
(
sigset_t
*
oldset
,
struct
pt_regs
*
regs
,
int
syscall
)
static
int
do_signal
(
sigset_t
*
oldset
,
struct
pt_regs
*
regs
,
int
syscall
)
{
{
siginfo_t
info
;
siginfo_t
info
;
int
si
ngle_stepping
;
int
si
gnr
;
/*
/*
* We want the common case to go fast, which
* We want the common case to go fast, which
...
@@ -515,130 +548,14 @@ static int do_signal(sigset_t *oldset, struct pt_regs *regs, int syscall)
...
@@ -515,130 +548,14 @@ static int do_signal(sigset_t *oldset, struct pt_regs *regs, int syscall)
if
(
!
user_mode
(
regs
))
if
(
!
user_mode
(
regs
))
return
0
;
return
0
;
single_stepping
=
ptrace_cancel_bpt
(
current
);
if
(
current
->
ptrace
&
PT_SINGLESTEP
)
ptrace_cancel_bpt
(
current
);
for
(;;)
{
unsigned
long
signr
=
0
;
struct
k_sigaction
*
ka
;
spin_lock_irq
(
&
current
->
sighand
->
siglock
);
signr
=
dequeue_signal
(
current
,
&
current
->
blocked
,
&
info
);
spin_unlock_irq
(
&
current
->
sighand
->
siglock
);
if
(
!
signr
)
break
;
if
((
current
->
ptrace
&
PT_PTRACED
)
&&
signr
!=
SIGKILL
)
{
signr
=
get_signal_to_deliver
(
&
info
,
regs
,
NULL
);
/* Let the debugger run. */
if
(
signr
>
0
)
{
current
->
exit_code
=
signr
;
handle_signal
(
signr
,
&
info
,
oldset
,
regs
,
syscall
);
set_current_state
(
TASK_STOPPED
);
if
(
current
->
ptrace
&
PT_SINGLESTEP
)
notify_parent
(
current
,
SIGCHLD
);
ptrace_set_bpt
(
current
);
schedule
();
single_stepping
|=
ptrace_cancel_bpt
(
current
);
/* We're back. Did the debugger cancel the sig? */
signr
=
current
->
exit_code
;
if
(
signr
==
0
)
continue
;
current
->
exit_code
=
0
;
/* The debugger continued. Ignore SIGSTOP. */
if
(
signr
==
SIGSTOP
)
continue
;
/* Update the siginfo structure. Is this good? */
if
(
signr
!=
info
.
si_signo
)
{
info
.
si_signo
=
signr
;
info
.
si_errno
=
0
;
info
.
si_code
=
SI_USER
;
info
.
si_pid
=
current
->
parent
->
pid
;
info
.
si_uid
=
current
->
parent
->
uid
;
}
/* If the (new) signal is now blocked, requeue it. */
if
(
sigismember
(
&
current
->
blocked
,
signr
))
{
send_sig_info
(
signr
,
&
info
,
current
);
continue
;
}
}
ka
=
&
current
->
sig
->
action
[
signr
-
1
];
if
(
ka
->
sa
.
sa_handler
==
SIG_IGN
)
{
if
(
signr
!=
SIGCHLD
)
continue
;
/* Check for SIGCHLD: it's special. */
while
(
sys_wait4
(
-
1
,
NULL
,
WNOHANG
,
NULL
)
>
0
)
/* nothing */
;
continue
;
}
if
(
ka
->
sa
.
sa_handler
==
SIG_DFL
)
{
int
exit_code
=
signr
;
/* Init gets no signals it doesn't want. */
if
(
current
->
pid
==
1
)
continue
;
switch
(
signr
)
{
case
SIGCONT
:
case
SIGCHLD
:
case
SIGWINCH
:
case
SIGURG
:
continue
;
case
SIGTSTP
:
case
SIGTTIN
:
case
SIGTTOU
:
if
(
is_orphaned_pgrp
(
current
->
pgrp
))
continue
;
/* FALLTHRU */
case
SIGSTOP
:
{
struct
signal_struct
*
sig
;
set_current_state
(
TASK_STOPPED
);
current
->
exit_code
=
signr
;
sig
=
current
->
parent
->
sig
;
if
(
sig
&&
!
(
sig
->
action
[
SIGCHLD
-
1
].
sa
.
sa_flags
&
SA_NOCLDSTOP
))
notify_parent
(
current
,
SIGCHLD
);
schedule
();
single_stepping
|=
ptrace_cancel_bpt
(
current
);
continue
;
}
case
SIGQUIT
:
case
SIGILL
:
case
SIGTRAP
:
case
SIGABRT
:
case
SIGFPE
:
case
SIGSEGV
:
case
SIGBUS
:
case
SIGSYS
:
case
SIGXCPU
:
case
SIGXFSZ
:
if
(
do_coredump
(
signr
,
exit_code
,
regs
))
exit_code
|=
0x80
;
/* FALLTHRU */
default:
sig_exit
(
signr
,
exit_code
,
&
info
);
/* NOTREACHED */
}
}
/* Are we from a system call? */
if
(
syscall
)
{
/* If so, check system call restarting.. */
switch
(
regs
->
ARM_r0
)
{
case
-
ERESTART_RESTARTBLOCK
:
current_thread_info
()
->
restart_block
.
fn
=
do_no_restart_syscall
;
case
-
ERESTARTNOHAND
:
regs
->
ARM_r0
=
-
EINTR
;
break
;
case
-
ERESTARTSYS
:
if
(
!
(
ka
->
sa
.
sa_flags
&
SA_RESTART
))
{
regs
->
ARM_r0
=
-
EINTR
;
break
;
}
/* fallthrough */
case
-
ERESTARTNOINTR
:
regs
->
ARM_r0
=
regs
->
ARM_ORIG_r0
;
regs
->
ARM_pc
-=
4
;
}
}
/* Whee! Actually deliver the signal. */
handle_signal
(
signr
,
ka
,
&
info
,
oldset
,
regs
);
if
(
single_stepping
)
ptrace_set_bpt
(
current
);
return
1
;
return
1
;
}
}
...
@@ -668,11 +585,10 @@ static int do_signal(sigset_t *oldset, struct pt_regs *regs, int syscall)
...
@@ -668,11 +585,10 @@ static int do_signal(sigset_t *oldset, struct pt_regs *regs, int syscall)
if
(
regs
->
ARM_r0
==
-
ERESTARTNOHAND
||
if
(
regs
->
ARM_r0
==
-
ERESTARTNOHAND
||
regs
->
ARM_r0
==
-
ERESTARTSYS
||
regs
->
ARM_r0
==
-
ERESTARTSYS
||
regs
->
ARM_r0
==
-
ERESTARTNOINTR
)
{
regs
->
ARM_r0
==
-
ERESTARTNOINTR
)
{
regs
->
ARM_r0
=
regs
->
ARM_ORIG_r0
;
restart_syscall
(
regs
);
regs
->
ARM_pc
-=
4
;
}
}
}
}
if
(
single_stepping
)
if
(
current
->
ptrace
&
PT_SINGLESTEP
)
ptrace_set_bpt
(
current
);
ptrace_set_bpt
(
current
);
return
0
;
return
0
;
}
}
...
...
arch/arm/kernel/traps.c
View file @
c90176df
...
@@ -52,9 +52,14 @@ static const char *handler[]= { "prefetch abort", "data abort", "address excepti
...
@@ -52,9 +52,14 @@ static const char *handler[]= { "prefetch abort", "data abort", "address excepti
void
dump_backtrace_entry
(
unsigned
long
where
,
unsigned
long
from
)
void
dump_backtrace_entry
(
unsigned
long
where
,
unsigned
long
from
)
{
{
#ifdef CONFIG_KALLSYMS
printk
(
"[<%08lx>] "
,
where
);
print_symbol
(
"(%s) "
,
where
);
printk
(
"from [<%08lx>] "
,
from
);
print_symbol
(
"(%s)
\n
"
,
from
);
#else
printk
(
"Function entered at [<%08lx>] from [<%08lx>]
\n
"
,
where
,
from
);
printk
(
"Function entered at [<%08lx>] from [<%08lx>]
\n
"
,
where
,
from
);
print_symbol
(
" %s"
,
where
);
#endif
printk
(
"
\n
"
);
}
}
/*
/*
...
@@ -503,11 +508,11 @@ baddataabort(int code, unsigned long instr, struct pt_regs *regs)
...
@@ -503,11 +508,11 @@ baddataabort(int code, unsigned long instr, struct pt_regs *regs)
die_if_kernel
(
"unknown data abort code"
,
regs
,
instr
);
die_if_kernel
(
"unknown data abort code"
,
regs
,
instr
);
}
}
void
__bug
(
const
char
*
file
,
int
line
,
void
*
data
)
vo
latile
vo
id
__bug
(
const
char
*
file
,
int
line
,
void
*
data
)
{
{
printk
(
KERN_CRIT
"kernel BUG at %s:%d!"
,
file
,
line
);
printk
(
KERN_CRIT
"kernel BUG at %s:%d!"
,
file
,
line
);
if
(
data
)
if
(
data
)
printk
(
KERN_CRIT
" - extra data = %p"
,
data
);
printk
(
" - extra data = %p"
,
data
);
printk
(
"
\n
"
);
printk
(
"
\n
"
);
*
(
int
*
)
0
=
0
;
*
(
int
*
)
0
=
0
;
}
}
...
...
arch/arm/lib/backtrace.S
View file @
c90176df
...
@@ -82,11 +82,20 @@ ENTRY(c_backtrace)
...
@@ -82,11 +82,20 @@ ENTRY(c_backtrace)
teq
r3
,
r2
teq
r3
,
r2
bleq
.
Ldumpstm
bleq
.
Ldumpstm
teq
frame
,
next
/
*
movne
frame
,
next
*
A
zero
next
framepointer
means
we
're done.
teqne
frame
,
#
0
*/
bne
3
b
teq
next
,
#
0
LOADREGS
(
fd
,
sp
!,
{
r4
-
r8
,
pc
})
LOADREGS
(
eqfd
,
sp
!,
{
r4
-
r8
,
pc
})
/
*
*
The
next
framepointer
must
be
above
the
*
current
framepointer
.
*/
cmp
next
,
frame
mov
frame
,
next
bhi
3
b
b
1007
f
/*
/*
*
Fixup
for
LDMDB
*
Fixup
for
LDMDB
...
...
arch/arm/mach-epxa10db/irq.c
View file @
c90176df
...
@@ -19,6 +19,9 @@
...
@@ -19,6 +19,9 @@
*/
*/
#include <linux/init.h>
#include <linux/init.h>
#include <linux/ioport.h>
#include <linux/ioport.h>
#include <linux/stddef.h>
#include <linux/timer.h>
#include <linux/list.h>
#include <asm/io.h>
#include <asm/io.h>
#include <asm/hardware.h>
#include <asm/hardware.h>
#include <asm/irq.h>
#include <asm/irq.h>
...
...
arch/arm/mach-footbridge/irq.c
View file @
c90176df
...
@@ -15,6 +15,7 @@
...
@@ -15,6 +15,7 @@
* 16-Mar-1999 RMK Added autodetect of ISA PICs
* 16-Mar-1999 RMK Added autodetect of ISA PICs
*/
*/
#include <linux/ioport.h>
#include <linux/ioport.h>
#include <linux/list.h>
#include <linux/init.h>
#include <linux/init.h>
#include <asm/mach/irq.h>
#include <asm/mach/irq.h>
...
...
arch/arm/mach-footbridge/isa-irq.c
View file @
c90176df
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
*/
*/
#include <linux/ioport.h>
#include <linux/ioport.h>
#include <linux/interrupt.h>
#include <linux/interrupt.h>
#include <linux/list.h>
#include <linux/init.h>
#include <linux/init.h>
#include <asm/mach/irq.h>
#include <asm/mach/irq.h>
...
...
arch/arm/mach-iop310/iop310-irq.c
View file @
c90176df
...
@@ -15,6 +15,7 @@
...
@@ -15,6 +15,7 @@
*/
*/
#include <linux/init.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/interrupt.h>
#include <linux/list.h>
#include <asm/mach/irq.h>
#include <asm/mach/irq.h>
#include <asm/irq.h>
#include <asm/irq.h>
...
...
arch/arm/mach-iop310/iop310-pci.c
View file @
c90176df
...
@@ -360,6 +360,8 @@ int iop310_setup(int nr, struct pci_sys_data *sys)
...
@@ -360,6 +360,8 @@ int iop310_setup(int nr, struct pci_sys_data *sys)
if
(
!
res
)
if
(
!
res
)
panic
(
"PCI: unable to alloc resources"
);
panic
(
"PCI: unable to alloc resources"
);
memset
(
res
,
0
,
sizeof
(
struct
resource
)
*
2
);
switch
(
nr
)
{
switch
(
nr
)
{
case
0
:
case
0
:
res
[
0
].
start
=
IOP310_PCIPRI_LOWER_IO
+
0x6e000000
;
res
[
0
].
start
=
IOP310_PCIPRI_LOWER_IO
+
0x6e000000
;
...
...
arch/arm/mach-iop310/iq80310-irq.c
View file @
c90176df
...
@@ -15,6 +15,7 @@
...
@@ -15,6 +15,7 @@
* Fixes for various revision boards - DS
* Fixes for various revision boards - DS
*/
*/
#include <linux/init.h>
#include <linux/init.h>
#include <linux/list.h>
#include <asm/irq.h>
#include <asm/irq.h>
#include <asm/mach/irq.h>
#include <asm/mach/irq.h>
...
...
arch/arm/mach-iop310/xs80200-irq.c
View file @
c90176df
...
@@ -11,6 +11,7 @@
...
@@ -11,6 +11,7 @@
* published by the Free Software Foundation.
* published by the Free Software Foundation.
*/
*/
#include <linux/init.h>
#include <linux/init.h>
#include <linux/list.h>
#include <asm/mach/irq.h>
#include <asm/mach/irq.h>
#include <asm/irq.h>
#include <asm/irq.h>
...
...
arch/arm/mach-pxa/irq.c
View file @
c90176df
...
@@ -85,19 +85,6 @@ static int pxa_gpio_irq_type(unsigned int irq, unsigned int type)
...
@@ -85,19 +85,6 @@ static int pxa_gpio_irq_type(unsigned int irq, unsigned int type)
return
0
;
return
0
;
}
}
/*
* Since we can't actually physically mask edge triggered interrupts
* without the risk of missing transitions, we therefore logically mask
* them and defer their processing through tis function.
*/
static
void
pxa_manual_rerun
(
unsigned
int
irq
)
{
struct
pt_regs
regs
;
memset
(
&
regs
,
0
,
sizeof
(
regs
));
irq_desc
[
irq
].
handle
(
irq
,
&
irq_desc
[
irq
],
&
regs
);
}
/*
/*
* GPIO IRQs must be acknoledged. This is for GPIO 0 and 1.
* GPIO IRQs must be acknoledged. This is for GPIO 0 and 1.
*/
*/
...
@@ -111,7 +98,6 @@ static struct irqchip pxa_low_gpio_chip = {
...
@@ -111,7 +98,6 @@ static struct irqchip pxa_low_gpio_chip = {
.
ack
=
pxa_ack_low_gpio
,
.
ack
=
pxa_ack_low_gpio
,
.
mask
=
pxa_mask_irq
,
.
mask
=
pxa_mask_irq
,
.
unmask
=
pxa_unmask_irq
,
.
unmask
=
pxa_unmask_irq
,
.
rerun
=
pxa_manual_rerun
,
.
type
=
pxa_gpio_irq_type
,
.
type
=
pxa_gpio_irq_type
,
};
};
...
...
arch/arm/mach-rpc/irq.c
View file @
c90176df
#include <linux/init.h>
#include <linux/init.h>
#include <linux/list.h>
#include <asm/mach/irq.h>
#include <asm/mach/irq.h>
#include <asm/hardware/iomd.h>
#include <asm/hardware/iomd.h>
...
...
arch/arm/mach-sa1100/irq.c
View file @
c90176df
...
@@ -13,6 +13,7 @@
...
@@ -13,6 +13,7 @@
#include <linux/module.h>
#include <linux/module.h>
#include <linux/ioport.h>
#include <linux/ioport.h>
#include <linux/ptrace.h>
#include <linux/ptrace.h>
#include <linux/device.h>
#include <asm/hardware.h>
#include <asm/hardware.h>
#include <asm/irq.h>
#include <asm/irq.h>
...
@@ -24,20 +25,12 @@
...
@@ -24,20 +25,12 @@
/*
/*
* SA1100 GPIO edge detection for IRQs:
* SA1100 GPIO edge detection for IRQs:
* IRQs are generated on Falling-Edge, Rising-Edge, or both.
* IRQs are generated on Falling-Edge, Rising-Edge, or both.
* This must be called *before* the appropriate IRQ is registered.
* Use this instead of directly setting GRER/GFER.
* Use this instead of directly setting GRER/GFER.
*/
*/
static
int
GPIO_IRQ_rising_edge
;
static
int
GPIO_IRQ_rising_edge
;
static
int
GPIO_IRQ_falling_edge
;
static
int
GPIO_IRQ_falling_edge
;
static
int
GPIO_IRQ_mask
=
(
1
<<
11
)
-
1
;
static
int
GPIO_IRQ_mask
=
(
1
<<
11
)
-
1
;
static
void
sa1100_manual_rerun
(
unsigned
int
irq
)
{
struct
pt_regs
regs
;
memset
(
&
regs
,
0
,
sizeof
(
regs
));
irq_desc
[
irq
].
handle
(
irq
,
&
irq_desc
[
irq
],
&
regs
);
}
/*
/*
* To get the GPIO number from an IRQ number
* To get the GPIO number from an IRQ number
*/
*/
...
@@ -105,7 +98,6 @@ static struct irqchip sa1100_low_gpio_chip = {
...
@@ -105,7 +98,6 @@ static struct irqchip sa1100_low_gpio_chip = {
.
ack
=
sa1100_low_gpio_ack
,
.
ack
=
sa1100_low_gpio_ack
,
.
mask
=
sa1100_low_gpio_mask
,
.
mask
=
sa1100_low_gpio_mask
,
.
unmask
=
sa1100_low_gpio_unmask
,
.
unmask
=
sa1100_low_gpio_unmask
,
.
rerun
=
sa1100_manual_rerun
,
.
type
=
sa1100_gpio_type
,
.
type
=
sa1100_gpio_type
,
.
wake
=
sa1100_low_gpio_wake
,
.
wake
=
sa1100_low_gpio_wake
,
};
};
...
@@ -189,7 +181,6 @@ static struct irqchip sa1100_high_gpio_chip = {
...
@@ -189,7 +181,6 @@ static struct irqchip sa1100_high_gpio_chip = {
.
ack
=
sa1100_high_gpio_ack
,
.
ack
=
sa1100_high_gpio_ack
,
.
mask
=
sa1100_high_gpio_mask
,
.
mask
=
sa1100_high_gpio_mask
,
.
unmask
=
sa1100_high_gpio_unmask
,
.
unmask
=
sa1100_high_gpio_unmask
,
.
rerun
=
sa1100_manual_rerun
,
.
type
=
sa1100_gpio_type
,
.
type
=
sa1100_gpio_type
,
.
wake
=
sa1100_high_gpio_wake
,
.
wake
=
sa1100_high_gpio_wake
,
};
};
...
@@ -212,7 +203,6 @@ static struct irqchip sa1100_normal_chip = {
...
@@ -212,7 +203,6 @@ static struct irqchip sa1100_normal_chip = {
.
ack
=
sa1100_mask_irq
,
.
ack
=
sa1100_mask_irq
,
.
mask
=
sa1100_mask_irq
,
.
mask
=
sa1100_mask_irq
,
.
unmask
=
sa1100_unmask_irq
,
.
unmask
=
sa1100_unmask_irq
,
/* rerun should never be called */
};
};
static
struct
resource
irq_resource
=
{
static
struct
resource
irq_resource
=
{
...
@@ -267,10 +257,4 @@ void __init sa1100_init_irq(void)
...
@@ -267,10 +257,4 @@ void __init sa1100_init_irq(void)
*/
*/
set_irq_chip
(
IRQ_GPIO11_27
,
&
sa1100_normal_chip
);
set_irq_chip
(
IRQ_GPIO11_27
,
&
sa1100_normal_chip
);
set_irq_chained_handler
(
IRQ_GPIO11_27
,
sa1100_high_gpio_handler
);
set_irq_chained_handler
(
IRQ_GPIO11_27
,
sa1100_high_gpio_handler
);
/*
* We generally don't want the LCD IRQ being
* enabled as soon as we request it.
*/
set_irq_flags
(
IRQ_LCD
,
IRQF_VALID
/* | IRQF_NOAUTOEN*/
);
}
}
arch/arm/mach-sa1100/xp860.c
View file @
c90176df
...
@@ -15,9 +15,9 @@
...
@@ -15,9 +15,9 @@
#include <asm/mach/arch.h>
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/mach/map.h>
#include <asm/mach/serial_sa1100.h>
#include <asm/mach/serial_sa1100.h>
#include <asm/hardware/sa1111.h>
#include "generic.h"
#include "generic.h"
#include "sa1111.h"
static
void
xp860_power_off
(
void
)
static
void
xp860_power_off
(
void
)
...
...
arch/arm/mm/consistent.c
View file @
c90176df
...
@@ -83,7 +83,7 @@ static void vm_region_dump(struct vm_region *head, char *fn)
...
@@ -83,7 +83,7 @@ static void vm_region_dump(struct vm_region *head, char *fn)
struct vm_region *c;
struct vm_region *c;
printk("Consistent Allocation Map (%s):\n", fn);
printk("Consistent Allocation Map (%s):\n", fn);
list_for_each_entry(c, &head->list, vm_list) {
list_for_each_entry(c, &head->
vm_
list, vm_list) {
printk(" %p: %08lx - %08lx (0x%08x)\n", c,
printk(" %p: %08lx - %08lx (0x%08x)\n", c,
c->vm_start, c->vm_end, c->vm_end - c->vm_start);
c->vm_start, c->vm_end, c->vm_end - c->vm_start);
}
}
...
...
arch/arm/mm/proc-xscale.S
View file @
c90176df
...
@@ -678,7 +678,7 @@ __xscale_setup:
...
@@ -678,7 +678,7 @@ __xscale_setup:
mcr
p15
,
0
,
r0
,
c15
,
c1
,
0
@
affects
USR
or
SVC
modes
mcr
p15
,
0
,
r0
,
c15
,
c1
,
0
@
affects
USR
or
SVC
modes
mrc
p15
,
0
,
r0
,
c1
,
c0
,
0
@
get
control
register
mrc
p15
,
0
,
r0
,
c1
,
c0
,
0
@
get
control
register
bic
r0
,
r0
,
#
0x0200
@
....
..
R
.
....
....
bic
r0
,
r0
,
#
0x0200
@
....
..
R
.
....
....
bic
r0
,
r0
,
#
0x00
82
@
....
....
B
...
..
A
.
bic
r0
,
r0
,
#
0x00
02
@
....
....
.
...
..
A
.
orr
r0
,
r0
,
#
0x0005
@
....
....
....
.
C
.
M
orr
r0
,
r0
,
#
0x0005
@
....
....
....
.
C
.
M
orr
r0
,
r0
,
#
0x3900
@
..
VI
Z
..
S
....
....
orr
r0
,
r0
,
#
0x3900
@
..
VI
Z
..
S
....
....
mov
pc
,
lr
mov
pc
,
lr
...
...
arch/arm/vmlinux-armv.lds.in
View file @
c90176df
...
@@ -7,7 +7,11 @@
...
@@ -7,7 +7,11 @@
OUTPUT_ARCH(arm)
OUTPUT_ARCH(arm)
ENTRY(stext)
ENTRY(stext)
#ifndef __ARMEB__
jiffies = jiffies_64;
jiffies = jiffies_64;
#else
jiffies = jiffies_64 + 4;
#endif
SECTIONS
SECTIONS
{
{
. = TEXTADDR;
. = TEXTADDR;
...
...
drivers/acorn/scsi/acornscsi.c
View file @
c90176df
This diff is collapsed.
Click to expand it.
drivers/acorn/scsi/fas216.c
View file @
c90176df
This diff is collapsed.
Click to expand it.
drivers/acorn/scsi/queue.c
View file @
c90176df
...
@@ -170,7 +170,7 @@ Scsi_Cmnd *queue_remove_exclude(Queue_t *queue, unsigned long *exclude)
...
@@ -170,7 +170,7 @@ Scsi_Cmnd *queue_remove_exclude(Queue_t *queue, unsigned long *exclude)
spin_lock_irqsave
(
&
queue
->
queue_lock
,
flags
);
spin_lock_irqsave
(
&
queue
->
queue_lock
,
flags
);
list_for_each
(
l
,
&
queue
->
head
)
{
list_for_each
(
l
,
&
queue
->
head
)
{
QE_t
*
q
=
list_entry
(
l
,
QE_t
,
list
);
QE_t
*
q
=
list_entry
(
l
,
QE_t
,
list
);
if
(
!
test_bit
(
q
->
SCpnt
->
target
*
8
+
q
->
SCpnt
->
lun
,
exclude
))
{
if
(
!
test_bit
(
q
->
SCpnt
->
device
->
id
*
8
+
q
->
SCpnt
->
device
->
lun
,
exclude
))
{
SCpnt
=
__queue_remove
(
queue
,
l
);
SCpnt
=
__queue_remove
(
queue
,
l
);
break
;
break
;
}
}
...
@@ -217,7 +217,7 @@ Scsi_Cmnd *queue_remove_tgtluntag (Queue_t *queue, int target, int lun, int tag)
...
@@ -217,7 +217,7 @@ Scsi_Cmnd *queue_remove_tgtluntag (Queue_t *queue, int target, int lun, int tag)
spin_lock_irqsave
(
&
queue
->
queue_lock
,
flags
);
spin_lock_irqsave
(
&
queue
->
queue_lock
,
flags
);
list_for_each
(
l
,
&
queue
->
head
)
{
list_for_each
(
l
,
&
queue
->
head
)
{
QE_t
*
q
=
list_entry
(
l
,
QE_t
,
list
);
QE_t
*
q
=
list_entry
(
l
,
QE_t
,
list
);
if
(
q
->
SCpnt
->
target
==
target
&&
q
->
SCpnt
->
lun
==
lun
&&
if
(
q
->
SCpnt
->
device
->
id
==
target
&&
q
->
SCpnt
->
device
->
lun
==
lun
&&
q
->
SCpnt
->
tag
==
tag
)
{
q
->
SCpnt
->
tag
==
tag
)
{
SCpnt
=
__queue_remove
(
queue
,
l
);
SCpnt
=
__queue_remove
(
queue
,
l
);
break
;
break
;
...
@@ -243,7 +243,7 @@ void queue_remove_all_target(Queue_t *queue, int target)
...
@@ -243,7 +243,7 @@ void queue_remove_all_target(Queue_t *queue, int target)
spin_lock_irqsave
(
&
queue
->
queue_lock
,
flags
);
spin_lock_irqsave
(
&
queue
->
queue_lock
,
flags
);
list_for_each
(
l
,
&
queue
->
head
)
{
list_for_each
(
l
,
&
queue
->
head
)
{
QE_t
*
q
=
list_entry
(
l
,
QE_t
,
list
);
QE_t
*
q
=
list_entry
(
l
,
QE_t
,
list
);
if
(
q
->
SCpnt
->
target
==
target
)
if
(
q
->
SCpnt
->
device
->
id
==
target
)
__queue_remove
(
queue
,
l
);
__queue_remove
(
queue
,
l
);
}
}
spin_unlock_irqrestore
(
&
queue
->
queue_lock
,
flags
);
spin_unlock_irqrestore
(
&
queue
->
queue_lock
,
flags
);
...
@@ -267,7 +267,7 @@ int queue_probetgtlun (Queue_t *queue, int target, int lun)
...
@@ -267,7 +267,7 @@ int queue_probetgtlun (Queue_t *queue, int target, int lun)
spin_lock_irqsave
(
&
queue
->
queue_lock
,
flags
);
spin_lock_irqsave
(
&
queue
->
queue_lock
,
flags
);
list_for_each
(
l
,
&
queue
->
head
)
{
list_for_each
(
l
,
&
queue
->
head
)
{
QE_t
*
q
=
list_entry
(
l
,
QE_t
,
list
);
QE_t
*
q
=
list_entry
(
l
,
QE_t
,
list
);
if
(
q
->
SCpnt
->
target
==
target
&&
q
->
SCpnt
->
lun
==
lun
)
{
if
(
q
->
SCpnt
->
device
->
id
==
target
&&
q
->
SCpnt
->
device
->
lun
==
lun
)
{
found
=
1
;
found
=
1
;
break
;
break
;
}
}
...
...
drivers/acorn/scsi/scsi.h
View file @
c90176df
...
@@ -92,8 +92,8 @@ static inline void init_SCp(Scsi_Cmnd *SCpnt)
...
@@ -92,8 +92,8 @@ static inline void init_SCp(Scsi_Cmnd *SCpnt)
if
(
SCpnt
->
request_bufflen
!=
len
)
if
(
SCpnt
->
request_bufflen
!=
len
)
printk
(
KERN_WARNING
"scsi%d.%c: bad request buffer "
printk
(
KERN_WARNING
"scsi%d.%c: bad request buffer "
"length %d, should be %ld
\n
"
,
SCpnt
->
host
->
host_no
,
"length %d, should be %ld
\n
"
,
SCpnt
->
device
->
host
->
host_no
,
'0'
+
SCpnt
->
target
,
SCpnt
->
request_bufflen
,
len
);
'0'
+
SCpnt
->
device
->
id
,
SCpnt
->
request_bufflen
,
len
);
SCpnt
->
request_bufflen
=
len
;
SCpnt
->
request_bufflen
=
len
;
#endif
#endif
}
else
{
}
else
{
...
...
drivers/char/watchdog/wdt285.c
View file @
c90176df
...
@@ -37,18 +37,14 @@
...
@@ -37,18 +37,14 @@
*/
*/
#undef ONLY_TESTING
#undef ONLY_TESTING
#define TIMER_MARGIN 60
/* (secs) Default is 1 minute */
static
unsigned
int
soft_margin
=
60
;
/* in seconds */
static
unsigned
int
reload
;
#define FCLK (50*1000*1000)
/* 50MHz */
static
unsigned
long
timer_alive
;
static
int
soft_margin
=
TIMER_MARGIN
;
/* in seconds */
static
int
timer_alive
;
#ifdef ONLY_TESTING
#ifdef ONLY_TESTING
/*
/*
* If the timer expires..
* If the timer expires..
*/
*/
static
void
watchdog_fire
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
static
void
watchdog_fire
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
{
{
printk
(
KERN_CRIT
"Watchdog: Would Reboot.
\n
"
);
printk
(
KERN_CRIT
"Watchdog: Would Reboot.
\n
"
);
...
@@ -57,109 +53,134 @@ static void watchdog_fire(int irq, void *dev_id, struct pt_regs *regs)
...
@@ -57,109 +53,134 @@ static void watchdog_fire(int irq, void *dev_id, struct pt_regs *regs)
}
}
#endif
#endif
/*
* Refresh the timer.
*/
static
void
watchdog_ping
(
void
)
static
void
watchdog_ping
(
void
)
{
{
/*
*
CSR_TIMER4_LOAD
=
reload
;
* Refresh the timer.
*/
*
CSR_TIMER4_LOAD
=
soft_margin
*
(
FCLK
/
256
);
}
}
/*
/*
* Allow only one person to hold it open
* Allow only one person to hold it open
*/
*/
static
int
watchdog_open
(
struct
inode
*
inode
,
struct
file
*
file
)
static
int
watchdog_open
(
struct
inode
*
inode
,
struct
file
*
file
)
{
{
if
(
timer_alive
)
int
ret
;
if
(
*
CSR_SA110_CNTL
&
(
1
<<
13
))
return
-
EBUSY
;
return
-
EBUSY
;
/*
* Ahead watchdog factor ten, Mr Sulu
if
(
test_and_set_bit
(
1
,
&
timer_alive
))
*/
return
-
EBUSY
;
reload
=
soft_margin
*
(
mem_fclk_21285
/
256
);
*
CSR_TIMER4_CLR
=
0
;
*
CSR_TIMER4_CLR
=
0
;
watchdog_ping
();
watchdog_ping
();
*
CSR_TIMER4_CNTL
=
TIMER_CNTL_ENABLE
|
TIMER_CNTL_AUTORELOAD
*
CSR_TIMER4_CNTL
=
TIMER_CNTL_ENABLE
|
TIMER_CNTL_AUTORELOAD
|
TIMER_CNTL_DIV256
;
|
TIMER_CNTL_DIV256
;
#ifdef ONLY_TESTING
#ifdef ONLY_TESTING
request_irq
(
IRQ_TIMER4
,
watchdog_fire
,
0
,
"watchdog"
,
NULL
);
ret
=
request_irq
(
IRQ_TIMER4
,
watchdog_fire
,
0
,
"watchdog"
,
NULL
);
if
(
ret
)
{
*
CSR_TIMER4_CNTL
=
0
;
clear_bit
(
1
,
&
timer_alive
);
}
#else
#else
/*
* Setting this bit is irreversible; once enabled, there is
* no way to disable the watchdog.
*/
*
CSR_SA110_CNTL
|=
1
<<
13
;
*
CSR_SA110_CNTL
|=
1
<<
13
;
MOD_INC_USE_COUNT
;
ret
=
0
;
#endif
#endif
timer_alive
=
1
;
return
ret
;
return
0
;
}
}
/*
* Shut off the timer.
* Note: if we really have enabled the watchdog, there
* is no way to turn off.
*/
static
int
watchdog_release
(
struct
inode
*
inode
,
struct
file
*
file
)
static
int
watchdog_release
(
struct
inode
*
inode
,
struct
file
*
file
)
{
{
#ifdef ONLY_TESTING
#ifdef ONLY_TESTING
free_irq
(
IRQ_TIMER4
,
NULL
);
free_irq
(
IRQ_TIMER4
,
NULL
);
timer_alive
=
0
;
clear_bit
(
1
,
&
timer_alive
);
#else
/*
* It's irreversible!
*/
#endif
#endif
return
0
;
return
0
;
}
}
static
ssize_t
watchdog_write
(
struct
file
*
file
,
const
char
*
data
,
size_t
len
,
loff_t
*
ppos
)
static
ssize_t
watchdog_write
(
struct
file
*
file
,
const
char
*
data
,
size_t
len
,
loff_t
*
ppos
)
{
{
/*
Can't seek (pwrite) on this device */
/* Can't seek (pwrite) on this device */
if
(
ppos
!=
&
file
->
f_pos
)
if
(
ppos
!=
&
file
->
f_pos
)
return
-
ESPIPE
;
return
-
ESPIPE
;
/*
/*
* Refresh the timer.
* Refresh the timer.
*/
*/
if
(
len
)
if
(
len
)
{
watchdog_ping
();
watchdog_ping
();
return
1
;
}
return
len
;
return
0
;
}
}
static
int
watchdog_ioctl
(
struct
inode
*
inode
,
struct
file
*
file
,
static
struct
watchdog_info
ident
=
{
unsigned
int
cmd
,
unsigned
long
arg
)
.
options
=
WDIOF_SETTIMEOUT
,
.
identity
=
"Footbridge Watchdog"
};
static
int
watchdog_ioctl
(
struct
inode
*
inode
,
struct
file
*
file
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
{
int
i
,
new_margin
;
unsigned
int
new_margin
;
static
struct
watchdog_info
ident
=
int
ret
=
-
ENOIOCTLCMD
;
{
WDIOF_SETTIMEOUT
,
switch
(
cmd
)
{
0
,
case
WDIOC_GETSUPPORT
:
"Footbridge Watchdog"
ret
=
0
;
};
if
(
copy_to_user
((
void
*
)
arg
,
&
ident
,
sizeof
(
ident
)))
switch
(
cmd
)
ret
=
-
EFAULT
;
{
break
;
default:
return
-
ENOTTY
;
case
WDIOC_GETSTATUS
:
case
WDIOC_GETSUPPORT
:
case
WDIOC_GETBOOTSTATUS
:
if
(
copy_to_user
((
struct
watchdog_info
*
)
arg
,
&
ident
,
sizeof
(
ident
)))
ret
=
put_user
(
0
,(
int
*
)
arg
);
return
-
EFAULT
;
break
;
return
0
;
case
WDIOC_GETSTATUS
:
case
WDIOC_KEEPALIVE
:
case
WDIOC_GETBOOTSTATUS
:
watchdog_ping
();
return
put_user
(
0
,(
int
*
)
arg
);
ret
=
0
;
case
WDIOC_KEEPALIVE
:
break
;
watchdog_ping
();
return
0
;
case
WDIOC_SETTIMEOUT
:
case
WDIOC_SETTIMEOUT
:
ret
=
get_user
(
new_margin
,
(
int
*
)
arg
);
if
(
get_user
(
new_margin
,
(
int
*
)
arg
))
if
(
ret
)
return
-
EFAULT
;
break
;
/* Arbitrary, can't find the card's limits */
if
((
new_marg
<
0
)
||
(
new_margin
>
60
))
/* Arbitrary, can't find the card's limits */
return
-
EINVAL
;
if
(
new_margin
<
0
||
new_margin
>
60
)
{
soft_margin
=
new_margin
;
ret
=
-
EINVAL
;
watchdog_ping
();
break
;
/* Fall */
}
case
WDIOC_GETTIMEOUT
:
return
put_user
(
soft_margin
,
(
int
*
)
arg
);
soft_margin
=
new_margin
;
reload
=
soft_margin
*
(
mem_fclk_21285
/
256
);
watchdog_ping
();
/* Fall */
case
WDIOC_GETTIMEOUT
:
ret
=
put_user
(
soft_margin
,
(
int
*
)
arg
);
break
;
}
}
return
ret
;
}
}
static
struct
file_operations
watchdog_fops
=
static
struct
file_operations
watchdog_fops
=
{
{
.
owner
=
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
.
write
=
watchdog_write
,
.
write
=
watchdog_write
,
.
ioctl
=
watchdog_ioctl
,
.
ioctl
=
watchdog_ioctl
,
...
@@ -167,11 +188,10 @@ static struct file_operations watchdog_fops=
...
@@ -167,11 +188,10 @@ static struct file_operations watchdog_fops=
.
release
=
watchdog_release
,
.
release
=
watchdog_release
,
};
};
static
struct
miscdevice
watchdog_miscdev
=
static
struct
miscdevice
watchdog_miscdev
=
{
{
.
minor
=
WATCHDOG_MINOR
,
WATCHDOG_MINOR
,
.
name
=
"watchdog"
,
"watchdog"
,
.
fops
=
&
watchdog_fops
&
watchdog_fops
};
};
static
int
__init
footbridge_watchdog_init
(
void
)
static
int
__init
footbridge_watchdog_init
(
void
)
...
@@ -182,11 +202,12 @@ static int __init footbridge_watchdog_init(void)
...
@@ -182,11 +202,12 @@ static int __init footbridge_watchdog_init(void)
return
-
ENODEV
;
return
-
ENODEV
;
retval
=
misc_register
(
&
watchdog_miscdev
);
retval
=
misc_register
(
&
watchdog_miscdev
);
if
(
retval
<
0
)
if
(
retval
<
0
)
return
retval
;
return
retval
;
printk
(
"Footbridge Watchdog Timer: 0.01, timer margin: %d sec
\n
"
,
printk
(
"Footbridge Watchdog Timer: 0.01, timer margin: %d sec
\n
"
,
soft_margin
);
soft_margin
);
if
(
machine_is_cats
())
if
(
machine_is_cats
())
printk
(
"Warning: Watchdog reset may not work on this machine.
\n
"
);
printk
(
"Warning: Watchdog reset may not work on this machine.
\n
"
);
return
0
;
return
0
;
...
@@ -198,7 +219,7 @@ static void __exit footbridge_watchdog_exit(void)
...
@@ -198,7 +219,7 @@ static void __exit footbridge_watchdog_exit(void)
}
}
MODULE_AUTHOR
(
"Phil Blundell <pb@nexus.co.uk>"
);
MODULE_AUTHOR
(
"Phil Blundell <pb@nexus.co.uk>"
);
MODULE_DESCRIPTION
(
"
21285
watchdog driver"
);
MODULE_DESCRIPTION
(
"
Footbridge
watchdog driver"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_PARM
(
soft_margin
,
"i"
);
MODULE_PARM
(
soft_margin
,
"i"
);
...
...
drivers/char/watchdog/wdt977.c
View file @
c90176df
...
@@ -58,7 +58,7 @@ MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=CON
...
@@ -58,7 +58,7 @@ MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=CON
/* This is kicking the watchdog by simply re-writing the timeout to reg. 0xF2 */
/* This is kicking the watchdog by simply re-writing the timeout to reg. 0xF2 */
int
kick_wdog
(
void
)
static
int
kick_wdog
(
void
)
{
{
/*
/*
* Refresh the timer.
* Refresh the timer.
...
@@ -216,21 +216,20 @@ static int wdt977_release(struct inode *inode, struct file *file)
...
@@ -216,21 +216,20 @@ static int wdt977_release(struct inode *inode, struct file *file)
static
ssize_t
wdt977_write
(
struct
file
*
file
,
const
char
*
buf
,
size_t
count
,
loff_t
*
ppos
)
static
ssize_t
wdt977_write
(
struct
file
*
file
,
const
char
*
buf
,
size_t
count
,
loff_t
*
ppos
)
{
{
/*
Can't seek (pwrite) on this device */
/* Can't seek (pwrite) on this device */
if
(
ppos
!=
&
file
->
f_pos
)
if
(
ppos
!=
&
file
->
f_pos
)
return
-
ESPIPE
;
return
-
ESPIPE
;
if
(
count
)
if
(
count
)
{
{
if
(
!
nowayout
)
{
if
(
!
nowayout
)
{
size_t
i
;
size_t
i
;
/* In case it was set long ago */
/* In case it was set long ago */
expect_close
=
0
;
expect_close
=
0
;
for
(
i
=
0
;
i
!=
len
;
i
++
)
{
for
(
i
=
0
;
i
!=
count
;
i
++
)
{
char
c
;
char
c
;
if
(
get_user
(
c
,
data
+
i
))
if
(
get_user
(
c
,
buf
+
i
))
return
-
EFAULT
;
return
-
EFAULT
;
if
(
c
==
'V'
)
if
(
c
==
'V'
)
expect_close
=
1
;
expect_close
=
1
;
...
@@ -238,9 +237,8 @@ static ssize_t wdt977_write(struct file *file, const char *buf, size_t count, lo
...
@@ -238,9 +237,8 @@ static ssize_t wdt977_write(struct file *file, const char *buf, size_t count, lo
}
}
kick_wdog
();
kick_wdog
();
return
1
;
}
}
return
0
;
return
count
;
}
}
/*
/*
...
@@ -254,14 +252,15 @@ static ssize_t wdt977_write(struct file *file, const char *buf, size_t count, lo
...
@@ -254,14 +252,15 @@ static ssize_t wdt977_write(struct file *file, const char *buf, size_t count, lo
* according to their available features.
* according to their available features.
*/
*/
static
int
wdt977_ioctl
(
struct
inode
*
inode
,
struct
file
*
file
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
static
struct
watchdog_info
ident
=
{
static
struct
watchdog_info
ident
=
{
.
identity
=
"Winbond 83977"
.
options
=
WDIOF_SETTIMEOUT
,
.
identity
=
"Winbond 83977"
};
};
int
temp
;
static
int
wdt977_ioctl
(
struct
inode
*
inode
,
struct
file
*
file
,
unsigned
int
cmd
,
unsigned
long
arg
)
{
int
temp
;
switch
(
cmd
)
switch
(
cmd
)
{
{
...
@@ -337,9 +336,9 @@ static struct file_operations wdt977_fops=
...
@@ -337,9 +336,9 @@ static struct file_operations wdt977_fops=
static
struct
miscdevice
wdt977_miscdev
=
static
struct
miscdevice
wdt977_miscdev
=
{
{
WATCHDOG_MINOR
,
.
minor
=
WATCHDOG_MINOR
,
"watchdog"
,
.
name
=
"watchdog"
,
&
wdt977_fops
.
fops
=
&
wdt977_fops
};
};
static
int
__init
nwwatchdog_init
(
void
)
static
int
__init
nwwatchdog_init
(
void
)
...
@@ -360,4 +359,5 @@ static void __exit nwwatchdog_exit(void)
...
@@ -360,4 +359,5 @@ static void __exit nwwatchdog_exit(void)
module_init
(
nwwatchdog_init
);
module_init
(
nwwatchdog_init
);
module_exit
(
nwwatchdog_exit
);
module_exit
(
nwwatchdog_exit
);
MODULE_DESCRIPTION
(
"W83977AF Watchdog driver"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_LICENSE
(
"GPL"
);
drivers/input/serio/sa1111ps2.c
View file @
c90176df
...
@@ -9,6 +9,7 @@
...
@@ -9,6 +9,7 @@
*/
*/
#include <linux/module.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/input.h>
#include <linux/serio.h>
#include <linux/serio.h>
#include <linux/errno.h>
#include <linux/errno.h>
#include <linux/interrupt.h>
#include <linux/interrupt.h>
...
@@ -339,6 +340,7 @@ static struct sa1111_driver ps2_driver = {
...
@@ -339,6 +340,7 @@ static struct sa1111_driver ps2_driver = {
.
drv
=
{
.
drv
=
{
.
name
=
"sa1111-ps2"
,
.
name
=
"sa1111-ps2"
,
.
bus
=
&
sa1111_bus_type
,
.
bus
=
&
sa1111_bus_type
,
.
devclass
=
&
input_devclass
,
.
probe
=
ps2_probe
,
.
probe
=
ps2_probe
,
.
remove
=
ps2_remove
,
.
remove
=
ps2_remove
,
.
suspend
=
ps2_suspend
,
.
suspend
=
ps2_suspend
,
...
...
drivers/mtd/maps/sa1100-flash.c
View file @
c90176df
...
@@ -773,14 +773,15 @@ static struct mtd_partition stork_partitions[] = {
...
@@ -773,14 +773,15 @@ static struct mtd_partition stork_partitions[] = {
#ifdef CONFIG_SA1100_TRIZEPS
#ifdef CONFIG_SA1100_TRIZEPS
static
struct
mtd_partition
trizeps_partitions
[]
=
{
static
struct
mtd_partition
trizeps_partitions
[]
=
{
{
{
.
name
=
"Bootloader
& the kernel
"
,
.
name
=
"Bootloader"
,
.
size
=
0x00
2
00000
,
.
size
=
0x00
1
00000
,
.
offset
=
0
,
.
offset
=
0
,
},
{
},
{
.
name
=
"
Data
"
,
.
name
=
"
Kernel
"
,
.
size
=
0x00
4
00000
,
.
size
=
0x00
1
00000
,
.
offset
=
MTDPART_OFS_APPEND
,
.
offset
=
MTDPART_OFS_APPEND
,
},
{
},
{
.
name
=
"root"
,
.
size
=
MTDPART_SIZ_FULL
,
.
size
=
MTDPART_SIZ_FULL
,
.
offset
=
MTDPART_OFS_APPEND
,
.
offset
=
MTDPART_OFS_APPEND
,
}
}
...
@@ -937,7 +938,7 @@ static int __init sa1100_static_partitions(struct mtd_partition **parts)
...
@@ -937,7 +938,7 @@ static int __init sa1100_static_partitions(struct mtd_partition **parts)
#ifdef CONFIG_SA1100_TRIZEPS
#ifdef CONFIG_SA1100_TRIZEPS
if
(
machine_is_trizeps
())
{
if
(
machine_is_trizeps
())
{
*
parts
=
trizeps_partitions
;
*
parts
=
trizeps_partitions
;
nb_parts
=
ARRAY_SIZE
(
trizeps_par
itit
ons
);
nb_parts
=
ARRAY_SIZE
(
trizeps_par
titi
ons
);
}
}
#endif
#endif
#ifdef CONFIG_SA1100_YOPY
#ifdef CONFIG_SA1100_YOPY
...
...
include/asm-arm/arch-iop310/serial.h
View file @
c90176df
...
@@ -24,8 +24,8 @@
...
@@ -24,8 +24,8 @@
#define STD_SERIAL_PORT_DEFNS \
#define STD_SERIAL_PORT_DEFNS \
/* UART CLK PORT IRQ FLAGS */
\
/* UART CLK PORT IRQ FLAGS */
\
{ 0, BASE_BAUD,
0xfe810000
, IRQ_UART2, STD_COM_FLAGS },
/* ttyS0 */
\
{ 0, BASE_BAUD,
IQ80310_UART2
, IRQ_UART2, STD_COM_FLAGS },
/* ttyS0 */
\
{ 0, BASE_BAUD,
0xfe800000
, IRQ_UART1, STD_COM_FLAGS }
/* ttyS1 */
{ 0, BASE_BAUD,
IQ80310_UART1
, IRQ_UART1, STD_COM_FLAGS }
/* ttyS1 */
#endif // CONFIG_ARCH_IQ80310
#endif // CONFIG_ARCH_IQ80310
...
...
include/asm-arm/mach/irq.h
View file @
c90176df
...
@@ -33,9 +33,12 @@ struct irqchip {
...
@@ -33,9 +33,12 @@ struct irqchip {
*/
*/
void
(
*
unmask
)(
unsigned
int
);
void
(
*
unmask
)(
unsigned
int
);
/*
/*
* Re-run the IRQ
* Ask the hardware to re-trigger the IRQ.
* Note: This method _must_ _not_ call the interrupt handler.
* If you are unable to retrigger the interrupt, do not
* provide a function, or if you do, return non-zero.
*/
*/
void
(
*
rerun
)(
unsigned
int
);
int
(
*
retrigger
)(
unsigned
int
);
/*
/*
* Set the type of the IRQ.
* Set the type of the IRQ.
*/
*/
...
@@ -50,6 +53,7 @@ struct irqdesc {
...
@@ -50,6 +53,7 @@ struct irqdesc {
irq_handler_t
handle
;
irq_handler_t
handle
;
struct
irqchip
*
chip
;
struct
irqchip
*
chip
;
struct
irqaction
*
action
;
struct
irqaction
*
action
;
struct
list_head
pend
;
unsigned
int
disable_depth
;
unsigned
int
disable_depth
;
unsigned
int
triggered
:
1
;
/* IRQ has occurred */
unsigned
int
triggered
:
1
;
/* IRQ has occurred */
...
...
include/asm-arm/proc-armv/processor.h
View file @
c90176df
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
#define KERNEL_STACK_SIZE PAGE_SIZE
#define KERNEL_STACK_SIZE PAGE_SIZE
#define INIT_EXTRA_THREAD_INFO \
#define INIT_EXTRA_THREAD_INFO \
.cpu_domain = domain_val(DOMAIN_USER, DOMAIN_
CLIENT
) | \
.cpu_domain = domain_val(DOMAIN_USER, DOMAIN_
MANAGER
) | \
domain_val(DOMAIN_KERNEL, DOMAIN_MANAGER) | \
domain_val(DOMAIN_KERNEL, DOMAIN_MANAGER) | \
domain_val(DOMAIN_IO, DOMAIN_CLIENT)
domain_val(DOMAIN_IO, DOMAIN_CLIENT)
...
...
include/asm-arm/proc-armv/system.h
View file @
c90176df
...
@@ -14,9 +14,14 @@
...
@@ -14,9 +14,14 @@
#define set_cr(x) \
#define set_cr(x) \
__asm__ __volatile__( \
__asm__ __volatile__( \
"mcr p15, 0, %0, c1, c0 @ set CR" \
"mcr p15, 0, %0, c1, c0
, 0
@ set CR" \
: : "r" (x))
: : "r" (x))
#define get_cr(x) \
__asm__ __volatile__( \
"mrc p15, 0, %0, c1, c0, 0 @ get CR" \
: "=r" (x))
#define CR_M (1 << 0)
/* MMU enable */
#define CR_M (1 << 0)
/* MMU enable */
#define CR_A (1 << 1)
/* Alignment abort enable */
#define CR_A (1 << 1)
/* Alignment abort enable */
#define CR_C (1 << 2)
/* Dcache enable */
#define CR_C (1 << 2)
/* Dcache enable */
...
@@ -24,9 +29,9 @@
...
@@ -24,9 +29,9 @@
#define CR_P (1 << 4)
/* 32-bit exception handler */
#define CR_P (1 << 4)
/* 32-bit exception handler */
#define CR_D (1 << 5)
/* 32-bit data address range */
#define CR_D (1 << 5)
/* 32-bit data address range */
#define CR_L (1 << 6)
/* Implementation defined */
#define CR_L (1 << 6)
/* Implementation defined */
#define C
D
_B (1 << 7)
/* Big endian */
#define C
R
_B (1 << 7)
/* Big endian */
#define CR_S (1 << 8)
/* System MMU protection */
#define CR_S (1 << 8)
/* System MMU protection */
#define C
D
_R (1 << 9)
/* ROM MMU protection */
#define C
R
_R (1 << 9)
/* ROM MMU protection */
#define CR_F (1 << 10)
/* Implementation defined */
#define CR_F (1 << 10)
/* Implementation defined */
#define CR_Z (1 << 11)
/* Implementation defined */
#define CR_Z (1 << 11)
/* Implementation defined */
#define CR_I (1 << 12)
/* Icache enable */
#define CR_I (1 << 12)
/* Icache enable */
...
...
include/asm-arm/signal.h
View file @
c90176df
...
@@ -184,9 +184,7 @@ typedef struct sigaltstack {
...
@@ -184,9 +184,7 @@ typedef struct sigaltstack {
#ifdef __KERNEL__
#ifdef __KERNEL__
#include <asm/sigcontext.h>
#include <asm/sigcontext.h>
#define ptrace_signal_deliver(regs, cookie) do { } while (0)
#define HAVE_ARCH_GET_SIGNAL_TO_DELIVER
#endif
#endif
#endif
#endif
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