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
32e5dbb6
Commit
32e5dbb6
authored
May 12, 2002
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://bk.arm.linux.org.uk
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
bdff23c1
97dd408f
Changes
82
Hide whitespace changes
Inline
Side-by-side
Showing
82 changed files
with
672 additions
and
627 deletions
+672
-627
arch/arm/boot/Makefile
arch/arm/boot/Makefile
+2
-9
arch/arm/boot/bootp/Makefile
arch/arm/boot/bootp/Makefile
+0
-1
arch/arm/boot/bootp/init.S
arch/arm/boot/bootp/init.S
+2
-2
arch/arm/boot/compressed/head.S
arch/arm/boot/compressed/head.S
+12
-6
arch/arm/config.in
arch/arm/config.in
+1
-13
arch/arm/def-configs/neponset
arch/arm/def-configs/neponset
+1
-1
arch/arm/kernel/armksyms.c
arch/arm/kernel/armksyms.c
+0
-1
arch/arm/kernel/compat.c
arch/arm/kernel/compat.c
+110
-13
arch/arm/kernel/entry-armv.S
arch/arm/kernel/entry-armv.S
+2
-4
arch/arm/kernel/ptrace.c
arch/arm/kernel/ptrace.c
+1
-1
arch/arm/kernel/setup.c
arch/arm/kernel/setup.c
+45
-26
arch/arm/kernel/traps.c
arch/arm/kernel/traps.c
+6
-6
arch/arm/lib/csumpartialcopygeneric.S
arch/arm/lib/csumpartialcopygeneric.S
+32
-30
arch/arm/mach-adifcc/arch.c
arch/arm/mach-adifcc/arch.c
+1
-1
arch/arm/mach-anakin/arch.c
arch/arm/mach-anakin/arch.c
+1
-1
arch/arm/mach-clps711x/cdb89712.c
arch/arm/mach-clps711x/cdb89712.c
+1
-1
arch/arm/mach-clps711x/clep7312.c
arch/arm/mach-clps711x/clep7312.c
+1
-1
arch/arm/mach-clps711x/edb7211-arch.c
arch/arm/mach-clps711x/edb7211-arch.c
+1
-1
arch/arm/mach-clps711x/fortunet.c
arch/arm/mach-clps711x/fortunet.c
+1
-1
arch/arm/mach-clps711x/p720t.c
arch/arm/mach-clps711x/p720t.c
+1
-3
arch/arm/mach-epxa10db/arch.c
arch/arm/mach-epxa10db/arch.c
+1
-1
arch/arm/mach-footbridge/arch.c
arch/arm/mach-footbridge/arch.c
+3
-32
arch/arm/mach-integrator/arch.c
arch/arm/mach-integrator/arch.c
+1
-1
arch/arm/mach-integrator/mm.c
arch/arm/mach-integrator/mm.c
+5
-5
arch/arm/mach-integrator/pci_v3.c
arch/arm/mach-integrator/pci_v3.c
+12
-20
arch/arm/mach-iop310/arch.c
arch/arm/mach-iop310/arch.c
+1
-1
arch/arm/mach-l7200/core.c
arch/arm/mach-l7200/core.c
+1
-1
arch/arm/mach-pxa/idp.c
arch/arm/mach-pxa/idp.c
+1
-1
arch/arm/mach-pxa/lubbock.c
arch/arm/mach-pxa/lubbock.c
+1
-1
arch/arm/mach-rpc/riscpc.c
arch/arm/mach-rpc/riscpc.c
+1
-1
arch/arm/mach-sa1100/adsbitsy.c
arch/arm/mach-sa1100/adsbitsy.c
+1
-1
arch/arm/mach-sa1100/assabet.c
arch/arm/mach-sa1100/assabet.c
+10
-20
arch/arm/mach-sa1100/badge4.c
arch/arm/mach-sa1100/badge4.c
+0
-8
arch/arm/mach-sa1100/brutus.c
arch/arm/mach-sa1100/brutus.c
+1
-1
arch/arm/mach-sa1100/cerf.c
arch/arm/mach-sa1100/cerf.c
+1
-1
arch/arm/mach-sa1100/empeg.c
arch/arm/mach-sa1100/empeg.c
+1
-1
arch/arm/mach-sa1100/flexanet.c
arch/arm/mach-sa1100/flexanet.c
+1
-5
arch/arm/mach-sa1100/freebird.c
arch/arm/mach-sa1100/freebird.c
+1
-1
arch/arm/mach-sa1100/graphicsclient.c
arch/arm/mach-sa1100/graphicsclient.c
+1
-1
arch/arm/mach-sa1100/graphicsmaster.c
arch/arm/mach-sa1100/graphicsmaster.c
+1
-1
arch/arm/mach-sa1100/huw_webpanel.c
arch/arm/mach-sa1100/huw_webpanel.c
+1
-1
arch/arm/mach-sa1100/irq.c
arch/arm/mach-sa1100/irq.c
+4
-6
arch/arm/mach-sa1100/itsy.c
arch/arm/mach-sa1100/itsy.c
+1
-1
arch/arm/mach-sa1100/jornada720.c
arch/arm/mach-sa1100/jornada720.c
+1
-1
arch/arm/mach-sa1100/nanoengine.c
arch/arm/mach-sa1100/nanoengine.c
+1
-1
arch/arm/mach-sa1100/neponset.c
arch/arm/mach-sa1100/neponset.c
+62
-62
arch/arm/mach-sa1100/omnimeter.c
arch/arm/mach-sa1100/omnimeter.c
+1
-1
arch/arm/mach-sa1100/pangolin.c
arch/arm/mach-sa1100/pangolin.c
+1
-1
arch/arm/mach-sa1100/pfs168.c
arch/arm/mach-sa1100/pfs168.c
+1
-1
arch/arm/mach-sa1100/pleb.c
arch/arm/mach-sa1100/pleb.c
+1
-1
arch/arm/mach-sa1100/sherman.c
arch/arm/mach-sa1100/sherman.c
+1
-1
arch/arm/mach-sa1100/simpad.c
arch/arm/mach-sa1100/simpad.c
+1
-1
arch/arm/mach-sa1100/system3.c
arch/arm/mach-sa1100/system3.c
+2
-4
arch/arm/mach-sa1100/victor.c
arch/arm/mach-sa1100/victor.c
+1
-1
arch/arm/mach-sa1100/xp860.c
arch/arm/mach-sa1100/xp860.c
+1
-1
arch/arm/mm/Makefile
arch/arm/mm/Makefile
+13
-7
arch/arm/mm/consistent.c
arch/arm/mm/consistent.c
+2
-1
arch/arm/mm/copypage-v4wb.S
arch/arm/mm/copypage-v4wb.S
+5
-5
arch/arm/mm/copypage-v4wt.S
arch/arm/mm/copypage-v4wt.S
+71
-0
arch/arm/mm/proc-arm1020.S
arch/arm/mm/proc-arm1020.S
+1
-1
arch/arm/mm/proc-arm720.S
arch/arm/mm/proc-arm720.S
+1
-1
arch/arm/mm/proc-arm920.S
arch/arm/mm/proc-arm920.S
+1
-1
arch/arm/mm/proc-arm922.S
arch/arm/mm/proc-arm922.S
+1
-1
arch/arm/mm/proc-arm926.S
arch/arm/mm/proc-arm926.S
+1
-1
arch/arm/mm/proc-sa110.S
arch/arm/mm/proc-sa110.S
+5
-1
arch/arm/mm/tlb-v4.S
arch/arm/mm/tlb-v4.S
+8
-19
fs/adfs/adfs.h
fs/adfs/adfs.h
+1
-1
fs/adfs/dir.c
fs/adfs/dir.c
+1
-1
fs/adfs/map.c
fs/adfs/map.c
+71
-29
fs/adfs/super.c
fs/adfs/super.c
+0
-34
include/asm-arm/arch-clps711x/memory.h
include/asm-arm/arch-clps711x/memory.h
+8
-49
include/asm-arm/arch-integrator/time.h
include/asm-arm/arch-integrator/time.h
+0
-1
include/asm-arm/arch-sa1100/SA-1100.h
include/asm-arm/arch-sa1100/SA-1100.h
+10
-0
include/asm-arm/arch-sa1100/hardware.h
include/asm-arm/arch-sa1100/hardware.h
+0
-9
include/asm-arm/arch-sa1100/irqs.h
include/asm-arm/arch-sa1100/irqs.h
+0
-5
include/asm-arm/arch-sa1100/memory.h
include/asm-arm/arch-sa1100/memory.h
+14
-27
include/asm-arm/glue.h
include/asm-arm/glue.h
+14
-5
include/asm-arm/io.h
include/asm-arm/io.h
+0
-18
include/asm-arm/memory.h
include/asm-arm/memory.h
+83
-4
include/asm-arm/page.h
include/asm-arm/page.h
+2
-11
include/asm-arm/pgtable.h
include/asm-arm/pgtable.h
+6
-20
include/asm-arm/setup.h
include/asm-arm/setup.h
+7
-65
No files found.
arch/arm/boot/Makefile
View file @
32e5dbb6
...
...
@@ -14,14 +14,12 @@ ifeq ($(CONFIG_CPU_26),y)
ZRELADDR
=
0x02080000
PARAMS_PHYS
=
0x0207c000
INITRD_PHYS
=
0x02180000
INITRD_VIRT
=
0x02180000
endif
ifeq
($(CONFIG_ARCH_RPC),y)
ZRELADDR
=
0x10008000
PARAMS_PHYS
=
0x10000100
INITRD_PHYS
=
0x18000000
INITRD_VIRT
=
0xc8000000
endif
ifeq
($(CONFIG_ARCH_CLPS7500),y)
...
...
@@ -32,7 +30,6 @@ ifeq ($(CONFIG_ARCH_EBSA110),y)
ZRELADDR
=
0x00008000
PARAMS_PHYS
=
0x00000400
INITRD_PHYS
=
0x00800000
INITRD_VIRT
=
0xc0800000
endif
ifeq
($(CONFIG_ARCH_SHARK),y)
...
...
@@ -44,14 +41,12 @@ ifeq ($(CONFIG_FOOTBRIDGE),y)
ZRELADDR
=
0x00008000
PARAMS_PHYS
=
0x00000100
INITRD_PHYS
=
0x00800000
INITRD_VIRT
=
0xc0800000
endif
ifeq
($(CONFIG_ARCH_INTEGRATOR),y)
ZRELADDR
=
0x00008000
PARAMS_PHYS
=
0x00000100
INITRD_PHYS
=
0x00800000
INITRD_VIRT
=
0xc0800000
endif
ifeq
($(CONFIG_ARCH_CAMELOT),y)
...
...
@@ -75,11 +70,9 @@ endif
# Should probably have some agreement on these...
ifeq
($(CONFIG_ARCH_P720T),y)
INITRD_PHYS
=
0xc0400000
INITRD_VIRT
=
0xc0400000
endif
ifeq
($(CONFIG_ARCH_CDB89712),y)
INITRD_PHYS
=
0x00700000
INITRD_VIRT
=
0xc0300000
endif
ifeq
($(CONFIG_ARCH_SA1100),y)
...
...
@@ -119,7 +112,7 @@ ZTEXTADDR =0
ZBSSADDR
=
ALIGN
(
4
)
endif
export
SYSTEM
ZTEXTADDR
ZBSSADDR
ZRELADDR
INITRD_PHYS
INITRD_VIRT
PARAMS_PHYS
export
SYSTEM
ZTEXTADDR
ZBSSADDR
ZRELADDR
INITRD_PHYS
PARAMS_PHYS
Image
:
$(CONFIGURE) $(SYSTEM)
$(OBJCOPY)
-O
binary
-R
.note
-R
.comment
-S
$(SYSTEM)
$@
...
...
@@ -139,7 +132,7 @@ bootp/bootp: zImage initrd
@
$(MAKE)
-C
bootp bootp
initrd
:
@
test
"
$(INITRD_
VIRT
)
"
!=
""
||
(
echo
This architecture does not support INITRD
;
exit
-1
)
@
test
"
$(INITRD_
PHYS
)
"
!=
""
||
(
echo
This architecture does not support INITRD
;
exit
-1
)
@
test
"
$(INITRD)
"
!=
""
||
(
echo
You must specify INITRD
;
exit
-1
)
install
:
$(CONFIGURE) Image
...
...
arch/arm/boot/bootp/Makefile
View file @
32e5dbb6
...
...
@@ -5,7 +5,6 @@
ZSYSTEM
=
$(TOPDIR)
/arch/arm/boot/zImage
ZLDFLAGS
=
-p
-X
-T
bootp.lds
\
--defsym
initrd_addr
=
$(INITRD_PHYS)
\
--defsym
initrd_virt
=
$(INITRD_VIRT)
\
--defsym
params
=
$(PARAMS_PHYS)
\
--defsym
kernel_addr
=
$(ZTEXTADDR)
...
...
arch/arm/boot/bootp/init.S
View file @
32e5dbb6
...
...
@@ -102,8 +102,8 @@ data: .word initrd_start
.
word
kernel_len
.
word
0x54410001
@
r4
=
ATAG_CORE
.
word
0x544
1
0005
@
r5
=
ATAG_INITRD
.
word
initrd_
virt
@
r6
.
word
0x544
2
0005
@
r5
=
ATAG_INITRD
.
word
initrd_
addr
@
r6
.
word
initrd_len
@
r7
.
word
params
@
r8
...
...
arch/arm/boot/compressed/head.S
View file @
32e5dbb6
...
...
@@ -151,7 +151,7 @@ not_angel:
add
r1
,
r1
,
r0
@
table
.
This
fixes
up
the
str
r1
,
[
r6
],
#
4
@
C
references
.
cmp
r6
,
ip
bl
t
1
b
bl
o
1
b
not_relocated
:
mov
r0
,
#
0
1
:
str
r0
,
[
r2
],
#
4
@
clear
bss
...
...
@@ -159,7 +159,7 @@ not_relocated: mov r0, #0
str
r0
,
[
r2
],
#
4
str
r0
,
[
r2
],
#
4
cmp
r2
,
r3
bl
t
1
b
bl
o
1
b
mrc
p15
,
0
,
r6
,
c0
,
c0
@
get
processor
ID
bl
cache_on
...
...
@@ -206,7 +206,7 @@ not_relocated: mov r0, #0
ldmia
r2
!,
{
r8
-
r13
}
stmia
r1
!,
{
r8
-
r13
}
cmp
r2
,
r3
bl
t
1
b
bl
o
1
b
bl
cache_clean_flush
add
pc
,
r5
,
r0
@
call
relocation
code
...
...
@@ -270,9 +270,9 @@ __cache_on: sub r3, r4, #16384 @ Page directory size
orr
r1
,
r1
,
#
3
<<
10
add
r2
,
r3
,
#
16384
1
:
cmp
r1
,
r8
@
if
virt
>
start
of
RAM
orr
ge
r1
,
r1
,
#
0x0c
@
set
cacheable
,
bufferable
orr
hs
r1
,
r1
,
#
0x0c
@
set
cacheable
,
bufferable
cmp
r1
,
r9
@
if
virt
>
end
of
RAM
bic
ge
r1
,
r1
,
#
0x0c
@
clear
cacheable
,
bufferable
bic
hs
r1
,
r1
,
#
0x0c
@
clear
cacheable
,
bufferable
str
r1
,
[
r0
],
#
4
@
1
:
1
mapping
add
r1
,
r1
,
#
1048576
teq
r0
,
r2
...
...
@@ -330,7 +330,7 @@ reloc_start: add r8, r5, r0
.
endr
cmp
r5
,
r8
bl
t
1
b
bl
o
1
b
debug_reloc_end
call_kernel
:
bl
cache_clean_flush
...
...
@@ -396,6 +396,12 @@ proc_types:
b
__armv4_cache_off
mov
pc
,
lr
.
word
0x41129200
@
ARM920T
.
word
0xff00fff0
b
__cache_on
b
__armv4_cache_off
b
__armv4_cache_flush
.
word
0x4401a100
@
sa110
/
sa1100
.
word
0xffffffe0
b
__cache_on
...
...
arch/arm/config.in
View file @
32e5dbb6
...
...
@@ -464,20 +464,8 @@ bool 'Power Management support' CONFIG_PM
dep_bool 'Preemptible Kernel (experimental)' CONFIG_PREEMPT $CONFIG_CPU_32 $CONFIG_EXPERIMENTAL
dep_tristate 'Advanced Power Management Emulation' CONFIG_APM $CONFIG_PM
dep_tristate 'RISC OS personality' CONFIG_ARTHUR $CONFIG_CPU_32
string 'Default kernel command string' CONFIG_CMDLINE ""
if [ "$CONFIG_ARCH_EBSA110" = "y" -o \
"$CONFIG_ARCH_SA1100" = "y" -o \
"$CONFIG_ARCH_CLPS7500" = "y" -o \
"$CONFIG_ARCH_PERSONAL_SERVER" = "y" -o \
"$CONFIG_ARCH_CATS" = "y" -o \
"$CONFIG_ARCH_P720T" = "y" -o \
"$CONFIG_ARCH_CDB89712" = "y" -o \
"$CONFIG_ARCH_CAMELOT" = "y" -o \
"$CONFIG_ARCH_ANAKIN" = "y" -o \
"$CONFIG_ARCH_IOP310" = "y" -o \
"$CONFIG_ARCH_ADIFCC" = "y" ]; then
string 'Default kernel command string' CONFIG_CMDLINE ""
fi
if [ "$CONFIG_ARCH_NETWINDER" = "y" -o \
"$CONFIG_ARCH_EBSA110" = "y" -o \
"$CONFIG_ARCH_EBSA285" = "y" -o \
...
...
arch/arm/def-configs/neponset
View file @
32e5dbb6
...
...
@@ -849,7 +849,7 @@ CONFIG_USB_DEBUG=y
#
# CONFIG_USB_UHCI is not set
# CONFIG_USB_UHCI_ALT is not set
CONFIG_USB_OHCI=y
# CONFIG_USB_OHCI is not set
CONFIG_USB_OHCI_SA1111=y
#
...
...
arch/arm/kernel/armksyms.c
View file @
32e5dbb6
...
...
@@ -182,7 +182,6 @@ EXPORT_SYMBOL_NOVERS(strchr);
EXPORT_SYMBOL_NOVERS
(
strlen
);
EXPORT_SYMBOL_NOVERS
(
strnlen
);
EXPORT_SYMBOL_NOVERS
(
strpbrk
);
EXPORT_SYMBOL_NOVERS
(
strsep
);
EXPORT_SYMBOL_NOVERS
(
strrchr
);
EXPORT_SYMBOL_NOVERS
(
strstr
);
EXPORT_SYMBOL_NOVERS
(
memset
);
...
...
arch/arm/kernel/compat.c
View file @
32e5dbb6
...
...
@@ -9,6 +9,11 @@
*
* We keep the old params compatibility cruft in one place (here)
* so we don't end up with lots of mess around other places.
*
* NOTE:
* The old struct param_struct is deprecated, but it will be kept in
* the kernel for 5 years from now (2001). This will allow boot loaders
* to convert to the new struct tag way.
*/
#include <linux/config.h>
#include <linux/types.h>
...
...
@@ -22,6 +27,59 @@
#include <asm/mach/arch.h>
/*
* Usage:
* - do not go blindly adding fields, add them at the end
* - when adding fields, don't rely on the address until
* a patch from me has been released
* - unused fields should be zero (for future expansion)
* - this structure is relatively short-lived - only
* guaranteed to contain useful data in setup_arch()
*
* This is the old deprecated way to pass parameters to the kernel
*/
struct
param_struct
{
union
{
struct
{
unsigned
long
page_size
;
/* 0 */
unsigned
long
nr_pages
;
/* 4 */
unsigned
long
ramdisk_size
;
/* 8 */
unsigned
long
flags
;
/* 12 */
#define FLAG_READONLY 1
#define FLAG_RDLOAD 4
#define FLAG_RDPROMPT 8
unsigned
long
rootdev
;
/* 16 */
unsigned
long
video_num_cols
;
/* 20 */
unsigned
long
video_num_rows
;
/* 24 */
unsigned
long
video_x
;
/* 28 */
unsigned
long
video_y
;
/* 32 */
unsigned
long
memc_control_reg
;
/* 36 */
unsigned
char
sounddefault
;
/* 40 */
unsigned
char
adfsdrives
;
/* 41 */
unsigned
char
bytes_per_char_h
;
/* 42 */
unsigned
char
bytes_per_char_v
;
/* 43 */
unsigned
long
pages_in_bank
[
4
];
/* 44 */
unsigned
long
pages_in_vram
;
/* 60 */
unsigned
long
initrd_start
;
/* 64 */
unsigned
long
initrd_size
;
/* 68 */
unsigned
long
rd_start
;
/* 72 */
unsigned
long
system_rev
;
/* 76 */
unsigned
long
system_serial_low
;
/* 80 */
unsigned
long
system_serial_high
;
/* 84 */
unsigned
long
mem_fclk_21285
;
/* 88 */
}
s
;
char
unused
[
256
];
}
u1
;
union
{
char
paths
[
8
][
128
];
struct
{
unsigned
long
magic
;
char
n
[
1024
-
sizeof
(
unsigned
long
)];
}
s
;
}
u2
;
char
commandline
[
COMMAND_LINE_SIZE
];
};
static
struct
tag
*
__init
memtag
(
struct
tag
*
tag
,
unsigned
long
start
,
unsigned
long
size
)
{
tag
=
tag_next
(
tag
);
...
...
@@ -33,7 +91,7 @@ static struct tag * __init memtag(struct tag *tag, unsigned long start, unsigned
return
tag
;
}
static
void
__init
build_tag_list
(
struct
param_struct
*
params
,
void
*
taglist
,
int
mem_init
)
static
void
__init
build_tag_list
(
struct
param_struct
*
params
,
void
*
taglist
)
{
struct
tag
*
tag
=
taglist
;
...
...
@@ -44,6 +102,22 @@ static void __init build_tag_list(struct param_struct *params, void *taglist, in
"trying to continue
\n
"
);
return
;
}
#ifdef CONFIG_ARCH_NETWINDER
if
(
params
->
u1
.
s
.
nr_pages
!=
0x02000
&&
params
->
u1
.
s
.
nr_pages
!=
0x04000
&&
params
->
u1
.
s
.
nr_pages
!=
0x08000
&&
params
->
u1
.
s
.
nr_pages
!=
0x10000
)
{
printk
(
KERN_WARNING
"Warning: bad NeTTrom parameters "
"detected, using defaults
\n
"
);
params
->
u1
.
s
.
nr_pages
=
0x1000
;
/* 16MB */
params
->
u1
.
s
.
ramdisk_size
=
0
;
params
->
u1
.
s
.
flags
=
FLAG_READONLY
;
params
->
u1
.
s
.
initrd_start
=
0
;
params
->
u1
.
s
.
initrd_size
=
0
;
params
->
u1
.
s
.
rd_start
=
0
;
}
#endif
tag
->
hdr
.
tag
=
ATAG_CORE
;
tag
->
hdr
.
size
=
tag_size
(
tag_core
);
...
...
@@ -76,17 +150,15 @@ static void __init build_tag_list(struct param_struct *params, void *taglist, in
tag
->
hdr
.
size
=
tag_size
(
tag_revision
);
tag
->
u
.
revision
.
rev
=
params
->
u1
.
s
.
system_rev
;
if
(
mem_init
)
{
#ifdef CONFIG_ARCH_ACORN
if
(
machine_is_riscpc
())
{
int
i
;
for
(
i
=
0
;
i
<
4
;
i
++
)
tag
=
memtag
(
tag
,
PHYS_OFFSET
+
(
i
<<
26
),
params
->
u1
.
s
.
pages_in_bank
[
i
]
*
PAGE_SIZE
);
}
else
if
(
machine_is_riscpc
())
{
int
i
;
for
(
i
=
0
;
i
<
4
;
i
++
)
tag
=
memtag
(
tag
,
PHYS_OFFSET
+
(
i
<<
26
),
params
->
u1
.
s
.
pages_in_bank
[
i
]
*
PAGE_SIZE
);
}
else
#endif
tag
=
memtag
(
tag
,
PHYS_OFFSET
,
params
->
u1
.
s
.
nr_pages
*
PAGE_SIZE
);
}
tag
=
memtag
(
tag
,
PHYS_OFFSET
,
params
->
u1
.
s
.
nr_pages
*
PAGE_SIZE
);
#ifdef CONFIG_FOOTBRIDGE
if
(
params
->
u1
.
s
.
mem_fclk_21285
)
{
...
...
@@ -97,6 +169,23 @@ static void __init build_tag_list(struct param_struct *params, void *taglist, in
}
#endif
#ifdef CONFIG_ARCH_EBSA285
if
(
machine_is_ebsa285
())
{
tag
=
tag_next
(
tag
);
tag
->
hdr
.
tag
=
ATAG_VIDEOTEXT
;
tag
->
hdr
.
size
=
tag_size
(
tag_videotext
);
tag
->
u
.
videotext
.
x
=
params
->
u1
.
s
.
video_x
;
tag
->
u
.
videotext
.
y
=
params
->
u1
.
s
.
video_y
;
tag
->
u
.
videotext
.
video_page
=
0
;
tag
->
u
.
videotext
.
video_mode
=
0
;
tag
->
u
.
videotext
.
video_cols
=
params
->
u1
.
s
.
video_num_cols
;
tag
->
u
.
videotext
.
video_ega_bx
=
0
;
tag
->
u
.
videotext
.
video_lines
=
params
->
u1
.
s
.
video_num_rows
;
tag
->
u
.
videotext
.
video_isvga
=
1
;
tag
->
u
.
videotext
.
video_points
=
8
;
}
#endif
#ifdef CONFIG_ARCH_ACORN
tag
=
tag_next
(
tag
);
tag
->
hdr
.
tag
=
ATAG_ACORN
;
...
...
@@ -114,14 +203,22 @@ static void __init build_tag_list(struct param_struct *params, void *taglist, in
strcpy
(
tag
->
u
.
cmdline
.
cmdline
,
params
->
commandline
);
tag
=
tag_next
(
tag
);
tag
->
hdr
.
tag
=
0
;
tag
->
hdr
.
tag
=
ATAG_NONE
;
tag
->
hdr
.
size
=
0
;
memmove
(
params
,
taglist
,
((
int
)
tag
)
-
((
int
)
taglist
)
+
sizeof
(
struct
tag_header
));
}
void
__init
convert_to_tag_list
(
struct
param_struct
*
params
,
int
mem_init
)
void
__init
convert_to_tag_list
(
struct
tag
*
tags
)
{
struct
param_struct
*
params
=
(
struct
param_struct
*
)
tags
;
build_tag_list
(
params
,
&
params
->
u2
);
}
void
__init
squash_mem_tags
(
struct
tag
*
tag
)
{
build_tag_list
(
params
,
&
params
->
u2
,
mem_init
);
for
(;
tag
->
hdr
.
size
;
tag
=
tag_next
(
tag
))
if
(
tag
->
hdr
.
tag
==
ATAG_MEM
)
tag
->
hdr
.
tag
=
ATAG_NONE
;
}
arch/arm/kernel/entry-armv.S
View file @
32e5dbb6
...
...
@@ -799,8 +799,7 @@ __und_svc: sub sp, sp, #S_FRAME_SIZE
adrsvc
al
,
r9
,
1
f
@
r9
=
normal
FP
return
bl
call_fpe
@
lr
=
undefined
instr
return
mov
r0
,
r5
@
unsigned
long
pc
mov
r1
,
sp
@
struct
pt_regs
*
regs
mov
r0
,
sp
@
struct
pt_regs
*
regs
bl
do_undefinstr
1
:
set_cpsr_c
r0
,
#
PSR_I_BIT
|
MODE_SVC
...
...
@@ -926,8 +925,7 @@ call_fpe: get_thread_info r10 @ get current thread
ldr
pc
,
[
r4
]
@
Call
FP
module
USR
entry
point
fpundefinstr
:
set_cpsr_c
r0
,
#
MODE_SVC
@
Enable
interrupts
mov
r0
,
lr
mov
r1
,
sp
mov
r0
,
sp
adrsvc
al
,
lr
,
ret_from_exception
b
do_undefinstr
...
...
arch/arm/kernel/ptrace.c
View file @
32e5dbb6
...
...
@@ -45,7 +45,7 @@ static inline struct pt_regs *
get_user_regs
(
struct
task_struct
*
task
)
{
return
(
struct
pt_regs
*
)
((
unsigned
long
)
task
+
8192
-
sizeof
(
struct
pt_regs
));
((
unsigned
long
)
task
->
thread_info
+
8192
-
sizeof
(
struct
pt_regs
));
}
/*
...
...
arch/arm/kernel/setup.c
View file @
32e5dbb6
...
...
@@ -35,10 +35,6 @@
#define MEM_SIZE (16*1024*1024)
#endif
#ifndef CONFIG_CMDLINE
#define CONFIG_CMDLINE ""
#endif
#ifdef CONFIG_PREEMPT
spinlock_t
kernel_flag
__cacheline_aligned_in_smp
=
SPIN_LOCK_UNLOCKED
;
#endif
...
...
@@ -57,7 +53,8 @@ __setup("fpe=", fpe_setup);
extern
unsigned
int
mem_fclk_21285
;
extern
void
paging_init
(
struct
meminfo
*
,
struct
machine_desc
*
desc
);
extern
void
convert_to_tag_list
(
struct
param_struct
*
params
,
int
mem_init
);
extern
void
convert_to_tag_list
(
struct
tag
*
tags
);
extern
void
squash_mem_tags
(
struct
tag
*
tag
);
extern
void
bootmem_init
(
struct
meminfo
*
);
extern
void
reboot_setup
(
char
*
str
);
extern
int
root_mountflags
;
...
...
@@ -517,6 +514,20 @@ static int __init parse_tag_initrd(const struct tag *tag)
__tagtable
(
ATAG_INITRD
,
parse_tag_initrd
);
static
int
__init
parse_tag_initrd2
(
const
struct
tag
*
tag
)
{
unsigned
long
start
=
0
;
if
(
tag
->
u
.
initrd
.
size
)
{
start
=
(
unsigned
long
)
phys_to_virt
(
tag
->
u
.
initrd
.
start
);
setup_initrd
(
start
,
tag
->
u
.
initrd
.
size
);
}
return
0
;
}
__tagtable
(
ATAG_INITRD2
,
parse_tag_initrd2
);
static
int
__init
parse_tag_serialnr
(
const
struct
tag
*
tag
)
{
system_serial_low
=
tag
->
u
.
serialnr
.
low
;
...
...
@@ -575,14 +586,29 @@ static void __init parse_tags(const struct tag *t)
t
->
hdr
.
tag
);
}
/*
* This holds our defaults.
*/
static
struct
init_tags
{
struct
tag_header
hdr1
;
struct
tag_core
core
;
struct
tag_header
hdr2
;
struct
tag_mem32
mem
;
struct
tag_header
hdr3
;
}
init_tags
__initdata
=
{
{
tag_size
(
tag_core
),
ATAG_CORE
},
{
1
,
PAGE_SIZE
,
0xff
},
{
tag_size
(
tag_mem32
),
ATAG_MEM
},
{
MEM_SIZE
,
PHYS_OFFSET
},
{
0
,
ATAG_NONE
}
};
void
__init
setup_arch
(
char
**
cmdline_p
)
{
struct
tag
*
tags
=
NULL
;
struct
tag
*
tags
=
(
struct
tag
*
)
&
init_tags
;
struct
machine_desc
*
mdesc
;
char
*
from
=
default_command_line
;
ROOT_DEV
=
mk_kdev
(
0
,
255
);
setup_processor
();
mdesc
=
setup_machine
(
machine_arch_type
);
machine_name
=
mdesc
->
name
;
...
...
@@ -593,29 +619,22 @@ void __init setup_arch(char **cmdline_p)
if
(
mdesc
->
param_offset
)
tags
=
phys_to_virt
(
mdesc
->
param_offset
);
/*
* Do the machine-specific fixups before we parse the
* parameters or tags.
*/
if
(
mdesc
->
fixup
)
mdesc
->
fixup
(
mdesc
,
(
struct
param_struct
*
)
tags
,
&
from
,
&
meminfo
);
/*
* If we have the old style parameters, convert them to
* a tag list
before
.
* a tag list.
*/
if
(
tags
&&
tags
->
hdr
.
tag
!=
ATAG_CORE
)
convert_to_tag_list
((
struct
param_struct
*
)
tags
,
meminfo
.
nr_banks
==
0
);
if
(
tags
->
hdr
.
tag
!=
ATAG_CORE
)
convert_to_tag_list
(
tags
);
if
(
tags
->
hdr
.
tag
!=
ATAG_CORE
)
tags
=
(
struct
tag
*
)
&
init_tags
;
if
(
tags
&&
tags
->
hdr
.
tag
==
ATAG_CORE
)
parse_tags
(
tags
);
if
(
mdesc
->
fixup
)
mdesc
->
fixup
(
mdesc
,
tags
,
&
from
,
&
meminfo
);
if
(
meminfo
.
nr_banks
==
0
)
{
meminfo
.
nr_banks
=
1
;
meminfo
.
bank
[
0
].
start
=
PHYS_OFFSET
;
meminfo
.
bank
[
0
].
size
=
MEM_SIZE
;
if
(
tags
->
hdr
.
tag
==
ATAG_CORE
)
{
if
(
meminfo
.
nr_banks
!=
0
)
squash_mem_tags
(
tags
)
;
parse_tags
(
tags
)
;
}
init_mm
.
start_code
=
(
unsigned
long
)
&
_text
;
...
...
arch/arm/kernel/traps.c
View file @
32e5dbb6
...
...
@@ -116,7 +116,7 @@ static void dump_instr(struct pt_regs *regs)
static
void
dump_stack
(
struct
task_struct
*
tsk
,
unsigned
long
sp
)
{
dump_mem
(
"Stack: "
,
sp
-
16
,
8192
+
(
unsigned
long
)
tsk
->
thread_info
);
dump_mem
(
"Stack: "
,
sp
,
8192
+
(
unsigned
long
)
tsk
->
thread_info
);
}
static
void
dump_backtrace
(
struct
pt_regs
*
regs
,
struct
task_struct
*
tsk
)
...
...
@@ -132,7 +132,7 @@ static void dump_backtrace(struct pt_regs *regs, struct task_struct *tsk)
}
else
if
(
verify_stack
(
fp
))
{
printk
(
"invalid frame pointer 0x%08x"
,
fp
);
ok
=
0
;
}
else
if
(
fp
<
4096
+
(
unsigned
long
)
tsk
->
thread_info
)
}
else
if
(
fp
<
(
unsigned
long
)(
tsk
->
thread_info
+
1
)
)
printk
(
"frame pointer underflow"
);
printk
(
"
\n
"
);
...
...
@@ -167,8 +167,8 @@ NORET_TYPE void die(const char *str, struct pt_regs *regs, int err)
printk
(
"Internal error: %s: %x
\n
"
,
str
,
err
);
printk
(
"CPU: %d
\n
"
,
smp_processor_id
());
show_regs
(
regs
);
printk
(
"Process %s (pid: %d, stack
page=%08lx
)
\n
"
,
current
->
comm
,
current
->
pid
,
4096
+
(
unsigned
long
)
tsk
);
printk
(
"Process %s (pid: %d, stack
limit = 0x%p
)
\n
"
,
current
->
comm
,
current
->
pid
,
tsk
->
thread_info
+
1
);
if
(
!
user_mode
(
regs
)
||
in_interrupt
())
{
mm_segment_t
fs
;
...
...
@@ -201,7 +201,7 @@ void die_if_kernel(const char *str, struct pt_regs *regs, int err)
die
(
str
,
regs
,
err
);
}
asmlinkage
void
do_undefinstr
(
int
address
,
struct
pt_regs
*
regs
,
int
mode
)
asmlinkage
void
do_undefinstr
(
struct
pt_regs
*
regs
)
{
unsigned
long
*
pc
;
siginfo_t
info
;
...
...
@@ -229,7 +229,7 @@ asmlinkage void do_undefinstr(int address, struct pt_regs *regs, int mode)
force_sig_info
(
SIGILL
,
&
info
,
current
);
die_if_kernel
(
"Oops - undefined instruction"
,
regs
,
mode
);
die_if_kernel
(
"Oops - undefined instruction"
,
regs
,
0
);
}
#ifdef CONFIG_CPU_26
...
...
arch/arm/lib/csumpartialcopygeneric.S
View file @
32e5dbb6
...
...
@@ -137,19 +137,19 @@ FN_ENTRY
4
:
ands
len
,
len
,
#
3
beq
.
done
load1l
r
5
load1l
r
4
tst
len
,
#
2
mov
r
4
,
r5
,
lsr
#
byte
(
0
)
mov
r
5
,
r4
,
lsr
#
byte
(
0
)
beq
.
exit
adcs
sum
,
sum
,
r
5
,
push
#
16
strb
r
4
,
[
dst
],
#
1
mov
r
4
,
r5
,
lsr
#
byte
(
1
)
strb
r
4
,
[
dst
],
#
1
mov
r
4
,
r5
,
lsr
#
byte
(
2
)
adcs
sum
,
sum
,
r
4
,
push
#
16
strb
r
5
,
[
dst
],
#
1
mov
r
5
,
r4
,
lsr
#
byte
(
1
)
strb
r
5
,
[
dst
],
#
1
mov
r
5
,
r4
,
lsr
#
byte
(
2
)
.
exit
:
tst
len
,
#
1
strneb
r
4
,
[
dst
],
#
1
andne
r
4
,
r4
,
#
255
adcnes
sum
,
sum
,
r
4
,
lsl
#
byte
(
0
)
strneb
r
5
,
[
dst
],
#
1
andne
r
5
,
r5
,
#
255
adcnes
sum
,
sum
,
r
5
,
lsl
#
byte
(
0
)
/
*
*
If
the
dst
pointer
was
not
16
-
bit
aligned
,
we
...
...
@@ -210,17 +210,17 @@ FN_ENTRY
orr
r4
,
r4
,
r5
,
push
#
24
str
r4
,
[
dst
],
#
4
adcs
sum
,
sum
,
r4
mov
r4
,
r5
,
pull
#
8
4
:
ands
len
,
len
,
#
3
beq
.
done
mov
r
4
,
r5
,
lsr
#
byte
(
1
)
mov
r
5
,
r4
,
lsr
#
byte
(
0
)
tst
len
,
#
2
beq
.
exit
bic
r5
,
r5
,
#
0xff
<<
byte
(
0
)
adcs
sum
,
sum
,
r5
,
push
#
8
strb
r4
,
[
dst
],
#
1
mov
r4
,
r5
,
lsr
#
byte
(
2
)
strb
r4
,
[
dst
],
#
1
mov
r4
,
r5
,
lsr
#
byte
(
3
)
adcs
sum
,
sum
,
r4
,
push
#
16
strb
r5
,
[
dst
],
#
1
mov
r5
,
r4
,
lsr
#
byte
(
1
)
strb
r5
,
[
dst
],
#
1
mov
r5
,
r4
,
lsr
#
byte
(
2
)
b
.
exit
.
src2_aligned
:
mov
r4
,
r5
,
pull
#
16
...
...
@@ -262,18 +262,19 @@ FN_ENTRY
orr
r4
,
r4
,
r5
,
push
#
16
str
r4
,
[
dst
],
#
4
adcs
sum
,
sum
,
r4
mov
r4
,
r5
,
pull
#
16
4
:
ands
len
,
len
,
#
3
beq
.
done
mov
r
4
,
r5
,
lsr
#
byte
(
2
)
mov
r
5
,
r4
,
lsr
#
byte
(
0
)
tst
len
,
#
2
beq
.
exit
adcs
sum
,
sum
,
r
5
,
pull
#
16
strb
r
4
,
[
dst
],
#
1
mov
r
4
,
r5
,
lsr
#
byte
(
3
)
strb
r
4
,
[
dst
],
#
1
adcs
sum
,
sum
,
r
4
strb
r
5
,
[
dst
],
#
1
mov
r
5
,
r4
,
lsr
#
byte
(
1
)
strb
r
5
,
[
dst
],
#
1
tst
len
,
#
1
beq
.
done
load1b
r
4
load1b
r
5
b
.
exit
.
src3_aligned
:
mov
r4
,
r5
,
pull
#
24
...
...
@@ -315,16 +316,17 @@ FN_ENTRY
orr
r4
,
r4
,
r5
,
push
#
8
str
r4
,
[
dst
],
#
4
adcs
sum
,
sum
,
r4
mov
r4
,
r5
,
pull
#
24
4
:
ands
len
,
len
,
#
3
beq
.
done
mov
r
4
,
r5
,
lsr
#
byte
(
3
)
mov
r
5
,
r4
,
lsr
#
byte
(
0
)
tst
len
,
#
2
beq
.
exit
adcs
sum
,
sum
,
r5
,
pull
#
24
strb
r4
,
[
dst
],
#
1
load1l
r
5
mov
r
4
,
r5
,
lsr
#
byte
(
0
)
strb
r
4
,
[
dst
],
#
1
strb
r5
,
[
dst
],
#
1
adcs
sum
,
sum
,
r4
load1l
r
4
mov
r
5
,
r4
,
lsr
#
byte
(
0
)
strb
r
5
,
[
dst
],
#
1
adcs
sum
,
sum
,
r4
,
push
#
24
mov
r
4
,
r5
,
lsr
#
byte
(
1
)
mov
r
5
,
r4
,
lsr
#
byte
(
1
)
b
.
exit
arch/arm/mach-adifcc/arch.c
View file @
32e5dbb6
...
...
@@ -22,7 +22,7 @@ extern void adifcc_map_io(void);
extern
void
adifcc_init_irq
(
void
);
static
void
__init
fixup_adifcc
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_adifcc
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
#ifdef CONFIG_ARCH_ADI_EVB
...
...
arch/arm/mach-anakin/arch.c
View file @
32e5dbb6
...
...
@@ -27,7 +27,7 @@ extern void anakin_map_io(void);
extern
void
genarch_init_irq
(
void
);
static
void
__init
fixup_anakin
(
struct
machine_desc
*
desc
,
struct
param_struct
*
unused
,
fixup_anakin
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
ROOT_DEV
=
mk_kdev
(
RAMDISK_MAJOR
,
0
);
...
...
arch/arm/mach-clps711x/cdb89712.c
View file @
32e5dbb6
...
...
@@ -45,7 +45,7 @@ static struct map_desc cdb89712_io_desc[] __initdata = {
};
static
void
__init
fixup_cdb89712
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_cdb89712
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
}
...
...
arch/arm/mach-clps711x/clep7312.c
View file @
32e5dbb6
...
...
@@ -27,7 +27,7 @@ extern void clps711x_init_irq(void);
extern
void
clps711x_map_io
(
void
);
static
void
__init
fixup_clep7312
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_clep7312
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
mi
->
nr_banks
=
1
;
...
...
arch/arm/mach-clps711x/edb7211-arch.c
View file @
32e5dbb6
...
...
@@ -29,7 +29,7 @@ extern void clps711x_init_irq(void);
extern
void
edb7211_map_io
(
void
);
static
void
__init
fixup_edb7211
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_edb7211
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
/*
...
...
arch/arm/mach-clps711x/fortunet.c
View file @
32e5dbb6
...
...
@@ -53,7 +53,7 @@ typedef struct tag_IMAGE_PARAMS
#define IMAGE_PARAMS_PHYS 0xC01F0000
static
void
__init
fortunet_fixup
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fortunet_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
IMAGE_PARAMS
*
ip
;
...
...
arch/arm/mach-clps711x/p720t.c
View file @
32e5dbb6
...
...
@@ -49,11 +49,9 @@ static struct map_desc p720t_io_desc[] __initdata = {
};
static
void
__init
fixup_p720t
(
struct
machine_desc
*
desc
,
struct
param_struct
*
params
,
fixup_p720t
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
struct
tag
*
tag
=
(
struct
tag
*
)
params
;
/*
* Our bootloader doesn't setup any tags (yet).
*/
...
...
arch/arm/mach-epxa10db/arch.c
View file @
32e5dbb6
...
...
@@ -35,7 +35,7 @@ extern void epxa10db_init_irq(void);
static
void
__init
epxa10db_fixup
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
epxa10db_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
...
...
arch/arm/mach-footbridge/arch.c
View file @
32e5dbb6
...
...
@@ -36,25 +36,11 @@ static int __init parse_tag_memclk(const struct tag *tag)
__tagtable
(
ATAG_MEMCLK
,
parse_tag_memclk
);
#ifdef CONFIG_ARCH_EBSA285
static
void
__init
fixup_ebsa285
(
struct
machine_desc
*
desc
,
struct
param_struct
*
params
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
#if defined(CONFIG_VGA_CONSOLE) || defined(CONFIG_DUMMY_CONSOLE)
ORIG_X
=
params
->
u1
.
s
.
video_x
;
ORIG_Y
=
params
->
u1
.
s
.
video_y
;
ORIG_VIDEO_COLS
=
params
->
u1
.
s
.
video_num_cols
;
ORIG_VIDEO_LINES
=
params
->
u1
.
s
.
video_num_rows
;
#endif
}
MACHINE_START
(
EBSA285
,
"EBSA285"
)
MAINTAINER
(
"Russell King"
)
BOOT_MEM
(
0x00000000
,
DC21285_ARMCSR_BASE
,
0xfe000000
)
BOOT_PARAMS
(
0x00000100
)
VIDEO
(
0x000a0000
,
0x000bffff
)
FIXUP
(
fixup_ebsa285
)
MAPIO
(
footbridge_map_io
)
INITIRQ
(
footbridge_init_irq
)
MACHINE_END
...
...
@@ -67,7 +53,7 @@ MACHINE_END
* the parameter page.
*/
static
void
__init
fixup_netwinder
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_netwinder
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
#ifdef CONFIG_ISAPNP
...
...
@@ -80,21 +66,6 @@ fixup_netwinder(struct machine_desc *desc, struct param_struct *params,
*/
isapnp_disable
=
1
;
#endif
if
(
params
->
u1
.
s
.
nr_pages
!=
0x02000
&&
params
->
u1
.
s
.
nr_pages
!=
0x04000
&&
params
->
u1
.
s
.
nr_pages
!=
0x08000
&&
params
->
u1
.
s
.
nr_pages
!=
0x10000
)
{
printk
(
KERN_WARNING
"Warning: bad NeTTrom parameters "
"detected, using defaults
\n
"
);
params
->
u1
.
s
.
nr_pages
=
0x1000
;
/* 16MB */
params
->
u1
.
s
.
ramdisk_size
=
0
;
params
->
u1
.
s
.
flags
=
FLAG_READONLY
;
params
->
u1
.
s
.
initrd_start
=
0
;
params
->
u1
.
s
.
initrd_size
=
0
;
params
->
u1
.
s
.
rd_start
=
0
;
}
}
MACHINE_START
(
NETWINDER
,
"Rebel-NetWinder"
)
...
...
@@ -116,7 +87,7 @@ MACHINE_END
* hard reboots fail on early boards.
*/
static
void
__init
fixup_cats
(
struct
machine_desc
*
desc
,
struct
param_struct
*
unused
,
fixup_cats
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
ORIG_VIDEO_LINES
=
25
;
...
...
@@ -138,7 +109,7 @@ MACHINE_END
#ifdef CONFIG_ARCH_CO285
static
void
__init
fixup_coebsa285
(
struct
machine_desc
*
desc
,
struct
param_struct
*
unused
,
fixup_coebsa285
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
extern
unsigned
long
boot_memory_end
;
...
...
arch/arm/mach-integrator/arch.c
View file @
32e5dbb6
...
...
@@ -51,7 +51,7 @@ static struct kmi_info integrator_mouse __initdata = {
#endif
static
void
__init
integrator_fixup
(
struct
machine_desc
*
desc
,
struct
param_struct
*
unused
,
integrator_fixup
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
#ifdef CONFIG_KMI_KEYB
...
...
arch/arm/mach-integrator/mm.c
View file @
32e5dbb6
...
...
@@ -33,10 +33,10 @@
/*
* Logical Physical
* e8000000 40000000 PCI memory
* ec000000 6
2000000 PCI config space
* ed000000 6
1000000 PCI V3 regs
* ee000000 60000000 PCI IO
* e8000000 40000000 PCI memory
PHYS_PCI_MEM_BASE (max 512M)
* ec000000 6
1000000 PCI config space PHYS_PCI_CONFIG_BASE (max 16M)
* ed000000 6
2000000 PCI V3 regs PHYS_PCI_V3_BASE (max 64k)
* ee000000 60000000 PCI IO
PHYS_PCI_IO_BASE (max 16M)
* ef000000 Cache flush
* f1000000 10000000 Core module registers
* f1100000 11000000 System controller registers
...
...
@@ -67,7 +67,7 @@ static struct map_desc integrator_io_desc[] __initdata = {
{
IO_ADDRESS
(
INTEGRATOR_GPIO_BASE
),
INTEGRATOR_GPIO_BASE
,
SZ_4K
,
DOMAIN_IO
,
0
,
1
},
{
PCI_MEMORY_VADDR
,
PHYS_PCI_MEM_BASE
,
SZ_16M
,
DOMAIN_IO
,
0
,
1
},
{
PCI_CONFIG_VADDR
,
PHYS_PCI_CONFIG_BASE
,
SZ_16M
,
DOMAIN_IO
,
0
,
1
},
{
PCI_V3_VADDR
,
PHYS_PCI_V3_BASE
,
SZ_
512
K
,
DOMAIN_IO
,
0
,
1
},
{
PCI_V3_VADDR
,
PHYS_PCI_V3_BASE
,
SZ_
64
K
,
DOMAIN_IO
,
0
,
1
},
{
PCI_IO_VADDR
,
PHYS_PCI_IO_BASE
,
SZ_64K
,
DOMAIN_IO
,
0
,
1
},
LAST_DESC
};
...
...
arch/arm/mach-integrator/pci_v3.c
View file @
32e5dbb6
...
...
@@ -50,7 +50,7 @@
* 40000000 - 4FFFFFFF PCI memory. 256M non-prefetchable
* 50000000 - 5FFFFFFF PCI memory. 256M prefetchable
* 60000000 - 60FFFFFF PCI IO. 16M
* 6
8000000 - 68
FFFFFF PCI Configuration. 16M
* 6
1000000 - 61
FFFFFF PCI Configuration. 16M
*
* There are three V3 windows, each described by a pair of V3 registers.
* These are LB_BASE0/LB_MAP0, LB_BASE1/LB_MAP1 and LB_BASE2/LB_MAP2.
...
...
@@ -58,14 +58,6 @@
* can be used either for PCI I/O or for I20 accesses. By default, uHAL
* uses this only for PCI IO space.
*
* PCI Memory is mapped so that assigned addresses in PCI Memory match
* local bus memory addresses. In other words, if a PCI device is assigned
* address 80200000 then that address is a valid local bus address as well
* as a valid PCI Memory address. PCI IO addresses are mapped to start
* at zero. This means that local bus address 60000000 maps to PCI IO address
* 00000000 and so on. Device driver writers need to be aware of this
* distinction.
*
* Normally these spaces are mapped using the following base registers:
*
* Usage Local Bus Memory Base/Map registers used
...
...
@@ -73,7 +65,7 @@
* Mem 40000000 - 4FFFFFFF LB_BASE0/LB_MAP0
* Mem 50000000 - 5FFFFFFF LB_BASE1/LB_MAP1
* IO 60000000 - 60FFFFFF LB_BASE2/LB_MAP2
* Cfg 6
8000000 - 68FFFFFF
* Cfg 6
1000000 - 61FFFFFF
*
* This means that I20 and PCI configuration space accesses will fail.
* When PCI configuration accesses are needed (via the uHAL PCI
...
...
@@ -84,7 +76,7 @@
* Mem 40000000 - 4FFFFFFF LB_BASE0/LB_MAP0
* Mem 50000000 - 5FFFFFFF LB_BASE0/LB_MAP0
* IO 60000000 - 60FFFFFF LB_BASE2/LB_MAP2
* Cfg 6
8000000 - 68
FFFFFF LB_BASE1/LB_MAP1
* Cfg 6
1000000 - 61
FFFFFF LB_BASE1/LB_MAP1
*
* To make this work, the code depends on overlapping windows working.
* The V3 chip translates an address by checking its range within
...
...
@@ -174,10 +166,10 @@
static
spinlock_t
v3_lock
=
SPIN_LOCK_UNLOCKED
;
#define PCI_BUS_NONMEM_START 0x00000000
#define PCI_BUS_NONMEM_SIZE
0x10000000
#define PCI_BUS_NONMEM_SIZE
SZ_256M
#define PCI_BUS_PREMEM_START
0x10000000
#define PCI_BUS_PREMEM_SIZE
0x10000000
#define PCI_BUS_PREMEM_START
PCI_BUS_NONMEM_START + PCI_BUS_NONMEM_SIZE
#define PCI_BUS_PREMEM_SIZE
SZ_256M
#if PCI_BUS_NONMEM_START & 0x000fffff
#error PCI_BUS_NONMEM_START must be megabyte aligned
...
...
@@ -400,15 +392,15 @@ static struct pci_ops pci_v3_ops = {
static
struct
resource
non_mem
=
{
name:
"PCI non-prefetchable"
,
start:
0x40000000
+
PCI_BUS_NONMEM_START
,
end:
0x40000000
+
PCI_BUS_NONMEM_START
+
PCI_BUS_NONMEM_SIZE
-
1
,
start:
PHYS_PCI_MEM_BASE
+
PCI_BUS_NONMEM_START
,
end:
PHYS_PCI_MEM_BASE
+
PCI_BUS_NONMEM_START
+
PCI_BUS_NONMEM_SIZE
-
1
,
flags:
IORESOURCE_MEM
,
};
static
struct
resource
pre_mem
=
{
name:
"PCI prefetchable"
,
start:
0x40000000
+
PCI_BUS_PREMEM_START
,
end:
0x40000000
+
PCI_BUS_PREMEM_START
+
PCI_BUS_PREMEM_SIZE
-
1
,
start:
PHYS_PCI_MEM_BASE
+
PCI_BUS_PREMEM_START
,
end:
PHYS_PCI_MEM_BASE
+
PCI_BUS_PREMEM_START
+
PCI_BUS_PREMEM_SIZE
-
1
,
flags:
IORESOURCE_MEM
|
IORESOURCE_PREFETCH
,
};
...
...
@@ -433,7 +425,7 @@ static int __init pci_v3_setup_resources(struct resource **resource)
*/
resource
[
0
]
=
&
ioport_resource
;
resource
[
1
]
=
&
non_mem
;
resource
[
2
]
=
&
pre_mem
;
//
resource[2] = &pre_mem;
return
1
;
}
...
...
@@ -530,7 +522,7 @@ int __init pci_v3_setup(int nr, struct pci_sys_data *sys)
int
ret
=
0
;
if
(
nr
==
0
)
{
sys
->
mem_offset
=
0x40000000
;
sys
->
mem_offset
=
PHYS_PCI_MEM_BASE
;
ret
=
pci_v3_setup_resources
(
sys
->
resource
);
}
...
...
arch/arm/mach-iop310/arch.c
View file @
32e5dbb6
...
...
@@ -26,7 +26,7 @@ extern void iq80310_map_io(void);
extern
void
iq80310_init_irq
(
void
);
static
void
__init
fixup_iq80310
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_iq80310
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
system_rev
=
(
*
(
volatile
unsigned
int
*
)
0xfe830000
)
&
0x0f
;
...
...
arch/arm/mach-l7200/core.c
View file @
32e5dbb6
...
...
@@ -83,7 +83,7 @@ static void __init l7200_map_io(void)
}
static
void
__init
fixup_l7200
(
struct
machine_desc
*
desc
,
struct
param_struct
*
unused
,
fixup_l7200
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
mi
->
nr_banks
=
1
;
...
...
arch/arm/mach-pxa/idp.c
View file @
32e5dbb6
...
...
@@ -69,7 +69,7 @@ static void __init idp_init_irq(void)
}
static
void
__init
fixup_idp
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_idp
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
#ifdef PXA_IDP_REV02
...
...
arch/arm/mach-pxa/lubbock.c
View file @
32e5dbb6
...
...
@@ -120,7 +120,7 @@ static int __init lubbock_init(void)
__initcall
(
lubbock_init
);
static
void
__init
fixup_lubbock
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_lubbock
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
SET_BANK
(
0
,
0xa0000000
,
64
*
1024
*
1024
);
...
...
arch/arm/mach-rpc/riscpc.c
View file @
32e5dbb6
...
...
@@ -61,7 +61,7 @@ __tagtable(ATAG_ACORN, parse_tag_acorn);
#endif
static
void
__init
fixup_riscpc
(
struct
machine_desc
*
desc
,
struct
param_struct
*
unusd
,
fixup_riscpc
(
struct
machine_desc
*
desc
,
struct
tag
*
tags
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
/*
...
...
arch/arm/mach-sa1100/adsbitsy.c
View file @
32e5dbb6
...
...
@@ -82,7 +82,7 @@ static void __init adsbitsy_init_irq(void)
*/
static
void
__init
fixup_adsbitsy
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_adsbitsy
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
SET_BANK
(
0
,
0xc0000000
,
32
*
1024
*
1024
);
...
...
arch/arm/mach-sa1100/assabet.c
View file @
32e5dbb6
...
...
@@ -103,7 +103,6 @@ static int __init assabet_init(void)
* or BCR_clear().
*/
ASSABET_BCR
=
BCR_value
=
ASSABET_BCR_DB1111
;
NCR_0
=
0
;
#ifndef CONFIG_ASSABET_NEPONSET
printk
(
"Warning: Neponset detected but full support "
...
...
@@ -159,13 +158,11 @@ static void __init get_assabet_scr(void)
SCR_value
=
scr
;
}
extern
void
convert_to_tag_list
(
struct
param_struct
*
params
,
int
mem_init
);
static
void
__init
fixup_assabet
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_assabet
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
struct
tag
*
t
=
(
struct
tag
*
)
param
s
;
struct
tag
*
t
=
tag
s
;
/* This must be done before any call to machine_has_neponset() */
map_sa1100_gpio_regs
();
...
...
@@ -174,12 +171,6 @@ fixup_assabet(struct machine_desc *desc, struct param_struct *params,
if
(
machine_has_neponset
())
printk
(
"Neponset expansion board detected
\n
"
);
/*
* Apparantly bootldr uses a param_struct. Groan.
*/
if
(
t
->
hdr
.
tag
!=
ATAG_CORE
)
convert_to_tag_list
(
params
,
1
);
if
(
t
->
hdr
.
tag
!=
ATAG_CORE
)
{
t
->
hdr
.
tag
=
ATAG_CORE
;
t
->
hdr
.
size
=
tag_size
(
tag_core
);
...
...
@@ -319,17 +310,16 @@ static void __init assabet_map_io(void)
sa1100_map_io
();
iotable_init
(
assabet_io_desc
);
if
(
machine_has_neponset
())
{
#ifdef CONFIG_ASSABET_NEPONSET
/*
* We map Neponset registers even if it isn't present since
* many drivers will try to probe their stuff (and fail).
* This is still more friendly than a kernel paging request
* crash.
*/
neponset_map_io
();
/*
* We map Neponset registers even if it isn't present since
* many drivers will try to probe their stuff (and fail).
* This is still more friendly than a kernel paging request
* crash.
*/
neponset_map_io
();
#endif
if
(
machine_has_neponset
())
{
/*
* When Neponset is attached, the first UART should be
* UART3. That's what Angel is doing and many documents
...
...
arch/arm/mach-sa1100/badge4.c
View file @
32e5dbb6
...
...
@@ -143,13 +143,6 @@ void badge4_set_5V(unsigned subsystem, int on)
EXPORT_SYMBOL
(
badge4_set_5V
);
static
void
__init
fixup_badge4
(
struct
machine_desc
*
desc
,
struct
param_struct
*
params
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
/* nothing needed here */
}
static
struct
map_desc
badge4_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xf1000000
,
0x08000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* SRAM bank 1 */
...
...
@@ -170,7 +163,6 @@ static void __init badge4_map_io(void)
MACHINE_START
(
BADGE4
,
"Hewlett-Packard Laboratories BadgePAD 4"
)
BOOT_MEM
(
0xc0000000
,
0x80000000
,
0xf8000000
)
BOOT_PARAMS
(
0xc0000100
)
FIXUP
(
fixup_badge4
)
MAPIO
(
badge4_map_io
)
INITIRQ
(
sa1100_init_irq
)
MACHINE_END
arch/arm/mach-sa1100/brutus.c
View file @
32e5dbb6
...
...
@@ -23,7 +23,7 @@
static
void
__init
fixup_brutus
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_brutus
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
SET_BANK
(
0
,
0xc0000000
,
4
*
1024
*
1024
);
...
...
arch/arm/mach-sa1100/cerf.c
View file @
32e5dbb6
...
...
@@ -36,7 +36,7 @@ static void __init cerf_init_irq(void)
}
static
void
__init
fixup_cerf
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_cerf
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
#if defined(CONFIG_SA1100_CERF_64MB)
...
...
arch/arm/mach-sa1100/empeg.c
View file @
32e5dbb6
...
...
@@ -17,7 +17,7 @@
static
void
__init
fixup_empeg
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_empeg
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
SET_BANK
(
0
,
0xc0000000
,
4
*
1024
*
1024
);
...
...
arch/arm/mach-sa1100/flexanet.c
View file @
32e5dbb6
...
...
@@ -152,13 +152,9 @@ __initcall(flexanet_init);
static
void
__init
fixup_flexanet
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_flexanet
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
int
status
;
unsigned
long
now
;
/* fixed RAM size, by now (64MB) */
SET_BANK
(
0
,
0xc0000000
,
64
*
1024
*
1024
);
mi
->
nr_banks
=
1
;
...
...
arch/arm/mach-sa1100/freebird.c
View file @
32e5dbb6
...
...
@@ -52,7 +52,7 @@ static int __init freebird_init(void)
__initcall
(
freebird_init
);
static
void
__init
fixup_freebird
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_freebird
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
#ifdef CONFIG_SA1100_FREEBIRD_OLD
...
...
arch/arm/mach-sa1100/graphicsclient.c
View file @
32e5dbb6
...
...
@@ -125,7 +125,7 @@ static void __init graphicsclient_init_irq(void)
*/
static
void
__init
fixup_graphicsclient
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_graphicsclient
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
SET_BANK
(
0
,
0xc0000000
,
16
*
1024
*
1024
);
...
...
arch/arm/mach-sa1100/graphicsmaster.c
View file @
32e5dbb6
...
...
@@ -157,7 +157,7 @@ static void __init graphicsmaster_init_irq(void)
*/
static
void
__init
fixup_graphicsmaster
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_graphicsmaster
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
SET_BANK
(
0
,
0xc0000000
,
16
*
1024
*
1024
);
...
...
arch/arm/mach-sa1100/huw_webpanel.c
View file @
32e5dbb6
...
...
@@ -55,7 +55,7 @@ __initcall(init_huw_cs3);
static
void
__init
fixup_huw_webpanel
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_huw_webpanel
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
/**
...
...
arch/arm/mach-sa1100/irq.c
View file @
32e5dbb6
...
...
@@ -40,32 +40,30 @@ static void sa1100_manual_rerun(unsigned int irq)
irq_desc
[
irq
].
handle
(
irq
,
&
irq_desc
[
irq
],
&
regs
);
}
/*
* To get the GPIO number from an IRQ number
*/
#define GPIO_11_27_IRQ(i) ((i) - 21)
#define GPIO11_27_MASK(irq) (1 << GPIO_11_27_IRQ(irq))
static
int
sa1100_gpio_type
(
unsigned
int
irq
,
unsigned
int
type
)
{
unsigned
int
mask
;
printk
(
KERN_DEBUG
"IRQ%d: "
,
irq
);
if
(
irq
<=
10
)
mask
=
1
<<
irq
;
else
mask
=
GPIO11_27_MASK
(
irq
);
if
(
type
&
__IRQT_RISEDGE
)
{
printk
(
"rising "
);
GPIO_IRQ_rising_edge
|=
mask
;
}
else
GPIO_IRQ_rising_edge
&=
~
mask
;
if
(
type
&
__IRQT_FALEDGE
)
{
printk
(
"falling "
);
GPIO_IRQ_falling_edge
|=
mask
;
}
else
GPIO_IRQ_falling_edge
&=
~
mask
;
printk
(
"edges
\n
"
);
GRER
=
GPIO_IRQ_rising_edge
&
GPIO_IRQ_mask
;
GFER
=
GPIO_IRQ_falling_edge
&
GPIO_IRQ_mask
;
...
...
arch/arm/mach-sa1100/itsy.c
View file @
32e5dbb6
...
...
@@ -17,7 +17,7 @@
static
void
__init
fixup_itsy
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_itsy
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
SET_BANK
(
0
,
0xc0000000
,
16
*
1024
*
1024
);
...
...
arch/arm/mach-sa1100/jornada720.c
View file @
32e5dbb6
...
...
@@ -57,7 +57,7 @@ __initcall(jornada720_init);
static
void
__init
fixup_jornada720
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_jornada720
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
SET_BANK
(
0
,
0xc0000000
,
32
*
1024
*
1024
);
...
...
arch/arm/mach-sa1100/nanoengine.c
View file @
32e5dbb6
...
...
@@ -17,7 +17,7 @@
static
void
__init
fixup_nanoengine
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_nanoengine
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
SET_BANK
(
0
,
0xc0000000
,
32
*
1024
*
1024
);
...
...
arch/arm/mach-sa1100/neponset.c
View file @
32e5dbb6
...
...
@@ -84,7 +84,7 @@ neponset_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *reg
}
}
static
void
__init
neponset_init_irq
(
void
)
static
inline
void
__init
neponset_init_irq
(
void
)
{
/*
* Install handler for GPIO25.
...
...
@@ -102,6 +102,64 @@ static void __init neponset_init_irq(void)
set_irq_flags
(
IRQ_NEPONSET_USAR
,
IRQF_VALID
|
IRQF_PROBE
);
}
static
void
neponset_set_mctrl
(
struct
uart_port
*
port
,
u_int
mctrl
)
{
u_int
mdm_ctl0
=
MDM_CTL_0
;
if
(
port
->
mapbase
==
_Ser1UTCR0
)
{
if
(
mctrl
&
TIOCM_RTS
)
mdm_ctl0
&=
~
MDM_CTL0_RTS2
;
else
mdm_ctl0
|=
MDM_CTL0_RTS2
;
if
(
mctrl
&
TIOCM_DTR
)
mdm_ctl0
&=
~
MDM_CTL0_DTR2
;
else
mdm_ctl0
|=
MDM_CTL0_DTR2
;
}
else
if
(
port
->
mapbase
==
_Ser3UTCR0
)
{
if
(
mctrl
&
TIOCM_RTS
)
mdm_ctl0
&=
~
MDM_CTL0_RTS1
;
else
mdm_ctl0
|=
MDM_CTL0_RTS1
;
if
(
mctrl
&
TIOCM_DTR
)
mdm_ctl0
&=
~
MDM_CTL0_DTR1
;
else
mdm_ctl0
|=
MDM_CTL0_DTR1
;
}
MDM_CTL_0
=
mdm_ctl0
;
}
static
u_int
neponset_get_mctrl
(
struct
uart_port
*
port
)
{
u_int
ret
=
TIOCM_CD
|
TIOCM_CTS
|
TIOCM_DSR
;
u_int
mdm_ctl1
=
MDM_CTL_1
;
if
(
port
->
mapbase
==
_Ser1UTCR0
)
{
if
(
mdm_ctl1
&
MDM_CTL1_DCD2
)
ret
&=
~
TIOCM_CD
;
if
(
mdm_ctl1
&
MDM_CTL1_CTS2
)
ret
&=
~
TIOCM_CTS
;
if
(
mdm_ctl1
&
MDM_CTL1_DSR2
)
ret
&=
~
TIOCM_DSR
;
}
else
if
(
port
->
mapbase
==
_Ser3UTCR0
)
{
if
(
mdm_ctl1
&
MDM_CTL1_DCD1
)
ret
&=
~
TIOCM_CD
;
if
(
mdm_ctl1
&
MDM_CTL1_CTS1
)
ret
&=
~
TIOCM_CTS
;
if
(
mdm_ctl1
&
MDM_CTL1_DSR1
)
ret
&=
~
TIOCM_DSR
;
}
return
ret
;
}
static
struct
sa1100_port_fns
neponset_port_fns
__initdata
=
{
set_mctrl:
neponset_set_mctrl
,
get_mctrl:
neponset_get_mctrl
,
};
static
int
__init
neponset_init
(
void
)
{
int
ret
;
...
...
@@ -134,12 +192,14 @@ static int __init neponset_init(void)
if
(
ret
)
return
ret
;
sa1100_register_uart_fns
(
&
neponset_port_fns
);
neponset_init_irq
();
/*
* Disable GPIO 0/1 drivers so the buttons work on the module.
*/
NCR_0
|
=
NCR_GP01_OFF
;
NCR_0
=
NCR_GP01_OFF
;
/*
* Neponset has SA1111 connected to CS4. We know that after
...
...
@@ -162,67 +222,7 @@ static struct map_desc neponset_io_desc[] __initdata = {
LAST_DESC
};
static
void
neponset_set_mctrl
(
struct
uart_port
*
port
,
u_int
mctrl
)
{
u_int
mdm_ctl0
=
MDM_CTL_0
;
if
(
port
->
mapbase
==
_Ser1UTCR0
)
{
if
(
mctrl
&
TIOCM_RTS
)
mdm_ctl0
&=
~
MDM_CTL0_RTS2
;
else
mdm_ctl0
|=
MDM_CTL0_RTS2
;
if
(
mctrl
&
TIOCM_DTR
)
mdm_ctl0
&=
~
MDM_CTL0_DTR2
;
else
mdm_ctl0
|=
MDM_CTL0_DTR2
;
}
else
if
(
port
->
mapbase
==
_Ser3UTCR0
)
{
if
(
mctrl
&
TIOCM_RTS
)
mdm_ctl0
&=
~
MDM_CTL0_RTS1
;
else
mdm_ctl0
|=
MDM_CTL0_RTS1
;
if
(
mctrl
&
TIOCM_DTR
)
mdm_ctl0
&=
~
MDM_CTL0_DTR1
;
else
mdm_ctl0
|=
MDM_CTL0_DTR1
;
}
MDM_CTL_0
=
mdm_ctl0
;
}
static
u_int
neponset_get_mctrl
(
struct
uart_port
*
port
)
{
u_int
ret
=
TIOCM_CD
|
TIOCM_CTS
|
TIOCM_DSR
;
u_int
mdm_ctl1
=
MDM_CTL_1
;
if
(
port
->
mapbase
==
_Ser1UTCR0
)
{
if
(
mdm_ctl1
&
MDM_CTL1_DCD2
)
ret
&=
~
TIOCM_CD
;
if
(
mdm_ctl1
&
MDM_CTL1_CTS2
)
ret
&=
~
TIOCM_CTS
;
if
(
mdm_ctl1
&
MDM_CTL1_DSR2
)
ret
&=
~
TIOCM_DSR
;
}
else
if
(
port
->
mapbase
==
_Ser3UTCR0
)
{
if
(
mdm_ctl1
&
MDM_CTL1_DCD1
)
ret
&=
~
TIOCM_CD
;
if
(
mdm_ctl1
&
MDM_CTL1_CTS1
)
ret
&=
~
TIOCM_CTS
;
if
(
mdm_ctl1
&
MDM_CTL1_DSR1
)
ret
&=
~
TIOCM_DSR
;
}
return
ret
;
}
static
struct
sa1100_port_fns
neponset_port_fns
__initdata
=
{
set_mctrl:
neponset_set_mctrl
,
get_mctrl:
neponset_get_mctrl
,
};
void
__init
neponset_map_io
(
void
)
{
iotable_init
(
neponset_io_desc
);
if
(
machine_has_neponset
())
sa1100_register_uart_fns
(
&
neponset_port_fns
);
}
arch/arm/mach-sa1100/omnimeter.c
View file @
32e5dbb6
...
...
@@ -41,7 +41,7 @@ static int __init omnimeter_init(void)
__initcall
(
omnimeter_init
);
static
void
__init
fixup_omnimeter
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_omnimeter
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
SET_BANK
(
0
,
0xc0000000
,
16
*
1024
*
1024
);
...
...
arch/arm/mach-sa1100/pangolin.c
View file @
32e5dbb6
...
...
@@ -17,7 +17,7 @@
static
void
__init
fixup_pangolin
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_pangolin
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
SET_BANK
(
0
,
0xc0000000
,
128
*
1024
*
1024
);
...
...
arch/arm/mach-sa1100/pfs168.c
View file @
32e5dbb6
...
...
@@ -57,7 +57,7 @@ static void __init pfs168_init_irq(void)
static
void
__init
fixup_pfs168
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_pfs168
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
SET_BANK
(
0
,
0xc0000000
,
16
*
1024
*
1024
);
...
...
arch/arm/mach-sa1100/pleb.c
View file @
32e5dbb6
...
...
@@ -16,7 +16,7 @@
#include "generic.h"
static
void
__init
fixup_pleb
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_pleb
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
SET_BANK
(
0
,
0xc0000000
,
16
*
1024
*
1024
);
...
...
arch/arm/mach-sa1100/sherman.c
View file @
32e5dbb6
...
...
@@ -17,7 +17,7 @@
static
void
__init
fixup_sherman
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_sherman
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
SET_BANK
(
0
,
0xc0000000
,
64
*
1024
*
1024
);
...
...
arch/arm/mach-sa1100/simpad.c
View file @
32e5dbb6
...
...
@@ -41,7 +41,7 @@ void clear_cs3_bit(int value)
}
static
void
__init
fixup_simpad
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_simpad
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
#ifdef CONFIG_SA1100_SIMPAD_DRAM_64MB
/* DRAM */
...
...
arch/arm/mach-sa1100/system3.c
View file @
32e5dbb6
...
...
@@ -74,7 +74,7 @@
/* init funcs */
static
void
__init
fixup_system3
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
char
**
cmdline
,
struct
meminfo
*
mi
);
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
);
static
int
__init
system3_init
(
void
);
static
void
__init
system3_init_irq
(
void
);
static
void
__init
system3_map_io
(
void
);
...
...
@@ -87,8 +87,6 @@ static int sdram_notifier(struct notifier_block *nb, unsigned long event, void *
static
void
system3_lcd_power
(
int
on
);
static
void
system3_backlight_power
(
int
on
);
extern
void
convert_to_tag_list
(
struct
param_struct
*
params
,
int
mem_init
);
/**********************************************************************
* global data
...
...
@@ -239,7 +237,7 @@ static int sdram_notifier(struct notifier_block *nb, unsigned long event,
*
*/
static
void
__init
fixup_system3
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
DPRINTK
(
"%s
\n
"
,
"START"
);
...
...
arch/arm/mach-sa1100/victor.c
View file @
32e5dbb6
...
...
@@ -42,7 +42,7 @@ __initcall(victor_init);
static
void
__init
fixup_victor
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_victor
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
SET_BANK
(
0
,
0xc0000000
,
4
*
1024
*
1024
);
...
...
arch/arm/mach-sa1100/xp860.c
View file @
32e5dbb6
...
...
@@ -58,7 +58,7 @@ __initcall(xp860_init);
static
void
__init
fixup_xp860
(
struct
machine_desc
*
desc
,
struct
param_struct
*
param
s
,
fixup_xp860
(
struct
machine_desc
*
desc
,
struct
tag
*
tag
s
,
char
**
cmdline
,
struct
meminfo
*
mi
)
{
SET_BANK
(
0
,
0xc0000000
,
32
*
1024
*
1024
);
...
...
arch/arm/mm/Makefile
View file @
32e5dbb6
...
...
@@ -29,15 +29,21 @@ obj-$(CONFIG_DISCONTIGMEM) += discontig.o
# Select the processor-specific files
p-$(CONFIG_CPU_26)
+=
proc-arm2,3.o
# ARMv3
p-$(CONFIG_CPU_ARM610)
+=
proc-arm6,7.o tlb-v3.o copypage-v3.o
p-$(CONFIG_CPU_ARM710)
+=
proc-arm6,7.o tlb-v3.o copypage-v3.o
p-$(CONFIG_CPU_ARM720T)
+=
proc-arm720.o tlb-v4.o copypage-v4.o abort-lv4t.o
p-$(CONFIG_CPU_ARM920T)
+=
proc-arm920.o tlb-v4wb.o copypage-v4.o abort-ev4t.o
p-$(CONFIG_CPU_ARM922T)
+=
proc-arm922.o tlb-v4wb.o copypage-v4.o abort-ev4t.o
p-$(CONFIG_CPU_ARM926T)
+=
proc-arm926.o tlb-v4wb.o copypage-v4.o abort-ev5ej.o
p-$(CONFIG_CPU_ARM1020)
+=
proc-arm1020.o tlb-v4wb.o copypage-v4.o abort-ev4t.o
p-$(CONFIG_CPU_SA110)
+=
proc-sa110.o tlb-v4wb.o copypage-v4.o copypage-v4mc.o abort-ev4.o minicache.o
p-$(CONFIG_CPU_SA1100)
+=
proc-sa110.o tlb-v4wb.o copypage-v4.o copypage-v4mc.o abort-ev4.o minicache.o
# ARMv4
p-$(CONFIG_CPU_ARM720T)
+=
proc-arm720.o tlb-v4.o copypage-v4wt.o abort-lv4t.o
p-$(CONFIG_CPU_ARM920T)
+=
proc-arm920.o tlb-v4wb.o copypage-v4wb.o abort-ev4t.o
p-$(CONFIG_CPU_ARM922T)
+=
proc-arm922.o tlb-v4wb.o copypage-v4wb.o abort-ev4t.o
p-$(CONFIG_CPU_ARM1020)
+=
proc-arm1020.o tlb-v4wb.o copypage-v4wb.o abort-ev4t.o
p-$(CONFIG_CPU_SA110)
+=
proc-sa110.o tlb-v4wb.o copypage-v4wb.o abort-ev4.o minicache.o
p-$(CONFIG_CPU_SA1100)
+=
proc-sa110.o tlb-v4wb.o copypage-v4mc.o abort-ev4.o minicache.o
# ARMv5
p-$(CONFIG_CPU_ARM926T)
+=
proc-arm926.o tlb-v4wb.o copypage-v4wb.o abort-ev5ej.o
p-$(CONFIG_CPU_XSCALE)
+=
proc-xscale.o tlb-v4wb.o copypage-v5te.o abort-ev4t.o minicache.o
obj-y
+=
$(
sort
$
(
p-y
))
...
...
arch/arm/mm/consistent.c
View file @
32e5dbb6
...
...
@@ -52,7 +52,8 @@ void *consistent_alloc(int gfp, size_t size, dma_addr_t *dma_handle)
goto
no_page
;
*
dma_handle
=
page_to_bus
(
page
);
ret
=
__ioremap
(
page_to_phys
(
page
),
size
,
0
);
ret
=
__ioremap
(
page_to_pfn
(
page
)
<<
PAGE_SHIFT
,
size
,
0
,
PAGE_SIZE
<<
order
);
if
(
!
ret
)
goto
no_remap
;
...
...
arch/arm/mm/copypage-v4.S
→
arch/arm/mm/copypage-v4
wb
.S
View file @
32e5dbb6
...
...
@@ -26,7 +26,7 @@
*
instruction
.
If
your
processor
does
not
supply
this
,
you
have
to
write
your
*
own
copy_user_page
that
does
the
right
thing
.
*/
ENTRY
(
v4_copy_user_page
)
ENTRY
(
v4
wb
_copy_user_page
)
stmfd
sp
!,
{
r4
,
lr
}
@
2
mov
r2
,
#
PAGE_SZ
/
64
@
1
ldmia
r1
!,
{
r3
,
r4
,
ip
,
lr
}
@
4
...
...
@@ -51,7 +51,7 @@ ENTRY(v4_copy_user_page)
*
*
Same
story
as
above
.
*/
ENTRY
(
v4_clear_user_page
)
ENTRY
(
v4
wb
_clear_user_page
)
str
lr
,
[
sp
,
#-
4
]!
mov
r1
,
#
PAGE_SZ
/
64
@
1
mov
r2
,
#
0
@
1
...
...
@@ -71,7 +71,7 @@ ENTRY(v4_clear_user_page)
.
section
".text.init"
,
#
alloc
,
#
execinstr
ENTRY
(
v4_user_fns
)
.
long
v4_clear_user_page
.
long
v4_copy_user_page
ENTRY
(
v4
wb
_user_fns
)
.
long
v4
wb
_clear_user_page
.
long
v4
wb
_copy_user_page
arch/arm/mm/copypage-v4wt.S
0 → 100644
View file @
32e5dbb6
/*
*
linux
/
arch
/
arm
/
lib
/
copypage
-
v4
.
S
*
*
Copyright
(
C
)
1995
-
1999
Russell
King
*
*
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
*
published
by
the
Free
Software
Foundation
.
*
*
ASM
optimised
string
functions
*
*
This
is
for
CPUs
with
a
writethrough
cache
and
'flush ID cache'
is
*
the
only
supported
cache
operation
.
*/
#include <linux/linkage.h>
#include <asm/constants.h>
.
text
.
align
5
/*
*
ARMv4
optimised
copy_user_page
*
*
Since
we
have
writethrough
caches
,
we
don
't have to worry about
*
dirty
data
in
the
cache
.
However
,
we
do
have
to
ensure
that
*
subsequent
reads
are
up
to
date
.
*/
ENTRY
(
v4wt_copy_user_page
)
stmfd
sp
!,
{
r4
,
lr
}
@
2
mov
r2
,
#
PAGE_SZ
/
64
@
1
ldmia
r1
!,
{
r3
,
r4
,
ip
,
lr
}
@
4
1
:
stmia
r0
!,
{
r3
,
r4
,
ip
,
lr
}
@
4
ldmia
r1
!,
{
r3
,
r4
,
ip
,
lr
}
@
4
+
1
stmia
r0
!,
{
r3
,
r4
,
ip
,
lr
}
@
4
ldmia
r1
!,
{
r3
,
r4
,
ip
,
lr
}
@
4
stmia
r0
!,
{
r3
,
r4
,
ip
,
lr
}
@
4
ldmia
r1
!,
{
r3
,
r4
,
ip
,
lr
}
@
4
subs
r2
,
r2
,
#
1
@
1
stmia
r0
!,
{
r3
,
r4
,
ip
,
lr
}
@
4
ldmneia
r1
!,
{
r3
,
r4
,
ip
,
lr
}
@
4
bne
1
b
@
1
mcr
p15
,
0
,
r2
,
c7
,
c7
,
0
@
flush
ID
cache
ldmfd
sp
!,
{
r4
,
pc
}
@
3
.
align
5
/*
*
ARMv4
optimised
clear_user_page
*
*
Same
story
as
above
.
*/
ENTRY
(
v4wt_clear_user_page
)
str
lr
,
[
sp
,
#-
4
]!
mov
r1
,
#
PAGE_SZ
/
64
@
1
mov
r2
,
#
0
@
1
mov
r3
,
#
0
@
1
mov
ip
,
#
0
@
1
mov
lr
,
#
0
@
1
1
:
stmia
r0
!,
{
r2
,
r3
,
ip
,
lr
}
@
4
stmia
r0
!,
{
r2
,
r3
,
ip
,
lr
}
@
4
stmia
r0
!,
{
r2
,
r3
,
ip
,
lr
}
@
4
stmia
r0
!,
{
r2
,
r3
,
ip
,
lr
}
@
4
subs
r1
,
r1
,
#
1
@
1
bne
1
b
@
1
mcr
p15
,
0
,
r2
,
c7
,
c7
,
0
@
flush
ID
cache
ldr
pc
,
[
sp
],
#
4
.
section
".text.init"
,
#
alloc
,
#
execinstr
ENTRY
(
v4wt_user_fns
)
.
long
v4wt_clear_user_page
.
long
v4wt_copy_user_page
arch/arm/mm/proc-arm1020.S
View file @
32e5dbb6
...
...
@@ -557,5 +557,5 @@ __arm1020_proc_info:
.
long
cpu_arm1020_info
.
long
arm1020_processor_functions
.
long
v4wbi_tlb_fns
.
long
v4_user_fns
.
long
v4
wb
_user_fns
.
size
__arm1020_proc_info
,
.
-
__arm1020_proc_info
arch/arm/mm/proc-arm720.S
View file @
32e5dbb6
...
...
@@ -261,5 +261,5 @@ __arm720_proc_info:
.
long
cpu_arm720_info
@
info
.
long
arm720_processor_functions
.
long
v4_tlb_fns
.
long
v4_user_fns
.
long
v4
wt
_user_fns
.
size
__arm720_proc_info
,
.
-
__arm720_proc_info
arch/arm/mm/proc-arm920.S
View file @
32e5dbb6
...
...
@@ -543,5 +543,5 @@ __arm920_proc_info:
.
long
cpu_arm920_info
.
long
arm920_processor_functions
.
long
v4wbi_tlb_fns
.
long
v4_user_fns
.
long
v4
wb
_user_fns
.
size
__arm920_proc_info
,
.
-
__arm920_proc_info
arch/arm/mm/proc-arm922.S
View file @
32e5dbb6
...
...
@@ -544,5 +544,5 @@ __arm922_proc_info:
.
long
cpu_arm922_info
.
long
arm922_processor_functions
.
long
v4wbi_tlb_fns
.
long
v4_user_fns
.
long
v4
wb
_user_fns
.
size
__arm922_proc_info
,
.
-
__arm922_proc_info
arch/arm/mm/proc-arm926.S
View file @
32e5dbb6
...
...
@@ -542,5 +542,5 @@ __arm926_proc_info:
.
long
cpu_arm926_info
.
long
arm926_processor_functions
.
long
v4wbi_tlb_fns
.
long
v4_user_fns
.
long
v4
wb
_user_fns
.
size
__arm926_proc_info
,
.
-
__arm926_proc_info
arch/arm/mm/proc-sa110.S
View file @
32e5dbb6
...
...
@@ -611,6 +611,7 @@ cpu_elf_name:
.
section
".proc.info"
,
#
alloc
,
#
execinstr
#ifdef CONFIG_CPU_SA110
.
type
__sa110_proc_info
,#
object
__sa110_proc_info
:
.
long
0x4401a100
...
...
@@ -623,9 +624,11 @@ __sa110_proc_info:
.
long
cpu_sa110_info
.
long
sa110_processor_functions
.
long
v4wb_tlb_fns
.
long
v4_user_fns
.
long
v4
wb
_user_fns
.
size
__sa110_proc_info
,
.
-
__sa110_proc_info
#endif
#ifdef CONFIG_CPU_SA1100
.
type
__sa1100_proc_info
,#
object
__sa1100_proc_info
:
.
long
0x4401a110
...
...
@@ -655,3 +658,4 @@ __sa1110_proc_info:
.
long
v4wb_tlb_fns
.
long
v4_mc_user_fns
.
size
__sa1110_proc_info
,
.
-
__sa1110_proc_info
#endif
arch/arm/mm/tlb-v4.S
View file @
32e5dbb6
...
...
@@ -55,14 +55,13 @@ ENTRY(v4_flush_user_tlb_range)
eors
r3
,
ip
,
r3
@
==
mm
?
movne
pc
,
lr
@
no
,
we
dont
do
anything
vma_vm_flags
ip
,
r2
.
v4_flush_kern_tlb_range
:
bic
r0
,
r0
,
#
0x0ff
bic
r0
,
r0
,
#
0xf00
1
:
mcr
p15
,
0
,
r0
,
c8
,
c
6
,
1
@
invalidate
D
TLB
entry
1
:
mcr
p15
,
0
,
r0
,
c8
,
c
7
,
1
@
invalidate
TLB
entry
add
r0
,
r0
,
#
PAGE_SZ
cmp
r0
,
r1
blo
1
b
tst
ip
,
#
VM_EXEC
mcrne
p15
,
0
,
r3
,
c8
,
c5
,
0
@
invalidate
I
TLB
mov
pc
,
lr
/*
...
...
@@ -80,9 +79,8 @@ ENTRY(v4_flush_user_tlb_page)
teq
r2
,
r3
@
equal
movne
pc
,
lr
@
no
vma_vm_flags
r2
,
r1
mcr
p15
,
0
,
r0
,
c8
,
c6
,
1
@
invalidate
D
TLB
entry
tst
r2
,
#
VM_EXEC
mcrne
p15
,
0
,
r3
,
c8
,
c5
,
0
@
invalidate
I
TLB
.
v4_flush_kern_tlb_page
:
mcr
p15
,
0
,
r0
,
c8
,
c7
,
1
@
invalidate
TLB
entry
mov
pc
,
lr
/*
...
...
@@ -94,16 +92,8 @@ ENTRY(v4_flush_user_tlb_page)
*
-
start
-
virtual
address
(
may
not
be
aligned
)
*
-
end
-
virtual
address
(
may
not
be
aligned
)
*/
.
align
5
ENTRY
(
v4_flush_kern_tlb_range
)
bic
r0
,
r0
,
#
0x0ff
bic
r0
,
r0
,
#
0xf00
1
:
mcr
p15
,
0
,
r0
,
c8
,
c6
,
1
@
invalidate
D
TLB
entry
add
r0
,
r0
,
#
PAGE_SZ
cmp
r0
,
r1
blo
1
b
mcr
p15
,
0
,
r3
,
c8
,
c5
,
0
@
invalidate
I
TLB
mov
pc
,
lr
.
globl
v4_flush_kern_tlb_range
.
equ
v4_flush_kern_tlb_range
,
.
v4_flush_kern_tlb_range
/*
...
...
@@ -115,9 +105,8 @@ ENTRY(v4_flush_kern_tlb_range)
*
*
-
kaddr
-
Kernel
virtual
memory
address
*/
ENTRY
(
v4_flush_kern_tlb_page
)
mcr
p15
,
0
,
r0
,
c8
,
c6
,
1
@
invalidate
D
TLB
entry
mov
pc
,
lr
.
globl
v4_flush_kern_tlb_page
.
equ
v4_flush_kern_tlb_page
,
.
v4_flush_kern_tlb_page
.
section
".text.init"
,
#
alloc
,
#
execinstr
...
...
fs/adfs/adfs.h
View file @
32e5dbb6
...
...
@@ -77,7 +77,7 @@ void adfs_write_inode(struct inode *inode,int unused);
int
adfs_notify_change
(
struct
dentry
*
dentry
,
struct
iattr
*
attr
);
/* map.c */
extern
int
adfs_map_lookup
(
struct
super_block
*
sb
,
int
frag_id
,
int
offset
);
extern
int
adfs_map_lookup
(
struct
super_block
*
sb
,
unsigned
int
frag_id
,
unsigned
int
offset
);
extern
unsigned
int
adfs_map_free
(
struct
super_block
*
sb
);
/* Misc */
...
...
fs/adfs/dir.c
View file @
32e5dbb6
...
...
@@ -24,7 +24,7 @@
/*
* For future. This should probably be per-directory.
*/
static
rwlock_t
adfs_dir_lock
;
static
rwlock_t
adfs_dir_lock
=
RW_LOCK_UNLOCKED
;
static
int
adfs_readdir
(
struct
file
*
filp
,
void
*
dirent
,
filldir_t
filldir
)
...
...
fs/adfs/map.c
View file @
32e5dbb6
/*
* linux/fs/adfs/map.c
*
* Copyright (C) 1997-
1999
Russell King
* Copyright (C) 1997-
2002
Russell King
*
* 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
...
...
@@ -13,30 +13,64 @@
#include <linux/adfs_fs.h>
#include <linux/spinlock.h>
#include <asm/unaligned.h>
#include "adfs.h"
/*
* The ADFS map is basically a set of sectors. Each sector is called a
* zone which contains a bitstream made up of variable sized fragments.
* Each bit refers to a set of bytes in the filesystem, defined by
* log2bpmb. This may be larger or smaller than the sector size, but
* the overall size it describes will always be a round number of
* sectors. A fragment id is always idlen bits long.
*
* < idlen > < n > <1>
* +---------+-------//---------+---+
* | frag id | 0000....000000 | 1 |
* +---------+-------//---------+---+
*
* The physical disk space used by a fragment is taken from the start of
* the fragment id up to and including the '1' bit - ie, idlen + n + 1
* bits.
*
* A fragment id can be repeated multiple times in the whole map for
* large or fragmented files. The first map zone a fragment starts in
* is given by fragment id / ids_per_zone - this allows objects to start
* from any zone on the disk.
*
* Free space is described by a linked list of fragments. Each free
* fragment describes free space in the same way as the other fragments,
* however, the frag id specifies an offset (in map bits) from the end
* of this fragment to the start of the next free fragment.
*
* Objects stored on the disk are allocated object ids (we use these as
* our inode numbers.) Object ids contain a fragment id and an optional
* offset. This allows a directory fragment to contain small files
* associated with that directory.
*/
/*
* For the future...
*/
static
rwlock_t
adfs_map_lock
;
static
rwlock_t
adfs_map_lock
=
RW_LOCK_UNLOCKED
;
/*
* This is fun. We need to load up to 19 bits from the map at an
* arbitary bit alignment. (We're limited to 19 bits by F+ version 2).
*/
#define GET_FRAG_ID(_map,_start,_idmask) \
({ \
unsigned long _v2, _frag; \
unsigned int _tmp; \
_tmp = _start >> 5; \
_frag = le32_to_cpu(_map[_tmp]); \
_v2 = le32_to_cpu(_map[_tmp + 1]); \
_tmp = start & 31; \
_frag = (_frag >> _tmp) | (_v2 << (32 - _tmp)); \
unsigned char *_m = _map + (_start >> 3); \
u32 _frag = get_unaligned((u32 *)_m); \
_frag >>= (_start & 7); \
_frag & _idmask; \
})
/*
* return the map bit offset of the fragment frag_id in
* the zone dm.
* Note that the loop is optimised for best asm code -
* look at the output of:
* return the map bit offset of the fragment frag_id in the zone dm.
* Note that the loop is optimised for best asm code - look at the
* output of:
* gcc -D__KERNEL__ -O2 -I../../include -o - -S map.c
*/
static
int
...
...
@@ -44,14 +78,13 @@ lookup_zone(const struct adfs_discmap *dm, const unsigned int idlen,
const
unsigned
int
frag_id
,
unsigned
int
*
offset
)
{
const
unsigned
int
mapsize
=
dm
->
dm_endbit
;
const
u
nsigned
int
idmask
=
(
1
<<
idlen
)
-
1
;
unsigned
long
*
map
=
((
unsigned
long
*
)
dm
->
dm_bh
->
b_data
)
+
1
;
const
u
32
idmask
=
(
1
<<
idlen
)
-
1
;
unsigned
char
*
map
=
dm
->
dm_bh
->
b_data
+
4
;
unsigned
int
start
=
dm
->
dm_startbit
;
unsigned
int
mapptr
;
u32
frag
;
do
{
unsigned
long
frag
;
frag
=
GET_FRAG_ID
(
map
,
start
,
idmask
);
mapptr
=
start
+
idlen
;
...
...
@@ -59,15 +92,17 @@ lookup_zone(const struct adfs_discmap *dm, const unsigned int idlen,
* find end of fragment
*/
{
u
nsigned
long
v2
;
u
32
v
,
*
_map
=
(
u32
*
)
map
;
while
((
v2
=
map
[
mapptr
>>
5
]
>>
(
mapptr
&
31
))
==
0
)
{
v
=
le32_to_cpu
(
_map
[
mapptr
>>
5
])
>>
(
mapptr
&
31
);
while
(
v
==
0
)
{
mapptr
=
(
mapptr
&
~
31
)
+
32
;
if
(
mapptr
>=
mapsize
)
goto
error
;
v
=
le32_to_cpu
(
_map
[
mapptr
>>
5
]);
}
mapptr
+=
1
+
ffz
(
~
v
2
);
mapptr
+=
1
+
ffz
(
~
v
);
}
if
(
frag
==
frag_id
)
...
...
@@ -75,8 +110,11 @@ lookup_zone(const struct adfs_discmap *dm, const unsigned int idlen,
again:
start
=
mapptr
;
}
while
(
mapptr
<
mapsize
);
return
-
1
;
error:
printk
(
KERN_ERR
"adfs: oversized fragment 0x%x at 0x%x-0x%x
\n
"
,
frag
,
start
,
mapptr
);
return
-
1
;
found:
...
...
@@ -102,10 +140,10 @@ scan_free_map(struct adfs_sb_info *asb, struct adfs_discmap *dm)
const
unsigned
int
mapsize
=
dm
->
dm_endbit
+
32
;
const
unsigned
int
idlen
=
asb
->
s_idlen
;
const
unsigned
int
frag_idlen
=
idlen
<=
15
?
idlen
:
15
;
const
u
nsigned
int
idmask
=
(
1
<<
frag_idlen
)
-
1
;
unsigned
long
*
map
=
(
unsigned
long
*
)
dm
->
dm_bh
->
b_data
;
const
u
32
idmask
=
(
1
<<
frag_idlen
)
-
1
;
unsigned
char
*
map
=
dm
->
dm_bh
->
b_data
;
unsigned
int
start
=
8
,
mapptr
;
u
nsigned
long
frag
;
u
32
frag
;
unsigned
long
total
=
0
;
/*
...
...
@@ -133,15 +171,17 @@ scan_free_map(struct adfs_sb_info *asb, struct adfs_discmap *dm)
* find end of fragment
*/
{
u
nsigned
long
v2
;
u
32
v
,
*
_map
=
(
u32
*
)
map
;
while
((
v2
=
map
[
mapptr
>>
5
]
>>
(
mapptr
&
31
))
==
0
)
{
v
=
le32_to_cpu
(
_map
[
mapptr
>>
5
])
>>
(
mapptr
&
31
);
while
(
v
==
0
)
{
mapptr
=
(
mapptr
&
~
31
)
+
32
;
if
(
mapptr
>=
mapsize
)
goto
error
;
v
=
le32_to_cpu
(
_map
[
mapptr
>>
5
]);
}
mapptr
+=
1
+
ffz
(
~
v
2
);
mapptr
+=
1
+
ffz
(
~
v
);
}
total
+=
mapptr
-
start
;
...
...
@@ -212,7 +252,9 @@ adfs_map_free(struct super_block *sb)
return
signed_asl
(
total
,
asb
->
s_map2blk
);
}
int
adfs_map_lookup
(
struct
super_block
*
sb
,
int
frag_id
,
int
offset
)
int
adfs_map_lookup
(
struct
super_block
*
sb
,
unsigned
int
frag_id
,
unsigned
int
offset
)
{
struct
adfs_sb_info
*
asb
=
&
sb
->
u
.
adfs_sb
;
unsigned
int
zone
,
mapoff
;
...
...
@@ -245,12 +287,12 @@ int adfs_map_lookup (struct super_block *sb, int frag_id, int offset)
return
secoff
+
signed_asl
(
result
,
asb
->
s_map2blk
);
}
adfs_error
(
sb
,
"fragment
%04X
at offset %d not found in map"
,
adfs_error
(
sb
,
"fragment
0x%04x
at offset %d not found in map"
,
frag_id
,
offset
);
return
0
;
bad_fragment:
adfs_error
(
sb
,
"
fragment %X is invalid
(zone = %d, max = %d)"
,
adfs_error
(
sb
,
"
invalid fragment 0x%04x
(zone = %d, max = %d)"
,
frag_id
,
zone
,
asb
->
s_map_size
);
return
0
;
}
fs/adfs/super.c
View file @
32e5dbb6
...
...
@@ -64,43 +64,9 @@ static int adfs_checkdiscrecord(struct adfs_discrecord *dr)
if
(
dr
->
disc_size_high
>>
dr
->
log2secsize
)
return
1
;
/*
* The following checks are not required for F+
* stage 1.
*/
#if 0
/* idlen must be smaller be no greater than 15 */
if (dr->idlen > 15)
return 1;
/* nzones must be less than 128 for the root
* directory to be addressable
*/
if (dr->nzones >= 128 && dr->nzones_high == 0)
return 1;
/* root must be of the form 0x2.. */
if ((le32_to_cpu(dr->root) & 0xffffff00) != 0x00000200)
return 1;
#else
/*
* Stage 2 F+ does not require the following check
*/
#if 0
/* idlen must be no greater than 16 v2 [1.0] */
if (dr->idlen > 16)
return 1;
/* we can't handle F+ discs yet */
if (dr->format_version || dr->root_size)
return 1;
#else
/* idlen must be no greater than 19 v2 [1.0] */
if
(
dr
->
idlen
>
19
)
return
1
;
#endif
#endif
/* reserved bytes should be zero */
for
(
i
=
0
;
i
<
sizeof
(
dr
->
unused52
);
i
++
)
...
...
include/asm-arm/arch-clps711x/memory.h
View file @
32e5dbb6
...
...
@@ -120,9 +120,10 @@
(((unsigned long)(addr) - PAGE_OFFSET) >> NODE_MAX_MEM_SHIFT)
/*
* Given a p
hysical address
, convert it to a node id.
* Given a p
age frame number
, convert it to a node id.
*/
#define PHYS_TO_NID(addr) KVADDR_TO_NID(__phys_to_virt(addr))
#define PFN_TO_NID(pfn) \
(((pfn) - PHYS_PFN_OFFSET) >> (NODE_MAX_MEM_SHIFT - PAGE_SHIFT))
/*
* Given a kaddr, ADDR_TO_MAPBASE finds the owning node of the memory
...
...
@@ -131,30 +132,15 @@
#define ADDR_TO_MAPBASE(kaddr) \
NODE_MEM_MAP(KVADDR_TO_NID((unsigned long)(kaddr)))
#define PFN_TO_MAPBASE(pfn) NODE_MEM_MAP(PFN_TO_NID(pfn))
/*
* Given a kaddr, LOCAL_MAR_NR finds the owning node of the memory
* and returns the index corresponding to the appropriate page in the
* node's mem_map.
*/
#define LOCAL_MAP_NR(kaddr) \
(((unsigned long)(kaddr)-LOCAL_BASE_ADDR((kaddr))) >> PAGE_SHIFT)
/*
* Given a kaddr, virt_to_page returns a pointer to the corresponding
* mem_map entry.
*/
#define virt_to_page(kaddr) \
(ADDR_TO_MAPBASE(kaddr) + LOCAL_MAP_NR(kaddr))
/*
* VALID_PAGE returns a non-zero value if given page pointer is valid.
* This assumes all node's mem_maps are stored within the node they refer to.
*/
#define VALID_PAGE(page) \
({ unsigned int node = KVADDR_TO_NID(page); \
( (node < NR_NODES) && \
((unsigned)((page) - NODE_MEM_MAP(node)) < NODE_DATA(node)->node_size) ); \
})
#define LOCAL_MAP_NR(addr) \
(((unsigned long)(addr) & (NODE_MAX_MEM_SIZE - 1)) >> PAGE_SHIFT)
/*
* The PS7211 allows up to 256MB max per DRAM bank, but the EDB7211
...
...
@@ -167,40 +153,13 @@
#define NODE_MAX_MEM_SHIFT 24
#define NODE_MAX_MEM_SIZE (1<<NODE_MAX_MEM_SHIFT)
/*
* Given a mem_map_t, LOCAL_MAP_BASE finds the owning node for the
* physical page and returns the kaddr for the mem_map of that node.
*/
#define LOCAL_MAP_BASE(page) \
NODE_MEM_MAP(KVADDR_TO_NID((unsigned long)(page)))
/*
* Given a kaddr, LOCAL_BASE_ADDR finds the owning node of the memory
* and returns the kaddr corresponding to first physical page in the
* node's mem_map.
*/
#define LOCAL_BASE_ADDR(kaddr) ((unsigned long)(kaddr) & ~(NODE_MAX_MEM_SIZE-1))
/*
* With discontigmem, the conceptual mem_map array starts from PAGE_OFFSET.
* Given a kaddr, MAP_NR returns the appropriate global mem_map index so
* it matches the corresponding node's local mem_map.
*/
#define MAP_NR(kaddr) (LOCAL_MAP_NR((kaddr)) + \
(((unsigned long)ADDR_TO_MAPBASE((kaddr)) - PAGE_OFFSET) / \
sizeof(mem_map_t)))
#else
#define P
HYS_TO_NID(addr)
(0)
#define P
FN_TO_NID(pfn)
(0)
#endif
/* CONFIG_DISCONTIGMEM */
#endif
/* CONFIG_ARCH_EDB7211 */
#ifndef PHYS_TO_NID
#define PHYS_TO_NID(addr) (0)
#endif
#endif
include/asm-arm/arch-integrator/time.h
View file @
32e5dbb6
...
...
@@ -129,7 +129,6 @@ void __init time_init(void)
timer2
->
TimerControl
=
0
;
timer1
->
TimerLoad
=
TIMER_RELOAD
;
timer1
->
TimerValue
=
TIMER_RELOAD
;
timer1
->
TimerControl
=
TIMER_CTRL
|
0x40
;
/* periodic */
/*
...
...
include/asm-arm/arch-sa1100/SA-1100.h
View file @
32e5dbb6
...
...
@@ -22,6 +22,16 @@
#include "bitfield.h"
/*
* SA1100 CS line to physical address
*/
#define SA1100_CS0_PHYS 0x00000000
#define SA1100_CS1_PHYS 0x08000000
#define SA1100_CS2_PHYS 0x10000000
#define SA1100_CS3_PHYS 0x18000000
#define SA1100_CS4_PHYS 0x40000000
#define SA1100_CS5_PHYS 0x48000000
/*
* Personal Computer Memory Card International Association (PCMCIA) sockets
...
...
include/asm-arm/arch-sa1100/hardware.h
View file @
32e5dbb6
...
...
@@ -23,15 +23,6 @@
#define UNCACHEABLE_ADDR 0xfa050000
/*
* Those are statically mapped PCMCIA IO space for designs using it as a
* generic IO bus, typically with ISA parts, hardwired IDE interfaces, etc.
* The actual PCMCIA code is mapping required IO region at run time.
*/
#define PCMCIA_IO_0_BASE 0xf6000000
#define PCMCIA_IO_1_BASE 0xf7000000
/*
* We requires absolute addresses i.e. (PCMCIA_IO_0_BASE + 0x3f8) for
* in*()/out*() macros to be usable for all cases.
...
...
include/asm-arm/arch-sa1100/irqs.h
View file @
32e5dbb6
...
...
@@ -60,11 +60,6 @@
#define IRQ_GPIO26 47
#define IRQ_GPIO27 48
/*
* To get the GPIO number from an IRQ number
*/
#define GPIO_11_27_IRQ(i) ((i) - 21)
/*
* The next 16 interrupts are for board specific purposes. Since
* the kernel can only run on one machine at a time, we can re-use
...
...
include/asm-arm/arch-sa1100/memory.h
View file @
32e5dbb6
...
...
@@ -79,49 +79,36 @@
/*
* Given a kernel address, find the home node of the underlying memory.
*/
#define KVADDR_TO_NID(addr) \
(((unsigned long)(addr) - 0xc0000000) >> 27)
#define KVADDR_TO_NID(addr) (((unsigned long)(addr) - PAGE_OFFSET) >> 27)
/*
* Given a p
hysical address
, convert it to a node id.
* Given a p
age frame number
, convert it to a node id.
*/
#define P
HYS_TO_NID(addr) KVADDR_TO_NID(__phys_to_virt(addr
))
#define P
FN_TO_NID(pfn) (((pfn) - PHYS_PFN_OFFSET) >> (27 - PAGE_SHIFT
))
/*
* Given a kaddr, ADDR_TO_MAPBASE finds the owning node of the memory
* and return
s
the mem_map of that node.
* and return the mem_map of that node.
*/
#define ADDR_TO_MAPBASE(kaddr) \
NODE_MEM_MAP(KVADDR_TO_NID((unsigned long)(kaddr)))
#define ADDR_TO_MAPBASE(kaddr) NODE_MEM_MAP(KVADDR_TO_NID(kaddr))
/*
* Given a kaddr, LOCAL_MEM_MAP finds the owning node of the memory
* and returns the index corresponding to the appropriate page in the
* node's mem_map.
* Given a page frame number, find the owning node of the memory
* and return the mem_map of that node.
*/
#define LOCAL_MAP_NR(kvaddr) \
(((unsigned long)(kvaddr) & 0x07ffffff) >> PAGE_SHIFT)
#define PFN_TO_MAPBASE(pfn) NODE_MEM_MAP(PFN_TO_NID(pfn))
/*
* Given a kaddr, virt_to_page returns a pointer to the corresponding
* mem_map entry.
*/
#define virt_to_page(kaddr) \
(ADDR_TO_MAPBASE(kaddr) + LOCAL_MAP_NR(kaddr))
/*
* VALID_PAGE returns a non-zero value if given page pointer is valid.
* This assumes all node's mem_maps are stored within the node they refer to.
* Given a kaddr, LOCAL_MEM_MAP finds the owning node of the memory
* and returns the index corresponding to the appropriate page in the
* node's mem_map.
*/
#define VALID_PAGE(page) \
({ unsigned int node = KVADDR_TO_NID(page); \
( (node < NR_NODES) && \
((unsigned)((page) - NODE_MEM_MAP(node)) < NODE_DATA(node)->node_size) ); \
})
#define LOCAL_MAP_NR(addr) \
(((unsigned long)(addr) & 0x07ffffff) >> PAGE_SHIFT)
#else
#define P
HYS
_TO_NID(addr) (0)
#define P
FN
_TO_NID(addr) (0)
#endif
...
...
include/asm-arm/glue.h
View file @
32e5dbb6
...
...
@@ -158,7 +158,8 @@
*
* We have the following to choose from:
* v3 - ARMv3
* v4 - ARMv4 without minicache
* v4wt - ARMv4 with writethrough cache, without minicache
* v4wb - ARMv4 with writeback cache, without minicache
* v4_mc - ARMv4 with minicache
* v5te_mc - ARMv5TE with minicache
*/
...
...
@@ -173,13 +174,21 @@
# endif
#endif
#if defined(CONFIG_CPU_ARM720T) || defined(CONFIG_CPU_ARM920T) || \
defined(CONFIG_CPU_ARM922T) || defined(CONFIG_CPU_ARM926T) || \
defined(CONFIG_CPU_SA110) || defined(CONFIG_CPU_ARM1020)
#if defined(CONFIG_CPU_ARM720T)
# ifdef _USER
# define MULTI_USER 1
# else
# define _USER v4wt
# endif
#endif
#if defined(CONFIG_CPU_ARM920T) || defined(CONFIG_CPU_ARM922T) || \
defined(CONFIG_CPU_ARM926T) || defined(CONFIG_CPU_SA110) || \
defined(CONFIG_CPU_ARM1020)
# ifdef _USER
# define MULTI_USER 1
# else
# define _USER v4
# define _USER v4
wb
# endif
#endif
...
...
include/asm-arm/io.h
View file @
32e5dbb6
...
...
@@ -269,24 +269,6 @@ extern void *consistent_alloc(int gfp, size_t size, dma_addr_t *handle);
extern
void
consistent_free
(
void
*
vaddr
,
size_t
size
,
dma_addr_t
handle
);
extern
void
consistent_sync
(
void
*
vaddr
,
size_t
size
,
int
rw
);
/*
* Change "struct page" to physical address.
*/
#ifdef CONFIG_DISCONTIGMEM
#define page_to_phys(page) \
((((page) - page_zone(page)->zone_mem_map) << PAGE_SHIFT) \
+ page_zone(page)->zone_start_paddr)
#else
#define page_to_phys(page) \
(PHYS_OFFSET + (((page) - mem_map) << PAGE_SHIFT))
#endif
/*
* We should really eliminate virt_to_bus() here - it's depreciated.
*/
#define page_to_bus(page) \
(virt_to_bus(page_address(page)))
/*
* can the hardware map this into one segment or not, given no other
* constraints.
...
...
include/asm-arm/memory.h
View file @
32e5dbb6
/*
* linux/include/asm-arm/memory.h
*
* Copyright (C) 2000 Russell King
* Copyright (C) 2000
-2002
Russell King
*
* 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
* published by the Free Software Foundation.
*
* Note: this file should not be included by non-asm/.h files
*
* Modifications:
*/
#ifndef __ASM_ARM_MEMORY_H
#define __ASM_ARM_MEMORY_H
#include <linux/config.h>
#include <asm/arch/memory.h>
static
inline
unsigned
long
virt_to_phys
(
volatile
void
*
x
)
/*
* PFNs are used to describe any physical page; this means
* PFN 0 == physical address 0.
*
* This is the PFN of the first RAM page in the kernel
* direct-mapped view. We assume this is the first page
* of RAM in the mem_map as well.
*/
#define PHYS_PFN_OFFSET (PHYS_OFFSET >> PAGE_SHIFT)
/*
* These are *only* valid on the kernel direct mapped RAM memory.
*/
static
inline
unsigned
long
virt_to_phys
(
void
*
x
)
{
return
__virt_to_phys
((
unsigned
long
)(
x
));
}
...
...
@@ -26,10 +38,77 @@ static inline void *phys_to_virt(unsigned long x)
return
(
void
*
)(
__phys_to_virt
((
unsigned
long
)(
x
)));
}
#define __pa(x) __virt_to_phys((unsigned long)(x))
#define __va(x) ((void *)__phys_to_virt((unsigned long)(x)))
/*
* Virtual <-> DMA view memory address translations
* Again, these are *only* valid on the kernel direct mapped RAM
* memory. Use of these is *depreciated*.
*/
#define virt_to_bus(x) (__virt_to_bus((unsigned long)(x)))
#define bus_to_virt(x) ((void *)(__bus_to_virt((unsigned long)(x))))
/*
* Conversion between a struct page and a physical address.
*
* Note: when converting an unknown physical address to a
* struct page, the resulting pointer must be validated
* using VALID_PAGE(). It must return an invalid struct page
* for any physical address not corresponding to a system
* RAM address.
*
* page_to_pfn(page) convert a struct page * to a PFN number
* pfn_to_page(pfn) convert a _valid_ PFN number to struct page *
* pfn_valid(pfn) indicates whether a PFN number is valid
*
* virt_to_page(k) convert a _valid_ virtual address to struct page *
* virt_addr_valid(k) indicates whether a virtual address is valid
*/
#ifndef CONFIG_DISCONTIGMEM
#define page_to_pfn(page) (((page) - mem_map) + PHYS_PFN_OFFSET)
#define pfn_to_page(pfn) ((mem_map + (pfn)) - PHYS_PFN_OFFSET)
#define pfn_valid(pfn) ((pfn) >= PHYS_PFN_OFFSET && (pfn) < max_mapnr)
#define virt_to_page(kaddr) (pfn_to_page(__pa(kaddr) >> PAGE_SHIFT))
#define virt_addr_valid(kaddr) ((kaddr) >= PAGE_OFFSET && (kaddr) < (unsigned long)high_memory)
#else
/*
* This is more complex. We have a set of mem_map arrays spread
* around in memory.
*/
#define page_to_pfn(page) \
(((page) - page_zone(page)->zone_mem_map) \
+ (page_zone(page)->zone_start_paddr >> PAGE_SHIFT))
#define pfn_to_page(pfn) \
(PFN_TO_MAPBASE(pfn) + LOCAL_MAP_NR((pfn) << PAGE_SHIFT))
#define pfn_valid(pfn) (PFN_TO_NID(pfn) < NR_NODES)
#define virt_to_page(kaddr) \
(ADDR_TO_MAPBASE(kaddr) + LOCAL_MAP_NR(kaddr))
#define virt_addr_valid(kaddr) (KVADDR_TO_NID(kaddr) < NR_NODES)
/*
* Common discontigmem stuff.
* PHYS_TO_NID is used by the ARM kernel/setup.c
*/
#define PHYS_TO_NID(addr) PFN_TO_NID((addr) >> PAGE_SHIFT)
#endif
/*
* For BIO. "will die". Kill me when bio_to_phys() and bvec_to_phys() die.
*/
#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
/*
* We should really eliminate virt_to_bus() here - it's depreciated.
*/
#define page_to_bus(page) (virt_to_bus(page_address(page)))
#endif
include/asm-arm/page.h
View file @
32e5dbb6
...
...
@@ -125,18 +125,9 @@ static inline int get_order(unsigned long size)
return
order
;
}
#endif
/* !__ASSEMBLY__ */
#include <asm/arch/memory.h>
#define __pa(x) __virt_to_phys((unsigned long)(x))
#define __va(x) ((void *)__phys_to_virt((unsigned long)(x)))
#include <asm/memory.h>
#ifndef CONFIG_DISCONTIGMEM
#define virt_to_page(kaddr) (mem_map + (__pa(kaddr) >> PAGE_SHIFT) - \
(PHYS_OFFSET >> PAGE_SHIFT))
#define VALID_PAGE(page) ((page - mem_map) < max_mapnr)
#endif
#endif
/* !__ASSEMBLY__ */
#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)
...
...
include/asm-arm/pgtable.h
View file @
32e5dbb6
...
...
@@ -11,7 +11,7 @@
#define _ASMARM_PGTABLE_H
#include <linux/config.h>
#include <asm/
arch/
memory.h>
#include <asm/memory.h>
#include <asm/arch/vmalloc.h>
/*
...
...
@@ -79,21 +79,12 @@ extern void __pgd_error(const char *file, int line, unsigned long val);
extern
struct
page
*
empty_zero_page
;
#define ZERO_PAGE(vaddr) (empty_zero_page)
#define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT)
#define pfn_pte(pfn,prot) (__pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot)))
#define pte_none(pte) (!pte_val(pte))
#define pte_clear(ptep) set_pte((ptep), __pte(0))
#ifndef CONFIG_DISCONTIGMEM
#define pte_page(x) (mem_map + (pte_val((x)) >> PAGE_SHIFT) - \
(PHYS_OFFSET >> PAGE_SHIFT))
#else
/*
* I'm not happy with this - we needlessly convert a physical address
* to a virtual one, and then immediately back to a physical address,
* which, if __va and __pa are expensive causes twice the expense for
* zero gain. --rmk
*/
#define pte_page(x) (virt_to_page(__va(pte_val((x)))))
#endif
#define pte_page(pte) (pfn_to_page(pte_pfn(pte)))
#define pmd_none(pmd) (!pmd_val(pmd))
#define pmd_present(pmd) (pmd_val(pmd))
...
...
@@ -107,12 +98,7 @@ extern struct page *empty_zero_page;
* Conversion functions: convert a page and protection to a page entry,
* and a page entry and page directory to the page they refer to.
*/
static
inline
pte_t
mk_pte_phys
(
unsigned
long
physpage
,
pgprot_t
pgprot
)
{
return
__pte
(
physpage
|
pgprot_val
(
pgprot
));
}
#define mk_pte(page,pgprot) mk_pte_phys(__pa(page_address(page)), pgprot)
#define mk_pte(page,prot) pfn_pte(page_to_pfn(page),prot)
/*
* The "pgd_xxx()" functions here are trivial for a folded two-level
...
...
include/asm-arm/setup.h
View file @
32e5dbb6
...
...
@@ -10,77 +10,12 @@
* Structure passed to kernel to tell it about the
* hardware it's running on. See linux/Documentation/arm/Setup
* for more info.
*
* NOTE:
* This file contains two ways to pass information from the boot
* loader to the kernel. The old struct param_struct is deprecated,
* but it will be kept in the kernel for 5 years from now
* (2001). This will allow boot loaders to convert to the new struct
* tag way.
*/
#ifndef __ASMARM_SETUP_H
#define __ASMARM_SETUP_H
/*
* Usage:
* - do not go blindly adding fields, add them at the end
* - when adding fields, don't rely on the address until
* a patch from me has been released
* - unused fields should be zero (for future expansion)
* - this structure is relatively short-lived - only
* guaranteed to contain useful data in setup_arch()
*/
#define COMMAND_LINE_SIZE 1024
/* This is the old deprecated way to pass parameters to the kernel */
struct
param_struct
{
union
{
struct
{
unsigned
long
page_size
;
/* 0 */
unsigned
long
nr_pages
;
/* 4 */
unsigned
long
ramdisk_size
;
/* 8 */
unsigned
long
flags
;
/* 12 */
#define FLAG_READONLY 1
#define FLAG_RDLOAD 4
#define FLAG_RDPROMPT 8
unsigned
long
rootdev
;
/* 16 */
unsigned
long
video_num_cols
;
/* 20 */
unsigned
long
video_num_rows
;
/* 24 */
unsigned
long
video_x
;
/* 28 */
unsigned
long
video_y
;
/* 32 */
unsigned
long
memc_control_reg
;
/* 36 */
unsigned
char
sounddefault
;
/* 40 */
unsigned
char
adfsdrives
;
/* 41 */
unsigned
char
bytes_per_char_h
;
/* 42 */
unsigned
char
bytes_per_char_v
;
/* 43 */
unsigned
long
pages_in_bank
[
4
];
/* 44 */
unsigned
long
pages_in_vram
;
/* 60 */
unsigned
long
initrd_start
;
/* 64 */
unsigned
long
initrd_size
;
/* 68 */
unsigned
long
rd_start
;
/* 72 */
unsigned
long
system_rev
;
/* 76 */
unsigned
long
system_serial_low
;
/* 80 */
unsigned
long
system_serial_high
;
/* 84 */
unsigned
long
mem_fclk_21285
;
/* 88 */
}
s
;
char
unused
[
256
];
}
u1
;
union
{
char
paths
[
8
][
128
];
struct
{
unsigned
long
magic
;
char
n
[
1024
-
sizeof
(
unsigned
long
)];
}
s
;
}
u2
;
char
commandline
[
COMMAND_LINE_SIZE
];
};
/*
* The new way of passing information: a list of tagged entries
*/
/* The list ends with an ATAG_NONE node. */
#define ATAG_NONE 0x00000000
...
...
@@ -131,8 +66,15 @@ struct tag_ramdisk {
};
/* describes where the compressed ramdisk image lives */
/*
* this one accidentally used virtual addresses - as such,
* its depreciated.
*/
#define ATAG_INITRD 0x54410005
/* describes where the compressed ramdisk image lives */
#define ATAG_INITRD2 0x54420005
struct
tag_initrd
{
u32
start
;
/* physical start address */
u32
size
;
/* size of compressed ramdisk image in bytes */
...
...
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