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
62351cc3
Commit
62351cc3
authored
Jun 30, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/home/rmk/linux-2.6-arm
parents
d471cd47
747aead3
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
53 additions
and
72 deletions
+53
-72
arch/arm/Makefile
arch/arm/Makefile
+1
-1
arch/arm/kernel/traps.c
arch/arm/kernel/traps.c
+2
-10
arch/arm/mm/fault.c
arch/arm/mm/fault.c
+40
-35
arch/arm/mm/proc-arm1020.S
arch/arm/mm/proc-arm1020.S
+2
-2
arch/arm/mm/proc-arm1020e.S
arch/arm/mm/proc-arm1020e.S
+2
-2
drivers/mtd/afs.c
drivers/mtd/afs.c
+2
-14
drivers/video/console/fbcon.c
drivers/video/console/fbcon.c
+1
-7
include/asm-arm/system.h
include/asm-arm/system.h
+3
-1
No files found.
arch/arm/Makefile
View file @
62351cc3
...
...
@@ -56,7 +56,7 @@ tune-$(CONFIG_CPU_XSCALE) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110)
tune-$(CONFIG_CPU_V6)
:=
-mtune
=
strongarm
# Need -Uarm for gcc < 3.x
CFLAGS_ABI
:=
$(
call
cc-option,-mapcs-32,-mabi
=
apcs-gnu
)
CFLAGS_ABI
:=
$(
call
cc-option,-mapcs-32,-mabi
=
apcs-gnu
)
$(
call
cc-option,-mno-thumb-interwork,
)
CFLAGS
+=
$(CFLAGS_ABI)
$
(
arch-y
)
$
(
tune-y
)
$(
call
cc-option,-mshort-load-bytes,
$(
call
cc-option,-malignment-traps,
))
-msoft-float
-Uarm
AFLAGS
+=
$(CFLAGS_ABI)
$
(
arch-y
)
$
(
tune-y
)
-msoft-float
...
...
arch/arm/kernel/traps.c
View file @
62351cc3
...
...
@@ -230,16 +230,8 @@ NORET_TYPE void die(const char *str, struct pt_regs *regs, int err)
do_exit
(
SIGSEGV
);
}
void
die_if_kernel
(
const
char
*
str
,
struct
pt_regs
*
regs
,
int
err
)
{
if
(
user_mode
(
regs
))
return
;
die
(
str
,
regs
,
err
);
}
static
void
notify_die
(
const
char
*
str
,
struct
pt_regs
*
regs
,
siginfo_t
*
info
,
unsigned
long
err
,
unsigned
long
trap
)
void
notify_die
(
const
char
*
str
,
struct
pt_regs
*
regs
,
struct
siginfo
*
info
,
unsigned
long
err
,
unsigned
long
trap
)
{
if
(
user_mode
(
regs
))
{
current
->
thread
.
error_code
=
err
;
...
...
arch/arm/mm/fault.c
View file @
62351cc3
...
...
@@ -372,49 +372,50 @@ do_bad(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
static
struct
fsr_info
{
int
(
*
fn
)(
unsigned
long
addr
,
unsigned
int
fsr
,
struct
pt_regs
*
regs
);
int
sig
;
int
code
;
const
char
*
name
;
}
fsr_info
[]
=
{
/*
* The following are the standard ARMv3 and ARMv4 aborts. ARMv5
* defines these to be "precise" aborts.
*/
{
do_bad
,
SIGSEGV
,
"vector exception"
},
{
do_bad
,
SIGILL
,
"alignment exception"
},
{
do_bad
,
SIGKILL
,
"terminal exception"
},
{
do_bad
,
SIGILL
,
"alignment exception"
},
{
do_bad
,
SIGBUS
,
"external abort on linefetch"
},
{
do_translation_fault
,
SIGSEGV
,
"section translation fault"
},
{
do_bad
,
SIGBUS
,
"external abort on linefetch"
},
{
do_page_fault
,
SIGSEGV
,
"page translation fault"
},
{
do_bad
,
SIGBUS
,
"external abort on non-linefetch"
},
{
do_bad
,
SIGSEGV
,
"section domain fault"
},
{
do_bad
,
SIGBUS
,
"external abort on non-linefetch"
},
{
do_bad
,
SIGSEGV
,
"page domain fault"
},
{
do_bad
,
SIGBUS
,
"external abort on translation"
},
{
do_sect_fault
,
SIGSEGV
,
"section permission fault"
},
{
do_bad
,
SIGBUS
,
"external abort on translation"
},
{
do_page_fault
,
SIGSEGV
,
"page permission fault"
},
{
do_bad
,
SIGSEGV
,
0
,
"vector exception"
},
{
do_bad
,
SIGILL
,
BUS_ADRALN
,
"alignment exception"
},
{
do_bad
,
SIGKILL
,
0
,
"terminal exception"
},
{
do_bad
,
SIGILL
,
BUS_ADRALN
,
"alignment exception"
},
{
do_bad
,
SIGBUS
,
0
,
"external abort on linefetch"
},
{
do_translation_fault
,
SIGSEGV
,
SEGV_MAPERR
,
"section translation fault"
},
{
do_bad
,
SIGBUS
,
0
,
"external abort on linefetch"
},
{
do_page_fault
,
SIGSEGV
,
SEGV_MAPERR
,
"page translation fault"
},
{
do_bad
,
SIGBUS
,
0
,
"external abort on non-linefetch"
},
{
do_bad
,
SIGSEGV
,
SEGV_ACCERR
,
"section domain fault"
},
{
do_bad
,
SIGBUS
,
0
,
"external abort on non-linefetch"
},
{
do_bad
,
SIGSEGV
,
SEGV_ACCERR
,
"page domain fault"
},
{
do_bad
,
SIGBUS
,
0
,
"external abort on translation"
},
{
do_sect_fault
,
SIGSEGV
,
SEGV_ACCERR
,
"section permission fault"
},
{
do_bad
,
SIGBUS
,
0
,
"external abort on translation"
},
{
do_page_fault
,
SIGSEGV
,
SEGV_ACCERR
,
"page permission fault"
},
/*
* The following are "imprecise" aborts, which are signalled by bit
* 10 of the FSR, and may not be recoverable. These are only
* supported if the CPU abort handler supports bit 10.
*/
{
do_bad
,
SIGBUS
,
"unknown 16"
},
{
do_bad
,
SIGBUS
,
"unknown 17"
},
{
do_bad
,
SIGBUS
,
"unknown 18"
},
{
do_bad
,
SIGBUS
,
"unknown 19"
},
{
do_bad
,
SIGBUS
,
"lock abort"
},
/* xscale */
{
do_bad
,
SIGBUS
,
"unknown 21"
},
{
do_bad
,
SIGBUS
,
"imprecise external abort"
},
/* xscale */
{
do_bad
,
SIGBUS
,
"unknown 23"
},
{
do_bad
,
SIGBUS
,
"dcache parity error"
},
/* xscale */
{
do_bad
,
SIGBUS
,
"unknown 25"
},
{
do_bad
,
SIGBUS
,
"unknown 26"
},
{
do_bad
,
SIGBUS
,
"unknown 27"
},
{
do_bad
,
SIGBUS
,
"unknown 28"
},
{
do_bad
,
SIGBUS
,
"unknown 29"
},
{
do_bad
,
SIGBUS
,
"unknown 30"
},
{
do_bad
,
SIGBUS
,
"unknown 31"
}
{
do_bad
,
SIGBUS
,
0
,
"unknown 16"
},
{
do_bad
,
SIGBUS
,
0
,
"unknown 17"
},
{
do_bad
,
SIGBUS
,
0
,
"unknown 18"
},
{
do_bad
,
SIGBUS
,
0
,
"unknown 19"
},
{
do_bad
,
SIGBUS
,
0
,
"lock abort"
},
/* xscale */
{
do_bad
,
SIGBUS
,
0
,
"unknown 21"
},
{
do_bad
,
SIGBUS
,
BUS_OBJERR
,
"imprecise external abort"
},
/* xscale */
{
do_bad
,
SIGBUS
,
0
,
"unknown 23"
},
{
do_bad
,
SIGBUS
,
0
,
"dcache parity error"
},
/* xscale */
{
do_bad
,
SIGBUS
,
0
,
"unknown 25"
},
{
do_bad
,
SIGBUS
,
0
,
"unknown 26"
},
{
do_bad
,
SIGBUS
,
0
,
"unknown 27"
},
{
do_bad
,
SIGBUS
,
0
,
"unknown 28"
},
{
do_bad
,
SIGBUS
,
0
,
"unknown 29"
},
{
do_bad
,
SIGBUS
,
0
,
"unknown 30"
},
{
do_bad
,
SIGBUS
,
0
,
"unknown 31"
}
};
void
__init
...
...
@@ -435,15 +436,19 @@ asmlinkage void
do_DataAbort
(
unsigned
long
addr
,
unsigned
int
fsr
,
struct
pt_regs
*
regs
)
{
const
struct
fsr_info
*
inf
=
fsr_info
+
(
fsr
&
15
)
+
((
fsr
&
(
1
<<
10
))
>>
6
);
struct
siginfo
info
;
if
(
!
inf
->
fn
(
addr
,
fsr
,
regs
))
return
;
printk
(
KERN_ALERT
"Unhandled fault: %s (0x%03x) at 0x%08lx
\n
"
,
inf
->
name
,
fsr
,
addr
);
force_sig
(
inf
->
sig
,
current
);
show_pte
(
current
->
mm
,
addr
);
die_if_kernel
(
"Oops"
,
regs
,
0
);
info
.
si_signo
=
inf
->
sig
;
info
.
si_errno
=
0
;
info
.
si_code
=
inf
->
code
;
info
.
si_addr
=
(
void
__user
*
)
addr
;
notify_die
(
""
,
regs
,
&
info
,
fsr
,
0
);
}
asmlinkage
void
...
...
arch/arm/mm/proc-arm1020.S
View file @
62351cc3
...
...
@@ -445,14 +445,14 @@ __arm1020_setup:
/
*
*
R
*
.
RVI
ZFRS
BLDP
WCAM
*
.0
.1
1001
..11
0101
/*
FIXME
:
why
no
V
bit
?
*/
*
.0
11
1001
..11
0101
*/
.
type
arm1020_cr1_clear
,
#
object
.
type
arm1020_cr1_set
,
#
object
arm1020_cr1_clear
:
.
word
0x593f
arm1020_cr1_set
:
.
word
0x
1
935
.
word
0x
3
935
__INITDATA
...
...
arch/arm/mm/proc-arm1020e.S
View file @
62351cc3
...
...
@@ -427,14 +427,14 @@ __arm1020e_setup:
/
*
*
R
*
.
RVI
ZFRS
BLDP
WCAM
*
.0
.1
1001
..11
0101
/*
FIXME
:
why
no
V
bit
?
*/
*
.0
11
1001
..11
0101
*/
.
type
arm1020e_cr1_clear
,
#
object
.
type
arm1020e_cr1_set
,
#
object
arm1020e_cr1_clear
:
.
word
0x5f3f
arm1020e_cr1_set
:
.
word
0x
1
935
.
word
0x
3
935
__INITDATA
...
...
drivers/mtd/afs.c
View file @
62351cc3
...
...
@@ -219,7 +219,7 @@ static int parse_afs_partitions(struct mtd_info *mtd,
*/
for
(
idx
=
off
=
0
;
off
<
mtd
->
size
;
off
+=
mtd
->
erasesize
)
{
struct
image_info_struct
iis
;
u_int
iis_ptr
,
img_ptr
,
size
;
u_int
iis_ptr
,
img_ptr
;
/* Read the footer. */
ret
=
afs_read_footer
(
mtd
,
&
img_ptr
,
&
iis_ptr
,
off
,
mask
);
...
...
@@ -236,21 +236,9 @@ static int parse_afs_partitions(struct mtd_info *mtd,
continue
;
strcpy
(
str
,
iis
.
name
);
size
=
mtd
->
erasesize
+
off
-
img_ptr
;
/*
* In order to support JFFS2 partitions on this layout,
* we must lie to MTD about the real size of JFFS2
* partitions; this ensures that the AFS flash footer
* won't be erased by JFFS2. Please ensure that your
* JFFS2 partitions are given image numbers between
* 1000 and 2000 inclusive.
*/
if
(
iis
.
imageNumber
>=
1000
&&
iis
.
imageNumber
<
2000
)
size
-=
mtd
->
erasesize
;
parts
[
idx
].
name
=
str
;
parts
[
idx
].
size
=
size
;
parts
[
idx
].
size
=
(
iis
.
length
+
mtd
->
erasesize
-
1
)
&
~
(
mtd
->
erasesize
-
1
)
;
parts
[
idx
].
offset
=
img_ptr
;
parts
[
idx
].
mask_flags
=
0
;
...
...
drivers/video/console/fbcon.c
View file @
62351cc3
...
...
@@ -142,7 +142,6 @@ static int fbcon_set_origin(struct vc_data *);
#define CURSOR_DRAW_DELAY (1)
/* # VBL ints between cursor state changes */
#define ARM_CURSOR_BLINK_RATE (10)
#define ATARI_CURSOR_BLINK_RATE (42)
#define MAC_CURSOR_BLINK_RATE (32)
#define DEFAULT_CURSOR_BLINK_RATE (20)
...
...
@@ -288,7 +287,7 @@ static void fb_flashcursor(void *private)
release_console_sem
();
}
#if
(defined(__arm__) && defined(IRQ_VSYNCPULSE)) ||
defined(CONFIG_ATARI) || defined(CONFIG_MAC)
#if defined(CONFIG_ATARI) || defined(CONFIG_MAC)
static
int
cursor_blink_rate
;
static
irqreturn_t
fb_vbl_handler
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
fp
)
{
...
...
@@ -878,11 +877,6 @@ static const char *fbcon_startup(void)
}
#endif
/* CONFIG_MAC */
#if defined(__arm__) && defined(IRQ_VSYNCPULSE)
cursor_blink_rate
=
ARM_CURSOR_BLINK_RATE
;
irqres
=
request_irq
(
IRQ_VSYNCPULSE
,
fb_vbl_handler
,
SA_SHIRQ
,
"framebuffer vbl"
,
info
);
#endif
/* Initialize the work queue. If the driver provides its
* own work queue this means it will use something besides
* default timer to flash the cursor. */
...
...
include/asm-arm/system.h
View file @
62351cc3
...
...
@@ -85,7 +85,9 @@ struct pt_regs;
void
die
(
const
char
*
msg
,
struct
pt_regs
*
regs
,
int
err
)
__attribute__
((
noreturn
));
void
die_if_kernel
(
const
char
*
str
,
struct
pt_regs
*
regs
,
int
err
);
struct
siginfo
;
void
notify_die
(
const
char
*
str
,
struct
pt_regs
*
regs
,
struct
siginfo
*
info
,
unsigned
long
err
,
unsigned
long
trap
);
void
hook_fault_code
(
int
nr
,
int
(
*
fn
)(
unsigned
long
,
unsigned
int
,
struct
pt_regs
*
),
...
...
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