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