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
ea1e2d62
Commit
ea1e2d62
authored
Jun 04, 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
5fb4864a
09520524
Changes
55
Hide whitespace changes
Inline
Side-by-side
Showing
55 changed files
with
450 additions
and
592 deletions
+450
-592
arch/arm/Makefile
arch/arm/Makefile
+26
-24
arch/arm/mach-adifcc/mm.c
arch/arm/mach-adifcc/mm.c
+3
-4
arch/arm/mach-anakin/mm.c
arch/arm/mach-anakin/mm.c
+5
-7
arch/arm/mach-clps711x/autcpu12.c
arch/arm/mach-clps711x/autcpu12.c
+4
-5
arch/arm/mach-clps711x/cdb89712.c
arch/arm/mach-clps711x/cdb89712.c
+3
-3
arch/arm/mach-clps711x/edb7211-mm.c
arch/arm/mach-clps711x/edb7211-mm.c
+8
-11
arch/arm/mach-clps711x/mm.c
arch/arm/mach-clps711x/mm.c
+3
-28
arch/arm/mach-clps711x/p720t.c
arch/arm/mach-clps711x/p720t.c
+4
-4
arch/arm/mach-clps7500/core.c
arch/arm/mach-clps7500/core.c
+7
-7
arch/arm/mach-ebsa110/core.c
arch/arm/mach-ebsa110/core.c
+8
-8
arch/arm/mach-epxa10db/mm.c
arch/arm/mach-epxa10db/mm.c
+8
-12
arch/arm/mach-footbridge/mm.c
arch/arm/mach-footbridge/mm.c
+14
-21
arch/arm/mach-ftvpci/core.c
arch/arm/mach-ftvpci/core.c
+7
-7
arch/arm/mach-integrator/mm.c
arch/arm/mach-integrator/mm.c
+18
-22
arch/arm/mach-iop310/mm.c
arch/arm/mach-iop310/mm.c
+8
-9
arch/arm/mach-l7200/core.c
arch/arm/mach-l7200/core.c
+7
-7
arch/arm/mach-pxa/generic.c
arch/arm/mach-pxa/generic.c
+7
-8
arch/arm/mach-pxa/idp.c
arch/arm/mach-pxa/idp.c
+8
-14
arch/arm/mach-pxa/lubbock.c
arch/arm/mach-pxa/lubbock.c
+7
-7
arch/arm/mach-rpc/riscpc.c
arch/arm/mach-rpc/riscpc.c
+5
-5
arch/arm/mach-sa1100/adsbitsy.c
arch/arm/mach-sa1100/adsbitsy.c
+4
-5
arch/arm/mach-sa1100/assabet.c
arch/arm/mach-sa1100/assabet.c
+7
-10
arch/arm/mach-sa1100/badge4.c
arch/arm/mach-sa1100/badge4.c
+5
-6
arch/arm/mach-sa1100/cerf.c
arch/arm/mach-sa1100/cerf.c
+6
-7
arch/arm/mach-sa1100/empeg.c
arch/arm/mach-sa1100/empeg.c
+3
-4
arch/arm/mach-sa1100/flexanet.c
arch/arm/mach-sa1100/flexanet.c
+6
-7
arch/arm/mach-sa1100/freebird.c
arch/arm/mach-sa1100/freebird.c
+4
-7
arch/arm/mach-sa1100/generic.c
arch/arm/mach-sa1100/generic.c
+7
-9
arch/arm/mach-sa1100/graphicsclient.c
arch/arm/mach-sa1100/graphicsclient.c
+5
-6
arch/arm/mach-sa1100/graphicsmaster.c
arch/arm/mach-sa1100/graphicsmaster.c
+6
-7
arch/arm/mach-sa1100/h3600.c
arch/arm/mach-sa1100/h3600.c
+5
-6
arch/arm/mach-sa1100/huw_webpanel.c
arch/arm/mach-sa1100/huw_webpanel.c
+4
-5
arch/arm/mach-sa1100/itsy.c
arch/arm/mach-sa1100/itsy.c
+3
-5
arch/arm/mach-sa1100/jornada720.c
arch/arm/mach-sa1100/jornada720.c
+5
-6
arch/arm/mach-sa1100/lart.c
arch/arm/mach-sa1100/lart.c
+4
-5
arch/arm/mach-sa1100/nanoengine.c
arch/arm/mach-sa1100/nanoengine.c
+4
-6
arch/arm/mach-sa1100/neponset.c
arch/arm/mach-sa1100/neponset.c
+7
-6
arch/arm/mach-sa1100/omnimeter.c
arch/arm/mach-sa1100/omnimeter.c
+3
-4
arch/arm/mach-sa1100/pangolin.c
arch/arm/mach-sa1100/pangolin.c
+3
-4
arch/arm/mach-sa1100/pfs168.c
arch/arm/mach-sa1100/pfs168.c
+15
-17
arch/arm/mach-sa1100/pleb.c
arch/arm/mach-sa1100/pleb.c
+0
-8
arch/arm/mach-sa1100/pm.c
arch/arm/mach-sa1100/pm.c
+29
-13
arch/arm/mach-sa1100/simpad.c
arch/arm/mach-sa1100/simpad.c
+4
-6
arch/arm/mach-sa1100/sleep.S
arch/arm/mach-sa1100/sleep.S
+68
-92
arch/arm/mach-sa1100/sleep.h
arch/arm/mach-sa1100/sleep.h
+0
-30
arch/arm/mach-sa1100/stork.c
arch/arm/mach-sa1100/stork.c
+5
-7
arch/arm/mach-sa1100/system3.c
arch/arm/mach-sa1100/system3.c
+4
-5
arch/arm/mach-sa1100/xp860.c
arch/arm/mach-sa1100/xp860.c
+5
-6
arch/arm/mach-sa1100/yopy.c
arch/arm/mach-sa1100/yopy.c
+4
-7
arch/arm/mach-shark/core.c
arch/arm/mach-shark/core.c
+3
-11
arch/arm/mach-tbox/core.c
arch/arm/mach-tbox/core.c
+3
-3
arch/arm/mm/mm-armv.c
arch/arm/mm/mm-armv.c
+45
-45
include/asm-arm/mach/map.h
include/asm-arm/mach/map.h
+8
-10
include/asm-arm/page.h
include/asm-arm/page.h
+2
-2
include/asm-arm/thread_info.h
include/asm-arm/thread_info.h
+4
-2
No files found.
arch/arm/Makefile
View file @
ea1e2d62
...
...
@@ -201,15 +201,30 @@ MAKETOOLS =$(MAKE) -C arch/$(ARCH)/tools
$(patsubst %,_dir_%, $(SUBDIRS))
:
maketools
$(patsubst %,_modsubdir_%,$(MOD_DIRS))
:
maketools
symlinks
:
archsymlinks
# Update machine arch and proc symlinks if something which affects
# them changed. We use .arch and .proc to indicate when they were
# updated last, otherwise make uses the target directory mtime.
archsymlinks
:
$(RM)
include/asm-arm/arch include/asm-arm/proc
(
cd
include/asm-arm
;
ln
-sf
arch-
$(INCDIR)
arch
;
ln
-sf
proc-
$(PROCESSOR)
proc
)
include/asm-arm/.arch
:
$(wildcard include/config/arch/*.h)
@
echo
'Making asm-arm/arch -> asm-arm/arch-
$(INCDIR)
symlink'
@
rm
-f
include/asm-arm/arch
@
ln
-sf
arch-
$(INCDIR)
include/asm-arm/arch
@
touch
$@
include/asm-arm/.proc
:
$(wildcard include/config/cpu/32.h) $(wildcard include/config/cpu/26.h)
@
echo
'Making asm-arm/proc -> asm-arm/proc-
$(PROCESSOR)
symlink'
@
rm
-f
include/asm-arm/proc
@
ln
-sf
proc-
$(PROCESSOR)
include/asm-arm/proc
@
touch
$@
.hdepend
:
include/asm-arm/.arch include/asm-arm/.proc
vmlinux
:
arch/arm/vmlinux.lds
arch/arm/vmlinux.lds
:
$(LDSCRIPT) FORCE
arch/arm/vmlinux.lds
:
arch/arm/Makefile $(LDSCRIPT)
\
$(wildcard include/config/cpu/32.h)
\
$(wildcard include/config/cpu/26.h)
\
$(wildcard include/config/arch/*.h)
@
sed
's/TEXTADDR/
$(TEXTADDR)
/;s/DATAADDR/
$(DATAADDR)
/'
$(LDSCRIPT)
>
$@
bzImage zImage zinstall Image bootpImage install
:
vmlinux
...
...
@@ -220,39 +235,26 @@ CLEAN_FILES += \
MRPROPER_FILES
+=
\
arch
/arm/tools/constants.h
*
\
include/asm-arm/arch
\
include/asm-arm/proc
\
include/asm-arm/arch
include/asm-arm/.arch
\
include/asm-arm/proc
include/asm-arm/.proc
\
include/asm-arm/constants.h
*
\
include/asm-arm/mach-types.h
# We use MRPROPER_FILES and CLEAN_FILES now
archmrproper
:
archmrproper
:
FORCE
@
/bin/true
archclean
:
archclean
:
FORCE
@
$(MAKEBOOT)
clean
archdep
:
scripts/mkdep archsymlinks
archdep
:
FORCE
@
$(MAKETOOLS)
dep
@
$(MAKEBOOT)
dep
# we need version.h
maketools
:
checkbin include/linux/version.h
maketools
:
include/linux/version.h FORCE
@
$(MAKETOOLS)
all
# Ensure this is ld "2.9.4" or later
NEW_LINKER
:=
$(
shell
$(LD)
--gc-sections
--version
>
/dev/null 2>&1
;
echo
$$
?
)
ifneq
($(NEW_LINKER),0)
checkbin
:
@
echo
'***
${VERSION}
.
${PATCHLEVEL}
kernels no longer build correctly with old versions of binutils.'
@
echo
'*** Please upgrade your binutils to 2.9.5.'
@
false
else
checkbin
:
@
true
endif
# My testing targets (that short circuit a few dependencies)
zImg
:
; @$(MAKEBOOT) zImage
Img
:
; @$(MAKEBOOT) Image
...
...
arch/arm/mach-adifcc/mm.c
View file @
ea1e2d62
/*
* linux/arch/arm/mach-xscale/mm.c
*/
#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/init.h>
...
...
@@ -14,11 +14,10 @@
static
struct
map_desc
adifcc_io_desc
[]
__initdata
=
{
/* on-board devices */
{
0xff400000
,
0x00400000
,
0x00300000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
LAST_DESC
{
0xff400000
,
0x00400000
,
0x00300000
,
MT_DEVICE
}
};
void
__init
adifcc_map_io
(
void
)
{
iotable_init
(
adifcc_io_desc
);
iotable_init
(
adifcc_io_desc
,
ARRAY_SIZE
(
adifcc_io_desc
)
);
}
arch/arm/mach-anakin/mm.c
View file @
ea1e2d62
...
...
@@ -10,8 +10,7 @@
* Changelog:
* 09-Apr-2001 W/TTC Created
*/
#include <linux/mm.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <asm/io.h>
...
...
@@ -19,14 +18,13 @@
#include <asm/mach/map.h>
static
struct
map_desc
anakin_io_desc
[]
__initdata
=
{
{
IO_BASE
,
IO_START
,
IO_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
FLASH_BASE
,
FLASH_START
,
FLASH_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
VGA_BASE
,
VGA_START
,
VGA_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
LAST_DESC
{
IO_BASE
,
IO_START
,
IO_SIZE
,
MT_DEVICE
},
{
FLASH_BASE
,
FLASH_START
,
FLASH_SIZE
,
MT_DEVICE
},
{
VGA_BASE
,
VGA_START
,
VGA_SIZE
,
MT_DEVICE
}
};
void
__init
anakin_map_io
(
void
)
{
iotable_init
(
anakin_io_desc
);
iotable_init
(
anakin_io_desc
,
ARRAY_SIZE
(
anakin_io_desc
)
);
}
arch/arm/mach-clps711x/autcpu12.c
View file @
ea1e2d62
...
...
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/types.h>
#include <linux/string.h>
...
...
@@ -48,18 +49,16 @@ extern void clps711x_init_irq(void);
*/
static
struct
map_desc
autcpu12_io_desc
[]
__initdata
=
{
/* virtual, physical, length,
domain, r, w, c, b
*/
/* virtual, physical, length,
type
*/
/* memory-mapped extra io and CS8900A Ethernet chip */
/* ethernet chip */
{
AUTCPU12_VIRT_CS8900A
,
AUTCPU12_PHYS_CS8900A
,
SZ_1M
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
LAST_DESC
{
AUTCPU12_VIRT_CS8900A
,
AUTCPU12_PHYS_CS8900A
,
SZ_1M
,
MT_DEVICE
}
};
void
__init
autcpu12_map_io
(
void
)
{
clps711x_map_io
();
iotable_init
(
autcpu12_io_desc
);
iotable_init
(
autcpu12_io_desc
,
ARRAY_SIZE
(
autcpu12_io_desc
)
);
}
MACHINE_START
(
AUTCPU12
,
"autronix autcpu12"
)
...
...
arch/arm/mach-clps711x/cdb89712.c
View file @
ea1e2d62
...
...
@@ -17,6 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/types.h>
#include <linux/string.h>
...
...
@@ -40,14 +41,13 @@ extern void clps711x_map_io(void);
* ethernet driver, perhaps.
*/
static
struct
map_desc
cdb89712_io_desc
[]
__initdata
=
{
{
ETHER_BASE
,
ETHER_START
,
ETHER_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
LAST_DESC
{
ETHER_BASE
,
ETHER_START
,
ETHER_SIZE
,
MT_DEVICE
}
};
static
void
__init
cdb89712_map_io
(
void
)
{
clps711x_map_io
();
iotable_init
(
cdb89712_io_desc
);
iotable_init
(
cdb89712_io_desc
,
ARRAY_SIZE
(
cdb89712_io_desc
)
);
}
MACHINE_START
(
CDB89712
,
"Cirrus-CDB89712"
)
...
...
arch/arm/mach-clps711x/edb7211-mm.c
View file @
ea1e2d62
...
...
@@ -19,13 +19,12 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <asm/hardware.h>
#include <asm/pgtable.h>
#include <asm/page.h>
#include <asm/pgtable.h>
#include <asm/sizes.h>
#include <asm/mach/map.h>
...
...
@@ -52,22 +51,20 @@ extern void clps711x_map_io(void);
* happens).
*/
static
struct
map_desc
edb7211_io_desc
[]
__initdata
=
{
/* virtual, physical, length,
domain, r, w, c, b
*/
/* virtual, physical, length,
type
*/
/* memory-mapped extra keyboard row and CS8900A Ethernet chip */
{
EP7211_VIRT_EXTKBD
,
EP7211_PHYS_EXTKBD
,
SZ_1M
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
EP7211_VIRT_CS8900A
,
EP7211_PHYS_CS8900A
,
SZ_1M
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
EP7211_VIRT_EXTKBD
,
EP7211_PHYS_EXTKBD
,
SZ_1M
,
MT_DEVICE
},
{
EP7211_VIRT_CS8900A
,
EP7211_PHYS_CS8900A
,
SZ_1M
,
MT_DEVICE
},
/* flash banks */
{
EP7211_VIRT_FLASH1
,
EP7211_PHYS_FLASH1
,
SZ_8M
,
DOMAIN_KERNEL
,
0
,
1
,
0
,
0
},
{
EP7211_VIRT_FLASH2
,
EP7211_PHYS_FLASH2
,
SZ_8M
,
DOMAIN_KERNEL
,
0
,
1
,
0
,
0
},
LAST_DESC
{
EP7211_VIRT_FLASH1
,
EP7211_PHYS_FLASH1
,
SZ_8M
,
MT_DEVICE
},
{
EP7211_VIRT_FLASH2
,
EP7211_PHYS_FLASH2
,
SZ_8M
,
MT_DEVICE
}
};
void
__init
edb7211_map_io
(
void
)
{
clps711x_map_io
();
iotable_init
(
edb7211_io_desc
);
iotable_init
(
edb7211_io_desc
,
ARRAY_SIZE
(
edb7211_io_desc
)
);
}
arch/arm/mach-clps711x/mm.c
View file @
ea1e2d62
...
...
@@ -19,6 +19,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/init.h>
...
...
@@ -31,40 +32,14 @@
#include <asm/mach/map.h>
#include <asm/hardware/clps7111.h>
#if 0 //def CONFIG_DISCONTIGMEM
/*
* The assumption of maximum 4 discontiguous memory banks is present
* in several places in the ARM kernel, including the parameter block
* (this affects boot loaders, too). Banks do not necessarily
* correspond 1:1 with NUMA nodes, although they usually will,
* especially if they are widely discontiguous.
*
* - note that the parameter block is depreciated for new implementations
* - also note that discontig_node_data is actually used
* -- rmk
*/
static bootmem_data_t node_bootmem_data[4];
pg_data_t clps711x_node_data[4] = {
{ bdata: &node_bootmem_data[0] },
{ bdata: &node_bootmem_data[1] },
{ bdata: &node_bootmem_data[2] },
{ bdata: &node_bootmem_data[3] },
};
#endif
/*
* This maps the generic CLPS711x registers
*/
static
struct
map_desc
clps711x_io_desc
[]
__initdata
=
{
{
CLPS7111_VIRT_BASE
,
CLPS7111_PHYS_BASE
,
1048576
,
DOMAIN_IO
,
0
,
1
},
LAST_DESC
{
CLPS7111_VIRT_BASE
,
CLPS7111_PHYS_BASE
,
1048576
,
MT_DEVICE
}
};
void
__init
clps711x_map_io
(
void
)
{
iotable_init
(
clps711x_io_desc
);
iotable_init
(
clps711x_io_desc
,
ARRAY_SIZE
(
clps711x_io_desc
)
);
}
arch/arm/mach-clps711x/p720t.c
View file @
ea1e2d62
...
...
@@ -18,6 +18,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/types.h>
#include <linux/string.h>
...
...
@@ -43,9 +44,8 @@ extern void clps711x_map_io(void);
* We map both here.
*/
static
struct
map_desc
p720t_io_desc
[]
__initdata
=
{
{
SYSPLD_VIRT_BASE
,
SYSPLD_PHYS_BASE
,
1048576
,
DOMAIN_IO
,
0
,
1
},
{
0xfe400000
,
0x10400000
,
1048576
,
DOMAIN_IO
,
0
,
1
},
LAST_DESC
{
SYSPLD_VIRT_BASE
,
SYSPLD_PHYS_BASE
,
1048576
,
MT_DEVICE
},
{
0xfe400000
,
0x10400000
,
1048576
,
MT_DEVICE
}
};
static
void
__init
...
...
@@ -77,7 +77,7 @@ fixup_p720t(struct machine_desc *desc, struct tag *tag,
static
void
__init
p720t_map_io
(
void
)
{
clps711x_map_io
();
iotable_init
(
p720t_io_desc
);
iotable_init
(
p720t_io_desc
,
ARRAY_SIZE
(
p720t_io_desc
)
);
}
MACHINE_START
(
P720T
,
"ARM-Prospector720T"
)
...
...
arch/arm/mach-clps7500/core.c
View file @
ea1e2d62
/*
* linux/arch/arm/m
m/mm-cl7500
.c
* linux/arch/arm/m
ach-clps7500/core
.c
*
* Copyright (C) 1998 Russell King
* Copyright (C) 1999 Nexus Electronics Ltd
*
* Extra MM routines for CL7500 architecture
*/
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/init.h>
...
...
@@ -215,16 +216,15 @@ static void __init clps7500_init_irq(void)
}
static
struct
map_desc
cl7500_io_desc
[]
__initdata
=
{
{
IO_BASE
,
IO_START
,
IO_SIZE
,
DOMAIN_IO
,
0
,
1
},
/* IO space */
{
ISA_BASE
,
ISA_START
,
ISA_SIZE
,
DOMAIN_IO
,
0
,
1
},
/* ISA space */
{
FLASH_BASE
,
FLASH_START
,
FLASH_SIZE
,
DOMAIN_IO
,
0
,
1
},
/* Flash */
{
LED_BASE
,
LED_START
,
LED_SIZE
,
DOMAIN_IO
,
0
,
1
},
/* LED */
LAST_DESC
{
IO_BASE
,
IO_START
,
IO_SIZE
,
MT_DEVICE
},
/* IO space */
{
ISA_BASE
,
ISA_START
,
ISA_SIZE
,
MT_DEVICE
},
/* ISA space */
{
FLASH_BASE
,
FLASH_START
,
FLASH_SIZE
,
MT_DEVICE
},
/* Flash */
{
LED_BASE
,
LED_START
,
LED_SIZE
,
MT_DEVICE
}
/* LED */
};
static
void
__init
clps7500_map_io
(
void
)
{
iotable_init
(
cl7500_io_desc
);
iotable_init
(
cl7500_io_desc
,
ARRAY_SIZE
(
cl7500_io_desc
)
);
}
MACHINE_START
(
CLPS7500
,
"CL-PS7500"
)
...
...
arch/arm/mach-ebsa110/core.c
View file @
ea1e2d62
...
...
@@ -9,6 +9,7 @@
*
* Extra MM routines for the EBSA-110 architecture
*/
#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/init.h>
...
...
@@ -71,22 +72,21 @@ static struct map_desc ebsa110_io_desc[] __initdata = {
/*
* sparse external-decode ISAIO space
*/
{
IRQ_STAT
,
TRICK4_PHYS
,
PGDIR_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* IRQ_STAT/IRQ_MCLR */
{
IRQ_MASK
,
TRICK3_PHYS
,
PGDIR_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* IRQ_MASK/IRQ_MSET */
{
SOFT_BASE
,
TRICK1_PHYS
,
PGDIR_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* SOFT_BASE */
{
PIT_BASE
,
TRICK0_PHYS
,
PGDIR_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* PIT_BASE */
{
IRQ_STAT
,
TRICK4_PHYS
,
PGDIR_SIZE
,
MT_DEVICE
},
/* IRQ_STAT/IRQ_MCLR */
{
IRQ_MASK
,
TRICK3_PHYS
,
PGDIR_SIZE
,
MT_DEVICE
},
/* IRQ_MASK/IRQ_MSET */
{
SOFT_BASE
,
TRICK1_PHYS
,
PGDIR_SIZE
,
MT_DEVICE
},
/* SOFT_BASE */
{
PIT_BASE
,
TRICK0_PHYS
,
PGDIR_SIZE
,
MT_DEVICE
},
/* PIT_BASE */
/*
* self-decode ISAIO space
*/
{
ISAIO_BASE
,
ISAIO_PHYS
,
ISAIO_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
ISAMEM_BASE
,
ISAMEM_PHYS
,
ISAMEM_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
LAST_DESC
{
ISAIO_BASE
,
ISAIO_PHYS
,
ISAIO_SIZE
,
MT_DEVICE
},
{
ISAMEM_BASE
,
ISAMEM_PHYS
,
ISAMEM_SIZE
,
MT_DEVICE
}
};
static
void
__init
ebsa110_map_io
(
void
)
{
iotable_init
(
ebsa110_io_desc
);
iotable_init
(
ebsa110_io_desc
,
ARRAY_SIZE
(
ebsa110_io_desc
)
);
}
MACHINE_START
(
EBSA110
,
"EBSA110"
)
...
...
arch/arm/mach-epxa10db/mm.c
View file @
ea1e2d62
...
...
@@ -19,14 +19,11 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <asm/hardware.h>
#include <asm/io.h>
#include <asm/pgtable.h>
#include <asm/page.h>
#include <asm/sizes.h>
#include <asm/mach/map.h>
...
...
@@ -34,16 +31,15 @@
/* Page table mapping for I/O region */
static
struct
map_desc
epxa10db_io_desc
[]
__initdata
=
{
{
IO_ADDRESS
(
EXC_REGISTERS_BASE
),
EXC_REGISTERS_BASE
,
SZ_16K
,
DOMAIN_IO
,
0
,
1
},
{
IO_ADDRESS
(
EXC_PLD_BLOCK0_BASE
),
EXC_PLD_BLOCK0_BASE
,
SZ_16K
,
DOMAIN_IO
,
0
,
1
},
{
IO_ADDRESS
(
EXC_PLD_BLOCK1_BASE
),
EXC_PLD_BLOCK1_BASE
,
SZ_16K
,
DOMAIN_IO
,
0
,
1
},
{
IO_ADDRESS
(
EXC_PLD_BLOCK2_BASE
),
EXC_PLD_BLOCK2_BASE
,
SZ_16K
,
DOMAIN_IO
,
0
,
1
},
{
IO_ADDRESS
(
EXC_PLD_BLOCK3_BASE
),
EXC_PLD_BLOCK3_BASE
,
SZ_16K
,
DOMAIN_IO
,
0
,
1
},
{
FLASH_VADDR
(
EXC_EBI_BLOCK0_BASE
),
EXC_EBI_BLOCK0_BASE
,
SZ_16M
,
DOMAIN_IO
,
0
,
1
},
LAST_DESC
{
IO_ADDRESS
(
EXC_REGISTERS_BASE
),
EXC_REGISTERS_BASE
,
SZ_16K
,
MT_DEVICE
},
{
IO_ADDRESS
(
EXC_PLD_BLOCK0_BASE
),
EXC_PLD_BLOCK0_BASE
,
SZ_16K
,
MT_DEVICE
},
{
IO_ADDRESS
(
EXC_PLD_BLOCK1_BASE
),
EXC_PLD_BLOCK1_BASE
,
SZ_16K
,
MT_DEVICE
},
{
IO_ADDRESS
(
EXC_PLD_BLOCK2_BASE
),
EXC_PLD_BLOCK2_BASE
,
SZ_16K
,
MT_DEVICE
},
{
IO_ADDRESS
(
EXC_PLD_BLOCK3_BASE
),
EXC_PLD_BLOCK3_BASE
,
SZ_16K
,
MT_DEVICE
},
{
FLASH_VADDR
(
EXC_EBI_BLOCK0_BASE
),
EXC_EBI_BLOCK0_BASE
,
SZ_16M
,
MT_DEVICE
}
};
void
__init
epxa10db_map_io
(
void
)
{
iotable_init
(
epxa10db_io_desc
);
iotable_init
(
epxa10db_io_desc
,
ARRAY_SIZE
(
epxa10db_io_desc
)
);
}
arch/arm/mach-footbridge/mm.c
View file @
ea1e2d62
...
...
@@ -10,6 +10,7 @@
* Extra MM routines for the EBSA285 architecture
*/
#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/init.h>
...
...
@@ -28,9 +29,8 @@
* it means that we have extra bullet protection on our feet.
*/
static
struct
map_desc
fb_common_io_desc
[]
__initdata
=
{
{
ARMCSR_BASE
,
DC21285_ARMCSR_BASE
,
ARMCSR_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
XBUS_BASE
,
0x40000000
,
XBUS_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
LAST_DESC
{
ARMCSR_BASE
,
DC21285_ARMCSR_BASE
,
ARMCSR_SIZE
,
MT_DEVICE
},
{
XBUS_BASE
,
0x40000000
,
XBUS_SIZE
,
MT_DEVICE
}
};
/*
...
...
@@ -39,13 +39,12 @@ static struct map_desc fb_common_io_desc[] __initdata = {
*/
static
struct
map_desc
ebsa285_host_io_desc
[]
__initdata
=
{
#if defined(CONFIG_ARCH_FOOTBRIDGE) && defined(CONFIG_FOOTBRIDGE_HOST)
{
PCIMEM_BASE
,
DC21285_PCI_MEM
,
PCIMEM_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
PCICFG0_BASE
,
DC21285_PCI_TYPE_0_CONFIG
,
PCICFG0_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
PCICFG1_BASE
,
DC21285_PCI_TYPE_1_CONFIG
,
PCICFG1_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
PCIIACK_BASE
,
DC21285_PCI_IACK
,
PCIIACK_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
PCIO_BASE
,
DC21285_PCI_IO
,
PCIO_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
PCIMEM_BASE
,
DC21285_PCI_MEM
,
PCIMEM_SIZE
,
MT_DEVICE
},
{
PCICFG0_BASE
,
DC21285_PCI_TYPE_0_CONFIG
,
PCICFG0_SIZE
,
MT_DEVICE
},
{
PCICFG1_BASE
,
DC21285_PCI_TYPE_1_CONFIG
,
PCICFG1_SIZE
,
MT_DEVICE
},
{
PCIIACK_BASE
,
DC21285_PCI_IACK
,
PCIIACK_SIZE
,
MT_DEVICE
},
{
PCIO_BASE
,
DC21285_PCI_IO
,
PCIO_SIZE
,
MT_DEVICE
}
#endif
LAST_DESC
};
/*
...
...
@@ -53,33 +52,27 @@ static struct map_desc ebsa285_host_io_desc[] __initdata = {
*/
static
struct
map_desc
co285_io_desc
[]
__initdata
=
{
#ifdef CONFIG_ARCH_CO285
{
PCIO_BASE
,
DC21285_PCI_IO
,
PCIO_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
PCIMEM_BASE
,
DC21285_PCI_MEM
,
PCIMEM_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
PCIO_BASE
,
DC21285_PCI_IO
,
PCIO_SIZE
,
MT_DEVICE
},
{
PCIMEM_BASE
,
DC21285_PCI_MEM
,
PCIMEM_SIZE
,
MT_DEVICE
}
#endif
LAST_DESC
};
void
__init
footbridge_map_io
(
void
)
{
struct
map_desc
*
desc
=
NULL
;
/*
* Set up the common mapping first; we need this to
* determine whether we're in host mode or not.
*/
iotable_init
(
fb_common_io_desc
);
iotable_init
(
fb_common_io_desc
,
ARRAY_SIZE
(
fb_common_io_desc
)
);
/*
* Now, work out what we've got to map in addition on this
* platform.
*/
if
(
machine_is_co285
())
desc
=
co285_io_desc
;
else
if
(
footbridge_cfn_mode
())
desc
=
ebsa285_host_io_desc
;
if
(
desc
)
iotable_init
(
desc
);
iotable_init
(
co285_io_desc
,
ARRAY_SIZE
(
co285_io_desc
));
if
(
footbridge_cfn_mode
())
iotable_init
(
ebsa285_host_io_desc
,
ARRAY_SIZE
(
ebsa285_host_io_desc
));
}
#ifdef CONFIG_FOOTBRIDGE_ADDIN
...
...
arch/arm/mach-ftvpci/core.c
View file @
ea1e2d62
...
...
@@ -8,6 +8,7 @@
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/init.h>
...
...
@@ -76,17 +77,16 @@ static void __init ftvpci_init_irq(void)
}
static
struct
map_desc
ftvpci_io_desc
[]
__initdata
=
{
{
INTCONT_BASE
,
INTCONT_START
,
0x00001000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
PLX_BASE
,
PLX_START
,
0x00001000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
PCIO_BASE
,
PLX_IO_START
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
DUART_BASE
,
DUART_START
,
0x00001000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
STATUS_BASE
,
STATUS_START
,
0x00001000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
LAST_DESC
{
INTCONT_BASE
,
INTCONT_START
,
0x00001000
,
MT_DEVICE
},
{
PLX_BASE
,
PLX_START
,
0x00001000
,
MT_DEVICE
},
{
PCIO_BASE
,
PLX_IO_START
,
0x00100000
,
MT_DEVICE
},
{
DUART_BASE
,
DUART_START
,
0x00001000
,
MT_DEVICE
},
{
STATUS_BASE
,
STATUS_START
,
0x00001000
,
MT_DEVICE
}
};
static
void
__init
ftvpci_map_io
(
void
)
{
iotable_init
(
ftvpci_io_desc
);
iotable_init
(
ftvpci_io_desc
,
ARRAY_SIZE
(
ftvpci_io_desc
)
);
}
MACHINE_START
(
NEXUSPCI
,
"FTV/PCI"
)
...
...
arch/arm/mach-integrator/mm.c
View file @
ea1e2d62
...
...
@@ -20,14 +20,11 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <asm/hardware.h>
#include <asm/io.h>
#include <asm/pgtable.h>
#include <asm/page.h>
#include <asm/mach/map.h>
...
...
@@ -53,26 +50,25 @@
*/
static
struct
map_desc
integrator_io_desc
[]
__initdata
=
{
{
IO_ADDRESS
(
INTEGRATOR_HDR_BASE
),
INTEGRATOR_HDR_BASE
,
SZ_4K
,
DOMAIN_IO
,
0
,
1
},
{
IO_ADDRESS
(
INTEGRATOR_SC_BASE
),
INTEGRATOR_SC_BASE
,
SZ_4K
,
DOMAIN_IO
,
0
,
1
},
{
IO_ADDRESS
(
INTEGRATOR_EBI_BASE
),
INTEGRATOR_EBI_BASE
,
SZ_4K
,
DOMAIN_IO
,
0
,
1
},
{
IO_ADDRESS
(
INTEGRATOR_CT_BASE
),
INTEGRATOR_CT_BASE
,
SZ_4K
,
DOMAIN_IO
,
0
,
1
},
{
IO_ADDRESS
(
INTEGRATOR_IC_BASE
),
INTEGRATOR_IC_BASE
,
SZ_4K
,
DOMAIN_IO
,
0
,
1
},
{
IO_ADDRESS
(
INTEGRATOR_RTC_BASE
),
INTEGRATOR_RTC_BASE
,
SZ_4K
,
DOMAIN_IO
,
0
,
1
},
{
IO_ADDRESS
(
INTEGRATOR_UART0_BASE
),
INTEGRATOR_UART0_BASE
,
SZ_4K
,
DOMAIN_IO
,
0
,
1
},
{
IO_ADDRESS
(
INTEGRATOR_UART1_BASE
),
INTEGRATOR_UART1_BASE
,
SZ_4K
,
DOMAIN_IO
,
0
,
1
},
{
IO_ADDRESS
(
INTEGRATOR_KBD_BASE
),
INTEGRATOR_KBD_BASE
,
SZ_4K
,
DOMAIN_IO
,
0
,
1
},
{
IO_ADDRESS
(
INTEGRATOR_MOUSE_BASE
),
INTEGRATOR_MOUSE_BASE
,
SZ_4K
,
DOMAIN_IO
,
0
,
1
},
{
IO_ADDRESS
(
INTEGRATOR_DBG_BASE
),
INTEGRATOR_DBG_BASE
,
SZ_4K
,
DOMAIN_IO
,
0
,
1
},
{
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_64K
,
DOMAIN_IO
,
0
,
1
},
{
PCI_IO_VADDR
,
PHYS_PCI_IO_BASE
,
SZ_64K
,
DOMAIN_IO
,
0
,
1
},
LAST_DESC
{
IO_ADDRESS
(
INTEGRATOR_HDR_BASE
),
INTEGRATOR_HDR_BASE
,
SZ_4K
,
MT_DEVICE
},
{
IO_ADDRESS
(
INTEGRATOR_SC_BASE
),
INTEGRATOR_SC_BASE
,
SZ_4K
,
MT_DEVICE
},
{
IO_ADDRESS
(
INTEGRATOR_EBI_BASE
),
INTEGRATOR_EBI_BASE
,
SZ_4K
,
MT_DEVICE
},
{
IO_ADDRESS
(
INTEGRATOR_CT_BASE
),
INTEGRATOR_CT_BASE
,
SZ_4K
,
MT_DEVICE
},
{
IO_ADDRESS
(
INTEGRATOR_IC_BASE
),
INTEGRATOR_IC_BASE
,
SZ_4K
,
MT_DEVICE
},
{
IO_ADDRESS
(
INTEGRATOR_RTC_BASE
),
INTEGRATOR_RTC_BASE
,
SZ_4K
,
MT_DEVICE
},
{
IO_ADDRESS
(
INTEGRATOR_UART0_BASE
),
INTEGRATOR_UART0_BASE
,
SZ_4K
,
MT_DEVICE
},
{
IO_ADDRESS
(
INTEGRATOR_UART1_BASE
),
INTEGRATOR_UART1_BASE
,
SZ_4K
,
MT_DEVICE
},
{
IO_ADDRESS
(
INTEGRATOR_KBD_BASE
),
INTEGRATOR_KBD_BASE
,
SZ_4K
,
MT_DEVICE
},
{
IO_ADDRESS
(
INTEGRATOR_MOUSE_BASE
),
INTEGRATOR_MOUSE_BASE
,
SZ_4K
,
MT_DEVICE
},
{
IO_ADDRESS
(
INTEGRATOR_DBG_BASE
),
INTEGRATOR_DBG_BASE
,
SZ_4K
,
MT_DEVICE
},
{
IO_ADDRESS
(
INTEGRATOR_GPIO_BASE
),
INTEGRATOR_GPIO_BASE
,
SZ_4K
,
MT_DEVICE
},
{
PCI_MEMORY_VADDR
,
PHYS_PCI_MEM_BASE
,
SZ_16M
,
MT_DEVICE
},
{
PCI_CONFIG_VADDR
,
PHYS_PCI_CONFIG_BASE
,
SZ_16M
,
MT_DEVICE
},
{
PCI_V3_VADDR
,
PHYS_PCI_V3_BASE
,
SZ_64K
,
MT_DEVICE
},
{
PCI_IO_VADDR
,
PHYS_PCI_IO_BASE
,
SZ_64K
,
MT_DEVICE
}
};
void
__init
integrator_map_io
(
void
)
{
iotable_init
(
integrator_io_desc
);
iotable_init
(
integrator_io_desc
,
ARRAY_SIZE
(
integrator_io_desc
)
);
}
arch/arm/mach-iop310/mm.c
View file @
ea1e2d62
...
...
@@ -14,6 +14,7 @@
*
*/
#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/init.h>
...
...
@@ -32,17 +33,16 @@
* Standard IO mapping for all IOP310 based systems
*/
static
struct
map_desc
iop80310_std_desc
[]
__initdata
=
{
/* virtual physical length
domain r w c b
*/
/* virtual physical length
type
*/
// IOP310 Memory Mapped Registers
{
0xe8001000
,
0x00001000
,
0x00001000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
0xe8001000
,
0x00001000
,
0x00001000
,
MT_DEVICE
},
// PCI I/O Space
{
0xfe000000
,
0x90000000
,
0x00020000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
LAST_DESC
{
0xfe000000
,
0x90000000
,
0x00020000
,
MT_DEVICE
}
};
void
__init
iop310_map_io
(
void
)
{
iotable_init
(
iop80310_std_desc
);
iotable_init
(
iop80310_std_desc
,
ARRAY_SIZE
(
iop80310_std_desc
)
);
}
/*
...
...
@@ -50,10 +50,9 @@ void __init iop310_map_io(void)
*/
#ifdef CONFIG_ARCH_IQ80310
static
struct
map_desc
iq80310_io_desc
[]
__initdata
=
{
/* virtual physical length
domain r w c b
*/
/* virtual physical length
type
*/
// IQ80310 On-Board Devices
{
0xfe800000
,
0xfe800000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
LAST_DESC
{
0xfe800000
,
0xfe800000
,
0x00100000
,
MT_DEVICE
}
};
void
__init
iq80310_map_io
(
void
)
...
...
@@ -65,7 +64,7 @@ void __init iq80310_map_io(void)
iop310_map_io
();
iotable_init
(
iq80310_io_desc
);
iotable_init
(
iq80310_io_desc
,
ARRAY_SIZE
(
iq80310_io_desc
)
);
}
#endif // CONFIG_ARCH_IQ80310
arch/arm/mach-l7200/core.c
View file @
ea1e2d62
...
...
@@ -6,6 +6,7 @@
* Extra MM routines for L7200 architecture
*/
#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <asm/hardware.h>
...
...
@@ -69,17 +70,16 @@ static void __init l7200_init_irq(void)
}
static
struct
map_desc
l7200_io_desc
[]
__initdata
=
{
{
IO_BASE
,
IO_START
,
IO_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
IO_BASE_2
,
IO_START_2
,
IO_SIZE_2
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
AUX_BASE
,
AUX_START
,
AUX_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
FLASH1_BASE
,
FLASH1_START
,
FLASH1_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
{
FLASH2_BASE
,
FLASH2_START
,
FLASH2_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
LAST_DESC
{
IO_BASE
,
IO_START
,
IO_SIZE
,
MT_DEVICE
},
{
IO_BASE_2
,
IO_START_2
,
IO_SIZE_2
,
MT_DEVICE
},
{
AUX_BASE
,
AUX_START
,
AUX_SIZE
,
MT_DEVICE
},
{
FLASH1_BASE
,
FLASH1_START
,
FLASH1_SIZE
,
MT_DEVICE
},
{
FLASH2_BASE
,
FLASH2_START
,
FLASH2_SIZE
,
MT_DEVICE
}
};
static
void
__init
l7200_map_io
(
void
)
{
iotable_init
(
l7200_io_desc
);
iotable_init
(
l7200_io_desc
,
ARRAY_SIZE
(
l7200_io_desc
)
);
}
MACHINE_START
(
L7200
,
"LinkUp Systems L7200"
)
...
...
arch/arm/mach-pxa/generic.c
View file @
ea1e2d62
...
...
@@ -88,16 +88,15 @@ EXPORT_SYMBOL(pxa_gpio_mode);
* cache flush area.
*/
static
struct
map_desc
standard_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xf6000000
,
0x20000000
,
0x01000000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* PCMCIA0 IO */
{
0xf7000000
,
0x30000000
,
0x01000000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* PCMCIA1 IO */
{
0xfc000000
,
0x40000000
,
0x01400000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Devs */
{
0xfe000000
,
0x44000000
,
0x00200000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* LCD */
{
0xff000000
,
0x48000000
,
0x00200000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Mem Ctl */
LAST_DESC
/* virtual physical length type */
{
0xf6000000
,
0x20000000
,
0x01000000
,
MT_DEVICE
},
/* PCMCIA0 IO */
{
0xf7000000
,
0x30000000
,
0x01000000
,
MT_DEVICE
},
/* PCMCIA1 IO */
{
0xfc000000
,
0x40000000
,
0x01400000
,
MT_DEVICE
},
/* Devs */
{
0xfe000000
,
0x44000000
,
0x00200000
,
MT_DEVICE
},
/* LCD */
{
0xff000000
,
0x48000000
,
0x00200000
,
MT_DEVICE
}
/* Mem Ctl */
};
void
__init
pxa_map_io
(
void
)
{
iotable_init
(
standard_io_desc
);
iotable_init
(
standard_io_desc
,
ARRAY_SIZE
(
standard_io_desc
)
);
}
arch/arm/mach-pxa/idp.c
View file @
ea1e2d62
...
...
@@ -10,6 +10,7 @@
* 2001-09-13: Cliff Brake <cbrake@accelent.com>
* Initial code
*/
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/major.h>
#include <linux/fs.h>
...
...
@@ -69,45 +70,38 @@ static void __init idp_init_irq(void)
}
static
struct
map_desc
idp_io_desc
[]
__initdata
=
{
/* virtual physical length
domain r w c b
*/
/* virtual physical length
type
*/
#ifndef PXA_IDP_REV02
{
IDP_CTRL_PORT_BASE
,
IDP_CTRL_PORT_PHYS
,
IDP_CTRL_PORT_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
MT_DEVICE
},
#endif
{
IDP_IDE_BASE
,
IDP_IDE_PHYS
,
IDP_IDE_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
MT_DEVICE
},
{
IDP_ETH_BASE
,
IDP_ETH_PHYS
,
IDP_ETH_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
MT_DEVICE
},
{
IDP_COREVOLT_BASE
,
IDP_COREVOLT_PHYS
,
IDP_COREVOLT_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
MT_DEVICE
},
{
IDP_CPLD_BASE
,
IDP_CPLD_PHYS
,
IDP_CPLD_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
LAST_DESC
MT_DEVICE
}
};
static
void
__init
idp_map_io
(
void
)
{
pxa_map_io
();
iotable_init
(
idp_io_desc
);
iotable_init
(
idp_io_desc
,
ARRAY_SIZE
(
idp_io_desc
)
);
set_GPIO_IRQ_edge
(
IRQ_TO_GPIO_2_80
(
TOUCH_PANEL_IRQ
),
TOUCH_PANEL_IRQ_EDGE
);
}
...
...
arch/arm/mach-pxa/lubbock.c
View file @
ea1e2d62
...
...
@@ -11,6 +11,7 @@
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/major.h>
#include <linux/fs.h>
...
...
@@ -120,18 +121,17 @@ static int __init lubbock_init(void)
__initcall
(
lubbock_init
);
static
struct
map_desc
lubbock_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xf0000000
,
0x08000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* CPLD */
{
0xf1000000
,
0x0c000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* LAN91C96 IO */
{
0xf1100000
,
0x0e000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* LAN91C96 Attr */
{
0xf4000000
,
0x10000000
,
0x00400000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* SA1111 */
LAST_DESC
/* virtual physical length type */
{
0xf0000000
,
0x08000000
,
0x00100000
,
MT_DEVICE
},
/* CPLD */
{
0xf1000000
,
0x0c000000
,
0x00100000
,
MT_DEVICE
},
/* LAN91C96 IO */
{
0xf1100000
,
0x0e000000
,
0x00100000
,
MT_DEVICE
},
/* LAN91C96 Attr */
{
0xf4000000
,
0x10000000
,
0x00400000
,
MT_DEVICE
}
/* SA1111 */
};
static
void
__init
lubbock_map_io
(
void
)
{
pxa_map_io
();
iotable_init
(
lubbock_io_desc
);
iotable_init
(
lubbock_io_desc
,
ARRAY_SIZE
(
lubbock_io_desc
)
);
/* This enables the BTUART */
CKEN
|=
CKEN7_BTUART
;
...
...
arch/arm/mach-rpc/riscpc.c
View file @
ea1e2d62
...
...
@@ -9,6 +9,7 @@
*
* Architecture specific fixups.
*/
#include <linux/kernel.h>
#include <linux/tty.h>
#include <linux/delay.h>
#include <linux/pm.h>
...
...
@@ -61,15 +62,14 @@ __tagtable(ATAG_ACORN, parse_tag_acorn);
#endif
static
struct
map_desc
rpc_io_desc
[]
__initdata
=
{
{
SCREEN_BASE
,
SCREEN_START
,
2
*
1048576
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* VRAM */
{
IO_BASE
,
IO_START
,
IO_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* IO space */
{
EASI_BASE
,
EASI_START
,
EASI_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* EASI space */
LAST_DESC
{
SCREEN_BASE
,
SCREEN_START
,
2
*
1048576
,
MT_DEVICE
},
/* VRAM */
{
IO_BASE
,
IO_START
,
IO_SIZE
,
MT_DEVICE
},
/* IO space */
{
EASI_BASE
,
EASI_START
,
EASI_SIZE
,
MT_DEVICE
}
/* EASI space */
};
void
__init
rpc_map_io
(
void
)
{
iotable_init
(
rpc_io_desc
);
iotable_init
(
rpc_io_desc
,
ARRAY_SIZE
(
rpc_io_desc
)
);
/*
* RiscPC can't handle half-word loads and stores
...
...
arch/arm/mach-sa1100/adsbitsy.c
View file @
ea1e2d62
...
...
@@ -9,7 +9,7 @@
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
...
...
@@ -77,9 +77,8 @@ static void __init adsbitsy_init_irq(void)
}
static
struct
map_desc
adsbitsy_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xf4000000
,
0x18000000
,
0x00800000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* SA1111 */
LAST_DESC
/* virtual physical length type */
{
0xf4000000
,
0x18000000
,
0x00800000
,
MT_DEVICE
}
/* SA1111 */
};
static
int
adsbitsy_uart_open
(
struct
uart_port
*
port
,
struct
uart_info
*
info
)
...
...
@@ -106,7 +105,7 @@ static struct sa1100_port_fns adsbitsy_port_fns __initdata = {
static
void
__init
adsbitsy_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
adsbitsy_io_desc
);
iotable_init
(
adsbitsy_io_desc
,
ARRAY_SIZE
(
adsbitsy_io_desc
)
);
sa1100_register_uart_fns
(
&
adsbitsy_port_fns
);
sa1100_register_uart
(
0
,
3
);
...
...
arch/arm/mach-sa1100/assabet.c
View file @
ea1e2d62
...
...
@@ -171,15 +171,6 @@ fixup_assabet(struct machine_desc *desc, struct tag *tags,
}
static
struct
map_desc
assabet_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xf1000000
,
0x12000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Board Control Register */
{
0xf2800000
,
0x4b800000
,
0x00800000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* MQ200 */
/* f3000000 - neponset system registers */
/* f4000000 - neponset SA1111 registers */
LAST_DESC
};
static
void
assabet_uart_pm
(
struct
uart_port
*
port
,
u_int
state
,
u_int
oldstate
)
{
if
(
port
->
mapbase
==
_Ser1UTCR0
)
{
...
...
@@ -255,12 +246,18 @@ static struct sa1100_port_fns assabet_port_fns __initdata = {
pm:
assabet_uart_pm
,
};
static
struct
map_desc
assabet_io_desc
[]
__initdata
=
{
/* virtual physical length type */
{
0xf1000000
,
0x12000000
,
0x00100000
,
MT_DEVICE
},
/* Board Control Register */
{
0xf2800000
,
0x4b800000
,
0x00800000
,
MT_DEVICE
}
/* MQ200 */
};
static
void
__init
assabet_map_io
(
void
)
{
extern
void
neponset_map_io
(
void
);
sa1100_map_io
();
iotable_init
(
assabet_io_desc
);
iotable_init
(
assabet_io_desc
,
ARRAY_SIZE
(
assabet_io_desc
)
);
if
(
machine_has_neponset
())
{
#ifdef CONFIG_ASSABET_NEPONSET
...
...
arch/arm/mach-sa1100/badge4.c
View file @
ea1e2d62
...
...
@@ -145,17 +145,16 @@ EXPORT_SYMBOL(badge4_set_5V);
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 */
{
0xf2000000
,
0x10000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* SRAM bank 2 */
{
0xf4000000
,
0x48000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* SA-1111 */
LAST_DESC
/* virtual physical length type */
{
0xf1000000
,
0x08000000
,
0x00100000
,
MT_DEVICE
},
/* SRAM bank 1 */
{
0xf2000000
,
0x10000000
,
0x00100000
,
MT_DEVICE
},
/* SRAM bank 2 */
{
0xf4000000
,
0x48000000
,
0x00100000
,
MT_DEVICE
}
/* SA-1111 */
};
static
void
__init
badge4_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
badge4_io_desc
);
iotable_init
(
badge4_io_desc
,
ARRAY_SIZE
(
badge4_io_desc
)
);
sa1100_register_uart
(
0
,
3
);
sa1100_register_uart
(
1
,
1
);
...
...
arch/arm/mach-sa1100/cerf.c
View file @
ea1e2d62
...
...
@@ -36,20 +36,19 @@ static void __init cerf_init_irq(void)
}
static
struct
map_desc
cerf_io_desc
[]
__initdata
=
{
/* virtual physical length
domain r w c b
*/
{
0xf0000000
,
0x08000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Crystal Ethernet Chip */
/* virtual physical length
type
*/
{
0xf0000000
,
0x08000000
,
0x00100000
,
MT_DEVICE
}
/* Crystal Ethernet Chip */
#ifdef CONFIG_SA1100_CERF_CPLD
{
0xf1000000
,
0x40000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* CPLD Chip */
{
0xf2000000
,
0x10000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* CerfPDA Bluetooth */
{
0xf3000000
,
0x18000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* CerfPDA Serial */
,{
0xf1000000
,
0x40000000
,
0x00100000
,
MT_DEVICE
},
/* CPLD Chip */
{
0xf2000000
,
0x10000000
,
0x00100000
,
MT_DEVICE
},
/* CerfPDA Bluetooth */
{
0xf3000000
,
0x18000000
,
0x00100000
,
MT_DEVICE
}
/* CerfPDA Serial */
#endif
LAST_DESC
};
static
void
__init
cerf_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
cerf_io_desc
);
iotable_init
(
cerf_io_desc
,
ARRAY_SIZE
(
cerf_io_desc
)
);
sa1100_register_uart
(
0
,
3
);
#ifdef CONFIG_SA1100_CERF_IRDA_ENABLED
...
...
arch/arm/mach-sa1100/empeg.c
View file @
ea1e2d62
...
...
@@ -16,15 +16,14 @@
#include "generic.h"
static
struct
map_desc
empeg_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
EMPEG_FLASHBASE
,
0x00000000
,
0x00200000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Flash */
LAST_DESC
/* virtual physical length type */
{
EMPEG_FLASHBASE
,
0x00000000
,
0x00200000
,
MT_DEVICE
}
/* Flash */
};
static
void
__init
empeg_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
empeg_io_desc
);
iotable_init
(
empeg_io_desc
,
ARRAY_SIZE
(
empeg_io_desc
)
);
sa1100_register_uart
(
0
,
1
);
sa1100_register_uart
(
1
,
3
);
...
...
arch/arm/mach-sa1100/flexanet.c
View file @
ea1e2d62
...
...
@@ -152,18 +152,17 @@ __initcall(flexanet_init);
static
struct
map_desc
flexanet_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xf0000000
,
0x10000000
,
0x00001000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Board Control Register */
{
0xf1000000
,
0x18000000
,
0x01000000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Ethernet controller */
{
0xD0000000
,
0x40000000
,
0x01000000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Instrument boards */
{
0xD8000000
,
0x48000000
,
0x01000000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* External peripherals */
LAST_DESC
/* virtual physical length type */
{
0xf0000000
,
0x10000000
,
0x00001000
,
MT_DEVICE
},
/* Board Control Register */
{
0xf1000000
,
0x18000000
,
0x01000000
,
MT_DEVICE
},
/* Ethernet controller */
{
0xD0000000
,
0x40000000
,
0x01000000
,
MT_DEVICE
},
/* Instrument boards */
{
0xD8000000
,
0x48000000
,
0x01000000
,
MT_DEVICE
}
/* External peripherals */
};
static
void
__init
flexanet_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
flexanet_io_desc
);
iotable_init
(
flexanet_io_desc
,
ARRAY_SIZE
(
flexanet_io_desc
)
);
flexanet_serial_init
();
/* wakeup source is GPIO-0 only */
...
...
arch/arm/mach-sa1100/freebird.c
View file @
ea1e2d62
...
...
@@ -43,8 +43,6 @@ static int __init freebird_init(void)
if
(
machine_is_freebird
())
{
sa1100fb_backlight_power
=
freebird_backlight_power
;
sa1100fb_lcd_power
=
freebird_lcd_power
;
set_GPIO_IRQ_edge
(
GPIO_FREEBIRD_UCB1300
,
GPIO_RISING_EDGE
);
}
return
0
;
}
...
...
@@ -52,16 +50,15 @@ static int __init freebird_init(void)
__initcall
(
freebird_init
);
static
struct
map_desc
freebird_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xf0000000
,
0x12000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Board Control Register */
{
0xf2000000
,
0x19000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
LAST_DESC
/* virtual physical length type */
{
0xf0000000
,
0x12000000
,
0x00100000
,
MT_DEVICE
},
/* Board Control Register */
{
0xf2000000
,
0x19000000
,
0x00100000
,
MT_DEVICE
}
};
static
void
__init
freebird_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
freebird_io_desc
);
iotable_init
(
freebird_io_desc
,
ARRAY_SIZE
(
freebird_io_desc
)
);
sa1100_register_uart
(
0
,
3
);
sa1100_register_uart
(
1
,
1
);
...
...
arch/arm/mach-sa1100/generic.c
View file @
ea1e2d62
...
...
@@ -134,8 +134,6 @@ EXPORT_SYMBOL(sa1100fb_lcd_power);
*
* Typically, static virtual address mappings are as follow:
*
* 0xe8000000-0xefffffff: flash memory (especially when multiple flash
* banks need to be mapped contigously)
* 0xf0000000-0xf3ffffff: miscellaneous stuff (CPLDs, etc.)
* 0xf4000000-0xf4ffffff: SA-1111
* 0xf5000000-0xf5ffffff: reserved (used by cache flushing area)
...
...
@@ -150,17 +148,16 @@ EXPORT_SYMBOL(sa1100fb_lcd_power);
*/
static
struct
map_desc
standard_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xf8000000
,
0x80000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* PCM */
{
0xfa000000
,
0x90000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* SCM */
{
0xfc000000
,
0xa0000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* MER */
{
0xfe000000
,
0xb0000000
,
0x00200000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* LCD + DMA */
LAST_DESC
/* virtual physical length type */
{
0xf8000000
,
0x80000000
,
0x00100000
,
MT_DEVICE
},
/* PCM */
{
0xfa000000
,
0x90000000
,
0x00100000
,
MT_DEVICE
},
/* SCM */
{
0xfc000000
,
0xa0000000
,
0x00100000
,
MT_DEVICE
},
/* MER */
{
0xfe000000
,
0xb0000000
,
0x00200000
,
MT_DEVICE
}
/* LCD + DMA */
};
void
__init
sa1100_map_io
(
void
)
{
iotable_init
(
standard_io_desc
);
iotable_init
(
standard_io_desc
,
ARRAY_SIZE
(
standard_io_desc
)
);
}
/*
...
...
@@ -203,3 +200,4 @@ void __init sa1110_mb_enable(void)
local_irq_restore
(
flags
);
}
arch/arm/mach-sa1100/graphicsclient.c
View file @
ea1e2d62
...
...
@@ -9,7 +9,7 @@
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
...
...
@@ -121,10 +121,9 @@ static void __init graphicsclient_init_irq(void)
static
struct
map_desc
graphicsclient_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xf0000000
,
0x10000000
,
0x00400000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* CPLD */
{
0xf1000000
,
0x18000000
,
0x00400000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* CAN */
LAST_DESC
/* virtual physical length type */
{
0xf0000000
,
0x10000000
,
0x00400000
,
MT_DEVICE
},
/* CPLD */
{
0xf1000000
,
0x18000000
,
0x00400000
,
MT_DEVICE
}
/* CAN */
};
static
u_int
graphicsclient_get_mctrl
(
struct
uart_port
*
port
)
...
...
@@ -187,7 +186,7 @@ static struct sa1100_port_fns graphicsclient_port_fns __initdata = {
static
void
__init
graphicsclient_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
graphicsclient_io_desc
);
iotable_init
(
graphicsclient_io_desc
,
ARRAY_SIZE
(
graphicsclient_io_desc
)
);
sa1100_register_uart_fns
(
&
graphicsclient_port_fns
);
sa1100_register_uart
(
0
,
3
);
...
...
arch/arm/mach-sa1100/graphicsmaster.c
View file @
ea1e2d62
...
...
@@ -7,7 +7,7 @@
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
...
...
@@ -153,11 +153,10 @@ static void __init graphicsmaster_init_irq(void)
static
struct
map_desc
graphicsmaster_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xf0000000
,
0x10000000
,
0x00400000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* CPLD */
{
0xf1000000
,
0x40000000
,
0x00400000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* CAN */
{
0xf4000000
,
0x18000000
,
0x00800000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* SA-1111 */
LAST_DESC
/* virtual physical length type */
{
0xf0000000
,
0x10000000
,
0x00400000
,
MT_DEVICE
},
/* CPLD */
{
0xf1000000
,
0x40000000
,
0x00400000
,
MT_DEVICE
},
/* CAN */
{
0xf4000000
,
0x18000000
,
0x00800000
,
MT_DEVICE
}
/* SA-1111 */
};
#error Old code. Someone needs to decide what to do about this.
...
...
@@ -244,7 +243,7 @@ static struct sa1100_port_fns graphicsmaster_port_fns __initdata = {
static
void
__init
graphicsmaster_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
graphicsmaster_io_desc
);
iotable_init
(
graphicsmaster_io_desc
,
ARRAY_SIZE
(
graphicsmaster_io_desc
)
);
sa1100_register_uart_fns
(
&
graphicsmaster_port_fns
);
sa1100_register_uart
(
0
,
3
);
...
...
arch/arm/mach-sa1100/h3600.c
View file @
ea1e2d62
...
...
@@ -434,17 +434,16 @@ static struct sa1100_port_fns h3600_port_fns __initdata = {
};
static
struct
map_desc
h3600_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
H3600_EGPIO_VIRT
,
0x49000000
,
0x01000000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* EGPIO 0 CS#5 */
{
H3600_BANK_2_VIRT
,
0x10000000
,
0x02800000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* static memory bank 2 CS#2 */
{
H3600_BANK_4_VIRT
,
0x40000000
,
0x00800000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* static memory bank 4 CS#4 */
LAST_DESC
/* virtual physical length type */
{
H3600_EGPIO_VIRT
,
0x49000000
,
0x01000000
,
MT_DEVICE
},
/* EGPIO 0 CS#5 */
{
H3600_BANK_2_VIRT
,
0x10000000
,
0x02800000
,
MT_DEVICE
},
/* static memory bank 2 CS#2 */
{
H3600_BANK_4_VIRT
,
0x40000000
,
0x00800000
,
MT_DEVICE
}
/* static memory bank 4 CS#4 */
};
static
void
__init
h3600_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
h3600_io_desc
);
iotable_init
(
h3600_io_desc
,
ARRAY_SIZE
(
h3600_io_desc
)
);
sa1100_register_uart_fns
(
&
h3600_port_fns
);
sa1100_register_uart
(
0
,
3
);
...
...
arch/arm/mach-sa1100/huw_webpanel.c
View file @
ea1e2d62
...
...
@@ -60,16 +60,15 @@ __initcall(init_huw_cs3);
area size = 288 kByte (0x48000 Bytes)
**/
static
struct
map_desc
huw_webpanel_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xf0000000
,
0xc1fb8000
,
0x00048000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Parameter */
{
0xf1000000
,
0x18000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Paules CS3, write only */
LAST_DESC
/* virtual physical length type */
{
0xf0000000
,
0xc1fb8000
,
0x00048000
,
MT_DEVICE
},
/* Parameter */
{
0xf1000000
,
0x18000000
,
0x00100000
,
MT_DEVICE
}
/* Paules CS3, write only */
};
static
void
__init
huw_webpanel_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
huw_webpanel_io_desc
);
iotable_init
(
huw_webpanel_io_desc
,
ARRAY_SIZE
(
huw_webpanel_io_desc
)
);
sa1100_register_uart
(
0
,
3
);
sa1100_register_uart
(
1
,
1
);
...
...
arch/arm/mach-sa1100/itsy.c
View file @
ea1e2d62
...
...
@@ -18,16 +18,14 @@
/* BRADFIXME The egpio addresses aren't verifiably correct. (i.e. they're most
likely wrong. */
static
struct
map_desc
itsy_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xe8000000
,
0x00000000
,
0x02000000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Flash bank 0 */
{
0xf0000000
,
0x49000000
,
0x01000000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* EGPIO 0 */
LAST_DESC
/* virtual physical length type */
{
0xf0000000
,
0x49000000
,
0x01000000
,
MT_DEVICE
}
/* EGPIO 0 */
};
static
void
__init
itsy_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
itsy_io_desc
);
iotable_init
(
itsy_io_desc
,
ARRAY_SIZE
(
itsy_io_desc
)
);
sa1100_register_uart
(
0
,
3
);
sa1100_register_uart
(
1
,
1
);
...
...
arch/arm/mach-sa1100/jornada720.c
View file @
ea1e2d62
...
...
@@ -56,17 +56,16 @@ static int __init jornada720_init(void)
__initcall
(
jornada720_init
);
static
struct
map_desc
jornada720_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xf0000000
,
0x48000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Epson registers */
{
0xf1000000
,
0x48200000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Epson frame buffer */
{
0xf4000000
,
0x40000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* SA-1111 */
LAST_DESC
/* virtual physical length type */
{
0xf0000000
,
0x48000000
,
0x00100000
,
MT_DEVICE
},
/* Epson registers */
{
0xf1000000
,
0x48200000
,
0x00100000
,
MT_DEVICE
},
/* Epson frame buffer */
{
0xf4000000
,
0x40000000
,
0x00100000
,
MT_DEVICE
}
/* SA-1111 */
};
static
void
__init
jornada720_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
jornada720_io_desc
);
iotable_init
(
jornada720_io_desc
,
ARRAY_SIZE
(
jornada720_io_desc
)
);
sa1100_register_uart
(
0
,
3
);
sa1100_register_uart
(
1
,
1
);
...
...
arch/arm/mach-sa1100/lart.c
View file @
ea1e2d62
...
...
@@ -17,16 +17,15 @@
static
struct
map_desc
lart_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xe8000000
,
0x00000000
,
0x00400000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* main flash memory */
{
0xec000000
,
0x08000000
,
0x00400000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* main flash, alternative location */
LAST_DESC
/* virtual physical length type */
{
0xe8000000
,
0x00000000
,
0x00400000
,
MT_DEVICE
},
/* main flash memory */
{
0xec000000
,
0x08000000
,
0x00400000
,
MT_DEVICE
}
/* main flash, alternative location */
};
static
void
__init
lart_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
lart_io_desc
);
iotable_init
(
lart_io_desc
,
ARRAY_SIZE
(
lart_io_desc
)
);
sa1100_register_uart
(
0
,
3
);
sa1100_register_uart
(
1
,
1
);
...
...
arch/arm/mach-sa1100/nanoengine.c
View file @
ea1e2d62
...
...
@@ -25,17 +25,15 @@ fixup_nanoengine(struct machine_desc *desc, struct tag *tags,
}
static
struct
map_desc
nanoengine_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xe8000000
,
0x00000000
,
0x02000000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Flash bank 0 */
{
0xf0000000
,
0x10000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* System Registers */
{
0xf1000000
,
0x18A00000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Internal PCI Config Space */
LAST_DESC
/* virtual physical length type */
{
0xf0000000
,
0x10000000
,
0x00100000
,
MT_DEVICE
},
/* System Registers */
{
0xf1000000
,
0x18A00000
,
0x00100000
,
MT_DEVICE
}
/* Internal PCI Config Space */
};
static
void
__init
nanoengine_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
nanoengine_io_desc
);
iotable_init
(
nanoengine_io_desc
,
ARRAY_SIZE
(
nanoengine_io_desc
)
);
sa1100_register_uart
(
0
,
1
);
sa1100_register_uart
(
1
,
2
);
...
...
arch/arm/mach-sa1100/neponset.c
View file @
ea1e2d62
...
...
@@ -2,7 +2,7 @@
* linux/arch/arm/mach-sa1100/neponset.c
*
*/
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
...
...
@@ -18,7 +18,9 @@
#include <asm/mach/irq.h>
#include <asm/mach/serial_sa1100.h>
#include <asm/arch/assabet.h>
#include <asm/arch/neponset.h>
#include <asm/hardware/sa1111.h>
#include <asm/sizes.h>
#include "sa1111.h"
...
...
@@ -216,13 +218,12 @@ static int __init neponset_init(void)
__initcall
(
neponset_init
);
static
struct
map_desc
neponset_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xf3000000
,
0x10000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* System Registers */
{
0xf4000000
,
0x40000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* SA-1111 */
LAST_DESC
/* virtual physical length type */
{
0xf3000000
,
0x10000000
,
SZ_1M
,
MT_DEVICE
},
/* System Registers */
{
0xf4000000
,
0x40000000
,
SZ_1M
,
MT_DEVICE
}
/* SA-1111 */
};
void
__init
neponset_map_io
(
void
)
{
iotable_init
(
neponset_io_desc
);
iotable_init
(
neponset_io_desc
,
ARRAY_SIZE
(
neponset_io_desc
)
);
}
arch/arm/mach-sa1100/omnimeter.c
View file @
ea1e2d62
...
...
@@ -41,15 +41,14 @@ static int __init omnimeter_init(void)
__initcall
(
omnimeter_init
);
static
struct
map_desc
omnimeter_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xd2000000
,
0x10000000
,
0x02000000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* TS */
LAST_DESC
/* virtual physical length type */
{
0xd2000000
,
0x10000000
,
0x02000000
,
MT_DEVICE
}
/* TS */
};
static
void
__init
omnimeter_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
omnimeter_io_desc
);
iotable_init
(
omnimeter_io_desc
,
ARRAY_SIZE
(
omnimeter_io_desc
)
);
sa1100_register_uart
(
0
,
3
);
sa1100_register_uart
(
1
,
1
);
...
...
arch/arm/mach-sa1100/pangolin.c
View file @
ea1e2d62
...
...
@@ -16,15 +16,14 @@
#include "generic.h"
static
struct
map_desc
pangolin_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xf2800000
,
0x4b800000
,
0x00800000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* MQ200 */
LAST_DESC
/* virtual physical length type */
{
0xf2800000
,
0x4b800000
,
0x00800000
,
MT_DEVICE
}
/* MQ200 */
};
static
void
__init
pangolin_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
pangolin_io_desc
);
iotable_init
(
pangolin_io_desc
,
ARRAY_SIZE
(
pangolin_io_desc
)
);
sa1100_register_uart
(
0
,
1
);
sa1100_register_uart
(
1
,
3
);
...
...
arch/arm/mach-sa1100/pfs168.c
View file @
ea1e2d62
...
...
@@ -56,28 +56,26 @@ static void __init pfs168_init_irq(void)
}
static
struct
map_desc
pfs168_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xe8000000
,
0x00000000
,
0x02000000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Flash bank 0 */
{
0xf0000000
,
0x10000000
,
0x00001000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* 16C752 DUART port A (COM5) */
{
0xf0001000
,
0x10800000
,
0x00001000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* 16C752 DUART port B (COM6) */
{
0xf0002000
,
0x11000000
,
0x00001000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* COM1 RTS control (SYSC1RTS) */
{
0xf0003000
,
0x11400000
,
0x00001000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Status LED control (SYSLED) */
{
0xf0004000
,
0x11800000
,
0x00001000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* DTMF code read (SYSDTMF) */
{
0xf0005000
,
0x11c00000
,
0x00001000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* LCD configure, enable (SYSLCDDE) */
{
0xf0006000
,
0x12000000
,
0x00001000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* COM1 DSR and motion sense (SYSC1DSR) */
{
0xf0007000
,
0x12800000
,
0x00001000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* COM3 xmit enable (SYSC3TEN) */
{
0xf0008000
,
0x13000000
,
0x00001000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Control register A (SYSCTLA) */
{
0xf0009000
,
0x13800000
,
0x00001000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Control register B (SYSCTLB) */
{
0xf000a000
,
0x18000000
,
0x00001000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* SMC91C96 */
{
0xf2800000
,
0x4b800000
,
0x00800000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* MQ200 */
{
0xf4000000
,
0x40000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* SA-1111 */
LAST_DESC
/* virtual physical length type */
{
0xf0000000
,
0x10000000
,
0x00001000
,
MT_DEVICE
},
/* 16C752 DUART port A (COM5) */
{
0xf0001000
,
0x10800000
,
0x00001000
,
MT_DEVICE
},
/* 16C752 DUART port B (COM6) */
{
0xf0002000
,
0x11000000
,
0x00001000
,
MT_DEVICE
},
/* COM1 RTS control (SYSC1RTS) */
{
0xf0003000
,
0x11400000
,
0x00001000
,
MT_DEVICE
},
/* Status LED control (SYSLED) */
{
0xf0004000
,
0x11800000
,
0x00001000
,
MT_DEVICE
},
/* DTMF code read (SYSDTMF) */
{
0xf0005000
,
0x11c00000
,
0x00001000
,
MT_DEVICE
},
/* LCD configure, enable (SYSLCDDE) */
{
0xf0006000
,
0x12000000
,
0x00001000
,
MT_DEVICE
},
/* COM1 DSR and motion sense (SYSC1DSR) */
{
0xf0007000
,
0x12800000
,
0x00001000
,
MT_DEVICE
},
/* COM3 xmit enable (SYSC3TEN) */
{
0xf0008000
,
0x13000000
,
0x00001000
,
MT_DEVICE
},
/* Control register A (SYSCTLA) */
{
0xf0009000
,
0x13800000
,
0x00001000
,
MT_DEVICE
},
/* Control register B (SYSCTLB) */
{
0xf000a000
,
0x18000000
,
0x00001000
,
MT_DEVICE
},
/* SMC91C96 */
{
0xf2800000
,
0x4b800000
,
0x00800000
,
MT_DEVICE
},
/* MQ200 */
{
0xf4000000
,
0x40000000
,
0x00100000
,
MT_DEVICE
}
/* SA-1111 */
};
static
void
__init
pfs168_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
pfs168_io_desc
);
iotable_init
(
pfs168_io_desc
,
ARRAY_SIZE
(
pfs168_io_desc
)
);
sa1100_register_uart
(
0
,
3
);
sa1100_register_uart
(
1
,
1
);
...
...
arch/arm/mach-sa1100/pleb.c
View file @
ea1e2d62
...
...
@@ -15,17 +15,9 @@
#include "generic.h"
static
struct
map_desc
pleb_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xe8000000
,
0x00000000
,
0x00400000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* main flash memory */
{
0xe8400000
,
0x08000000
,
0x00400000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* main flash, alternative location */
LAST_DESC
};
static
void
__init
pleb_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
pleb_io_desc
);
sa1100_register_uart
(
0
,
3
);
sa1100_register_uart
(
1
,
1
);
...
...
arch/arm/mach-sa1100/pm.c
View file @
ea1e2d62
...
...
@@ -18,12 +18,14 @@
* 2001-08-29: Nicolas Pitre <nico@cam.org>
* Cleaned up, pushed platform dependent stuff
* in the platform specific files.
*
* 2002-05-27: Nicolas Pitre Killed sleep.h and the kmalloced save array.
* Storage is local on the stack now.
*/
#include <linux/config.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/pm.h>
#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
#include <linux/sysctl.h>
...
...
@@ -35,7 +37,6 @@
#include <asm/system.h>
#include <asm/leds.h>
#include "sleep.h"
/*
* Debug macros
...
...
@@ -45,20 +46,32 @@
extern
void
sa1100_cpu_suspend
(
void
);
extern
void
sa1100_cpu_resume
(
void
);
extern
unsigned
long
*
sleep_save
;
/* virtual address */
extern
unsigned
long
sleep_save_p
;
/* physical address */
#define SAVE(x) sleep_save[SLEEP_SAVE_##x] = x
#define RESTORE(x) x = sleep_save[SLEEP_SAVE_##x]
/*
* List of global SA11x0 peripheral registers to preserve.
* More ones like CP and general purpose register values are preserved
* on the stack and then the stack pointer is stored last in sleep.S.
*/
enum
{
SLEEP_SAVE_SP
=
0
,
SLEEP_SAVE_OSCR
,
SLEEP_SAVE_OIER
,
SLEEP_SAVE_OSMR0
,
SLEEP_SAVE_OSMR1
,
SLEEP_SAVE_OSMR2
,
SLEEP_SAVE_OSMR3
,
SLEEP_SAVE_GPDR
,
SLEEP_SAVE_GRER
,
SLEEP_SAVE_GFER
,
SLEEP_SAVE_GAFR
,
SLEEP_SAVE_PPDR
,
SLEEP_SAVE_PPSR
,
SLEEP_SAVE_PPAR
,
SLEEP_SAVE_PSDR
,
SLEEP_SAVE_ICMR
,
SLEEP_SAVE_Ser1SDCR0
,
SLEEP_SAVE_SIZE
};
int
pm_do_suspend
(
void
)
{
/* set up pointer to sleep parameters */
sleep_save
=
kmalloc
(
SLEEP_SAVE_SIZE
*
sizeof
(
long
),
GFP_ATOMIC
);
if
(
!
sleep_save
)
return
-
ENOMEM
;
sleep_save_p
=
virt_to_phys
(
sleep_save
);
unsigned
long
sleep_save
[
SLEEP_SAVE_SIZE
];
cli
();
...
...
@@ -146,8 +159,6 @@ int pm_do_suspend(void)
sti
();
kfree
(
sleep_save
);
/*
* Restore the CPU frequency settings.
*/
...
...
@@ -158,6 +169,11 @@ int pm_do_suspend(void)
return
0
;
}
unsigned
long
sleep_phys_sp
(
void
*
sp
)
{
return
virt_to_phys
(
sp
);
}
#ifdef CONFIG_SYSCTL
/*
* ARGH! ACPI people defined CTL_ACPI in linux/acpi.h rather than
...
...
arch/arm/mach-sa1100/simpad.c
View file @
ea1e2d62
/*
* linux/arch/arm/mach-sa1100/simpad.c
*
*/
#include <linux/config.h>
...
...
@@ -41,10 +40,9 @@ void clear_cs3_bit(int value)
}
static
struct
map_desc
simpad_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xf2800000
,
0x4b800000
,
0x00800000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* MQ200 */
{
0xf1000000
,
0x18000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Paules CS3, write only */
LAST_DESC
/* virtual physical length type */
{
0xf2800000
,
0x4b800000
,
0x00800000
,
MT_DEVICE
},
/* MQ200 */
{
0xf1000000
,
0x18000000
,
0x00100000
,
MT_DEVICE
}
/* Paules CS3, write only */
};
...
...
@@ -65,7 +63,7 @@ static struct sa1100_port_fns simpad_port_fns __initdata = {
static
void
__init
simpad_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
simpad_io_desc
);
iotable_init
(
simpad_io_desc
,
ARRAY_SIZE
(
simpad_io_desc
)
);
PSPR
=
0xc0008000
;
GPDR
&=
~
GPIO_GPIO0
;
...
...
arch/arm/mach-sa1100/sleep.S
View file @
ea1e2d62
...
...
@@ -11,12 +11,20 @@
*
2001
-
02
-
06
:
Cliff
Brake
Initial
code
*
*
2001
-
08
-
29
:
Nicolas
Pitre
Simplified
.
*
*
2002
-
05
-
27
:
Nicolas
Pitre
Revisited
,
more
cleanup
and
simplification
.
*
Storage
is
on
the
stack
now
.
*/
#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/hardware.h>
#include "sleep.h"
.
text
/*
*
sa1100_cpu_suspend
()
...
...
@@ -25,35 +33,24 @@
*
*/
.
text
ENTRY
(
sa1100_cpu_suspend
)
ENTRY
(
sleep_save
)
.
word
0
@
virtual
address
of
parameter
array
ENTRY
(
sleep_save_p
)
.
word
0
@
physical
address
of
parameter
array
stmfd
sp
!,
{
r4
-
r12
,
lr
}
@
save
registers
on
stack
ENTRY
(
sa1100_cpu_suspend
)
@
get
coprocessor
registers
mrc
p15
,
0
,
r4
,
c3
,
c0
,
0
@
domain
ID
mrc
p15
,
0
,
r5
,
c2
,
c0
,
0
@
translation
table
base
addr
mrc
p15
,
0
,
r6
,
c13
,
c0
,
0
@
PID
mrc
p15
,
0
,
r7
,
c1
,
c0
,
0
@
control
reg
@
store
them
plus
current
virtual
stack
ptr
on
stack
stmfd
sp
!,
{
r4
-
r7
,
sp
}
@
save
registers
on
stack
stmfd
sp
!,
{
r4
-
r12
,
lr
}
@
load
virtual
address
for
sleep_save
array
ldr
r4
,
sleep_save
@
save
stack
pointer
str
sp
,
[
r4
,
#(
SLEEP_SAVE_SP
*
4
)]
@
save
coprocessor
registers
mrc
p15
,
0
,
r1
,
c1
,
c0
,
0
str
r1
,
[
r4
,
#(
SLEEP_SAVE_CP15_R1
*
4
)]
mrc
p15
,
0
,
r1
,
c2
,
c0
,
0
str
r1
,
[
r4
,
#(
SLEEP_SAVE_CP15_R2
*
4
)]
mrc
p15
,
0
,
r1
,
c3
,
c0
,
0
str
r1
,
[
r4
,
#(
SLEEP_SAVE_CP15_R3
*
4
)]
mrc
p15
,
0
,
r1
,
c5
,
c0
,
0
str
r1
,
[
r4
,
#(
SLEEP_SAVE_CP15_R5
*
4
)]
mrc
p15
,
0
,
r1
,
c6
,
c0
,
0
str
r1
,
[
r4
,
#(
SLEEP_SAVE_CP15_R6
*
4
)]
mrc
p15
,
0
,
r1
,
c13
,
c0
,
0
str
r1
,
[
r4
,
#(
SLEEP_SAVE_CP15_R13
*
4
)]
@
preserve
phys
address
of
stack
mov
r0
,
sp
bl
sleep_phys_sp
ldr
r1
,
=
sleep_save_sp
str
r0
,
[
r1
]
@
clean
data
cache
and
invalidate
WB
bl
cpu_sa1100_cache_clean_invalidate_all
...
...
@@ -79,25 +76,24 @@ ENTRY(sa1100_cpu_suspend)
mov
r0
,
#
90
bl
udelay
/*
setup
up
register
contents
for
jump
to
page
containing
SA1110
SDRAM
controller
bug
fix
suspend
code
*
*
r0
points
to
MSC0
register
*
r1
points
to
MSC1
register
*
r2
points
to
MSC2
register
*
r3
is
MSC0
value
*
r4
is
MSC1
value
*
r5
is
MSC2
value
*
r6
points
to
MDREFR
register
*
r7
is
first
MDREFR
value
*
r8
is
second
MDREFR
value
*
r9
is
pointer
to
MDCNFG
register
*
r10
is
MDCNFG
value
*
r11
is
third
MDREFR
value
*
r12
is
pointer
to
PMCR
register
*
r13
is
PMCR
value
(
1
)
*
*/
/
*
*
SA1110
SDRAM
controller
workaround
.
register
values
:
*
*
r0
=
&
MSC0
*
r1
=
&
MSC1
*
r2
=
&
MSC2
*
r3
=
MSC0
value
*
r4
=
MSC1
value
*
r5
=
MSC2
value
*
r6
=
&
MDREFR
*
r7
=
first
MDREFR
value
*
r8
=
second
MDREFR
value
*
r9
=
&
MDCNFG
*
r10
=
MDCNFG
value
*
r11
=
third
MDREFR
value
*
r12
=
&
PMCR
*
r13
=
PMCR
value
(
1
)
*/
ldr
r0
,
=
MSC0
ldr
r1
,
=
MSC1
...
...
@@ -170,69 +166,49 @@ sa1110_sdram_controller_fix:
*
*
entry
point
from
bootloader
into
kernel
during
resume
*
*
Note
:
Yes
,
part
of
the
following
code
is
located
into
the
.
data
section
.
*
This
is
to
allow
sleep_save_sp
to
be
accessed
with
a
relative
load
*
while
we
can
't rely on any MMU translation. We could have put
*
sleep_save_sp
in
the
.
text
section
as
well
,
but
some
setups
might
*
insist
on
it
to
be
truely
read
-
only
.
*/
.
data
.
align
5
ENTRY
(
sa1100_cpu_resume
)
@
set
SVC
,
irqs
off
mov
r0
,
#
PSR_F_BIT
| PSR_I_BIT |
MODE_SVC
msr
cpsr_c
,
r0
@
load
physical
address
of
sleep_save
ldr
r4
,
sleep_save_p
msr
cpsr_c
,
r0
@
set
SVC
,
irqs
off
@
restore
cp15_r3
,
domain
id
ldr
r1
,
[
r4
,
#(
SLEEP_SAVE_CP15_R3
*
4
)]
mcr
p15
,
0
,
r1
,
c3
,
c0
,
0
@
restore
cp15_r2
,
translation
table
base
address
ldr
r1
,
[
r4
,
#(
SLEEP_SAVE_CP15_R2
*
4
)]
mcr
p15
,
0
,
r1
,
c2
,
c0
,
0
ldr
r0
,
sleep_save_sp
@
stack
phys
addr
ldr
r2
,
=
resume_after_mmu
@
its
absolute
virtual
address
ldmfd
r0
,
{
r4
-
r7
,
sp
}
@
CP
regs
+
virt
stack
ptr
mov
r1
,
#
0
mcr
p15
,
0
,
r1
,
c8
,
c7
,
0
@
flush
I
+
D
TLBs
mcr
p15
,
0
,
r1
,
c7
,
c7
,
0
@
flush
I
&D
cache
mcr
p15
,
0
,
r1
,
c9
,
c0
,
0
@
invalidate
RB
mcr
p15
,
0
,
r1
,
c9
,
c0
,
5
@
allow
user
space
to
use
RB
@
get
saved
cp15
r1
(
control
register
)
ldr
r1
,
[
r4
,
#(
SLEEP_SAVE_CP15_R1
*
4
)]
@
get
address
to
jump
to
after
turning
on
MMU
ldr
r2
,
=
resume_after_mmu
cmp
r2
,
#
0
b
resume_turn_on_mmu
mcr
p15
,
0
,
r4
,
c3
,
c0
,
0
@
domain
ID
mcr
p15
,
0
,
r5
,
c2
,
c0
,
0
@
translation
table
base
addr
mcr
p15
,
0
,
r6
,
c13
,
c0
,
0
@
PID
b
resume_turn_on_mmu
@
cache
align
execution
.
align
5
resume_turn_on_mmu
:
@
turn
on
mmu
mcr
p15
,
0
,
r1
,
c1
,
c0
,
0
@
jump
to
resume_after_mmu
mov
pc
,
r2
mcr
p15
,
0
,
r7
,
c1
,
c0
,
0
@
turn
on
MMU
,
caches
,
etc
.
nop
mov
pc
,
r2
@
jump
to
virtual
addr
nop
nop
nop
.
align
5
resume_after_mmu
:
@
load
virtual
address
for
sleep_save
array
ldr
r4
,
sleep_save
@
restore
the
rest
of
CPU
state
ldr
r1
,
[
r4
,
#(
SLEEP_SAVE_CP15_R13
*
4
)]
mcr
p15
,
0
,
r1
,
c13
,
c0
,
0
ldr
r1
,
[
r4
,
#(
SLEEP_SAVE_CP15_R5
*
4
)]
mcr
p15
,
0
,
r1
,
c5
,
c0
,
0
ldr
r1
,
[
r4
,
#(
SLEEP_SAVE_CP15_R6
*
4
)]
mcr
p15
,
0
,
r1
,
c6
,
c0
,
0
@
restore
stack
pointer
ldr
sp
,
[
r4
,
#(
SLEEP_SAVE_SP
*
4
)]
sleep_save_sp
:
.
word
0
@
preserve
stack
phys
ptr
here
@
return
to
caller
ldmfd
sp
!,
{
r4
-
r12
,
pc
}
.
text
resume_after_mmu
:
mcr
p15
,
0
,
r1
,
c15
,
c1
,
2
@
enable
clock
switching
ldmfd
sp
!,
{
r4
-
r12
,
pc
}
@
return
to
caller
arch/arm/mach-sa1100/sleep.h
deleted
100644 → 0
View file @
5fb4864a
/*
* Offsets for register values preserved in RAM while in sleep mode
*/
#define SLEEP_SAVE_OSCR 0
#define SLEEP_SAVE_OSMR0 1
#define SLEEP_SAVE_OSMR1 2
#define SLEEP_SAVE_OSMR2 3
#define SLEEP_SAVE_OSMR3 4
#define SLEEP_SAVE_OIER 5
#define SLEEP_SAVE_GPDR 6
#define SLEEP_SAVE_GRER 7
#define SLEEP_SAVE_GFER 8
#define SLEEP_SAVE_GAFR 9
#define SLEEP_SAVE_PPDR 10
#define SLEEP_SAVE_PPSR 11
#define SLEEP_SAVE_PPAR 12
#define SLEEP_SAVE_PSDR 13
#define SLEEP_SAVE_Ser1SDCR0 14
#define SLEEP_SAVE_ICMR 15
#define SLEEP_SAVE_SP 16
#define SLEEP_SAVE_CP15_R1 17
#define SLEEP_SAVE_CP15_R2 18
#define SLEEP_SAVE_CP15_R3 19
#define SLEEP_SAVE_CP15_R5 20
#define SLEEP_SAVE_CP15_R6 21
#define SLEEP_SAVE_CP15_R13 22
#define SLEEP_SAVE_SIZE 23
arch/arm/mach-sa1100/stork.c
View file @
ea1e2d62
...
...
@@ -304,19 +304,17 @@ stork_kbd_unexpected_up(unsigned char code)
struct
map_desc
stork_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xe8000000
,
0x00000000
,
0x02000000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Flash bank 0 */
{
STORK_VM_BASE_CS1
,
STORK_VM_OFF_CS1
,
0x01000000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* EGPIO 0 */
{
0xf1000000
,
0x10000000
,
0x02800000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* static memory bank 2 */
{
0xf3800000
,
0x40000000
,
0x00800000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* static memory bank 4 */
LAST_DESC
/* virtual physical length type */
{
STORK_VM_BASE_CS1
,
STORK_VM_OFF_CS1
,
0x01000000
,
MT_DEVICE
},
/* EGPIO 0 */
{
0xf1000000
,
0x10000000
,
0x02800000
,
MT_DEVICE
},
/* static memory bank 2 */
{
0xf3800000
,
0x40000000
,
0x00800000
,
MT_DEVICE
}
/* static memory bank 4 */
};
int
__init
stork_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
stork_io_desc
);
iotable_init
(
stork_io_desc
,
ARRAY_SIZE
(
stork_io_desc
)
);
sa1100_register_uart
(
0
,
1
);
/* com port */
sa1100_register_uart
(
1
,
2
);
...
...
arch/arm/mach-sa1100/system3.c
View file @
ea1e2d62
...
...
@@ -95,10 +95,9 @@ static void system3_backlight_power(int on);
*/
static
struct
map_desc
system3_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xf3000000
,
PT_CPLD_BASE
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* System Registers */
{
0xf4000000
,
PT_SA1111_BASE
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* SA-1111 */
LAST_DESC
/* virtual physical length type */
{
0xf3000000
,
PT_CPLD_BASE
,
0x00100000
,
MT_DEVICE
},
/* System Registers */
{
0xf4000000
,
PT_SA1111_BASE
,
0x00100000
,
MT_DEVICE
}
/* SA-1111 */
};
static
struct
sa1100_port_fns
system3_port_fns
__initdata
=
{
...
...
@@ -119,7 +118,7 @@ static void __init system3_map_io(void)
{
DPRINTK
(
"%s
\n
"
,
"START"
);
sa1100_map_io
();
iotable_init
(
system3_io_desc
);
iotable_init
(
system3_io_desc
,
ARRAY_SIZE
(
system3_io_desc
)
);
sa1100_register_uart_fns
(
&
system3_port_fns
);
sa1100_register_uart
(
0
,
1
);
/* com port */
...
...
arch/arm/mach-sa1100/xp860.c
View file @
ea1e2d62
...
...
@@ -57,17 +57,16 @@ static int __init xp860_init(void)
__initcall
(
xp860_init
);
static
struct
map_desc
xp860_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xf0000000
,
0x10000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* SCSI */
{
0xf1000000
,
0x18000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* LAN */
{
0xf4000000
,
0x40000000
,
0x00800000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* SA-1111 */
LAST_DESC
/* virtual physical length type */
{
0xf0000000
,
0x10000000
,
0x00100000
,
MT_DEVICE
},
/* SCSI */
{
0xf1000000
,
0x18000000
,
0x00100000
,
MT_DEVICE
},
/* LAN */
{
0xf4000000
,
0x40000000
,
0x00800000
,
MT_DEVICE
}
/* SA-1111 */
};
static
void
__init
xp860_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
xp860_io_desc
);
iotable_init
(
xp860_io_desc
,
ARRAY_SIZE
(
xp860_io_desc
)
);
sa1100_register_uart
(
0
,
3
);
sa1100_register_uart
(
1
,
1
);
...
...
arch/arm/mach-sa1100/yopy.c
View file @
ea1e2d62
...
...
@@ -68,18 +68,15 @@ __initcall(yopy_hw_init);
static
struct
map_desc
yopy_io_desc
[]
__initdata
=
{
/* virtual physical length domain r w c b */
{
0xe8000000
,
0x00000000
,
0x04000000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Flash 0 */
{
0xec000000
,
0x08000000
,
0x04000000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* Flash 1 */
{
0xf0000000
,
0x48000000
,
0x00300000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* LCD */
{
0xf1000000
,
0x10000000
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
/* EGPIO */
LAST_DESC
/* virtual physical length type */
{
0xf0000000
,
0x48000000
,
0x00300000
,
MT_DEVICE
},
/* LCD */
{
0xf1000000
,
0x10000000
,
0x00100000
,
MT_DEVICE
}
/* EGPIO */
};
static
void
__init
yopy_map_io
(
void
)
{
sa1100_map_io
();
iotable_init
(
yopy_io_desc
);
iotable_init
(
yopy_io_desc
,
ARRAY_SIZE
(
yopy_io_desc
)
);
sa1100_register_uart
(
0
,
3
);
...
...
arch/arm/mach-shark/core.c
View file @
ea1e2d62
...
...
@@ -3,18 +3,11 @@
*
* Architecture specific stuff.
*/
#include <linux/tty.h>
#include <linux/delay.h>
#include <linux/pm.h>
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <asm/elf.h>
#include <asm/setup.h>
#include <asm/mach-types.h>
#include <asm/pgtable.h>
#include <asm/page.h>
#include <asm/io.h>
#include <asm/mach/map.h>
...
...
@@ -23,13 +16,12 @@
extern
void
shark_init_irq
(
void
);
static
struct
map_desc
shark_io_desc
[]
__initdata
=
{
{
IO_BASE
,
IO_START
,
IO_SIZE
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
LAST_DESC
{
IO_BASE
,
IO_START
,
IO_SIZE
,
MT_DEVICE
}
};
static
void
__init
shark_map_io
(
void
)
{
iotable_init
(
shark_io_desc
);
iotable_init
(
shark_io_desc
,
ARRAY_SIZE
(
shark_io_desc
)
);
}
MACHINE_START
(
SHARK
,
"Shark"
)
...
...
arch/arm/mach-tbox/core.c
View file @
ea1e2d62
...
...
@@ -6,6 +6,7 @@
*
* Extra MM routines for the Tbox architecture
*/
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/init.h>
...
...
@@ -57,13 +58,12 @@ static void tbox_init_irq(void)
static
struct
map_desc
tbox_io_desc
[]
__initdata
=
{
/* See hardware.h for details */
{
IO_BASE
,
IO_START
,
0x00100000
,
DOMAIN_IO
,
0
,
1
,
0
,
0
},
LAST_DESC
{
IO_BASE
,
IO_START
,
0x00100000
,
MT_DEVICE
}
};
static
void
__init
tbox_map_io
(
void
)
{
iotable_init
(
tbox_io_desc
);
iotable_init
(
tbox_io_desc
,
ARRAY_SIZE
(
tbox_io_desc
)
);
}
MACHINE_START
(
TBOX
,
"unknown-TBOX"
)
...
...
arch/arm/mm/mm-armv.c
View file @
ea1e2d62
...
...
@@ -220,16 +220,9 @@ static inline void clear_mapping(unsigned long virt)
static
void
__init
create_mapping
(
struct
map_desc
*
md
)
{
unsigned
long
virt
,
length
;
int
prot_sect
,
prot_pte
;
int
prot_sect
,
prot_pte
,
domain
;
long
off
;
if
(
md
->
prot_read
&&
md
->
prot_write
&&
!
md
->
cacheable
&&
!
md
->
bufferable
)
{
printk
(
KERN_WARNING
"Security risk: creating user "
"accessible mapping for 0x%08lx at 0x%08lx
\n
"
,
md
->
physical
,
md
->
virtual
);
}
if
(
md
->
virtual
!=
vectors_base
()
&&
md
->
virtual
<
PAGE_OFFSET
)
{
printk
(
KERN_WARNING
"MM: not creating mapping for "
"0x%08lx at 0x%08lx in user region
\n
"
,
...
...
@@ -237,24 +230,49 @@ static void __init create_mapping(struct map_desc *md)
return
;
}
prot_pte
=
L_PTE_PRESENT
|
L_PTE_YOUNG
|
L_PTE_DIRTY
|
(
md
->
prot_read
?
L_PTE_USER
:
0
)
|
(
md
->
prot_write
?
L_PTE_WRITE
:
0
)
|
(
md
->
cacheable
?
L_PTE_CACHEABLE
:
0
)
|
(
md
->
bufferable
?
L_PTE_BUFFERABLE
:
0
);
prot_pte
=
L_PTE_PRESENT
|
L_PTE_YOUNG
|
L_PTE_DIRTY
;
prot_sect
=
PMD_TYPE_SECT
;
switch
(
md
->
type
)
{
case
MT_DEVICE
:
prot_pte
|=
L_PTE_WRITE
;
prot_sect
|=
PMD_SECT_AP_WRITE
;
domain
=
DOMAIN_IO
;
break
;
case
MT_CACHECLEAN
:
prot_pte
|=
L_PTE_CACHEABLE
|
L_PTE_BUFFERABLE
;
prot_sect
|=
PMD_SECT_CACHEABLE
|
PMD_SECT_BUFFERABLE
;
domain
=
DOMAIN_KERNEL
;
break
;
case
MT_MINICLEAN
:
prot_pte
|=
L_PTE_CACHEABLE
;
prot_sect
|=
PMD_SECT_CACHEABLE
;
domain
=
DOMAIN_KERNEL
;
break
;
case
MT_VECTORS
:
prot_pte
|=
L_PTE_EXEC
|
L_PTE_CACHEABLE
|
L_PTE_BUFFERABLE
;
prot_sect
|=
PMD_SECT_CACHEABLE
|
PMD_SECT_BUFFERABLE
;
domain
=
DOMAIN_USER
;
break
;
case
MT_MEMORY
:
prot_pte
|=
L_PTE_WRITE
|
L_PTE_EXEC
|
L_PTE_CACHEABLE
|
L_PTE_BUFFERABLE
;
prot_sect
|=
PMD_SECT_AP_WRITE
|
PMD_SECT_CACHEABLE
|
PMD_SECT_BUFFERABLE
;
domain
=
DOMAIN_KERNEL
;
break
;
}
prot_sect
=
PMD_TYPE_SECT
|
PMD_DOMAIN
(
md
->
domain
)
|
(
md
->
prot_read
?
PMD_SECT_AP_READ
:
0
)
|
(
md
->
prot_write
?
PMD_SECT_AP_WRITE
:
0
)
|
(
md
->
cacheable
?
PMD_SECT_CACHEABLE
:
0
)
|
(
md
->
bufferable
?
PMD_SECT_BUFFERABLE
:
0
);
prot_sect
|=
PMD_DOMAIN
(
domain
);
virt
=
md
->
virtual
;
off
=
md
->
physical
-
virt
;
length
=
md
->
length
;
while
((
virt
&
0xfffff
||
(
virt
+
off
)
&
0xfffff
)
&&
length
>=
PAGE_SIZE
)
{
alloc_init_page
(
virt
,
virt
+
off
,
md
->
domain
,
prot_pte
);
alloc_init_page
(
virt
,
virt
+
off
,
domain
,
prot_pte
);
virt
+=
PAGE_SIZE
;
length
-=
PAGE_SIZE
;
...
...
@@ -268,7 +286,7 @@ static void __init create_mapping(struct map_desc *md)
}
while
(
length
>=
PAGE_SIZE
)
{
alloc_init_page
(
virt
,
virt
+
off
,
md
->
domain
,
prot_pte
);
alloc_init_page
(
virt
,
virt
+
off
,
domain
,
prot_pte
);
virt
+=
PAGE_SIZE
;
length
-=
PAGE_SIZE
;
...
...
@@ -319,12 +337,7 @@ void __init memtable_init(struct meminfo *mi)
p
->
physical
=
mi
->
bank
[
i
].
start
;
p
->
virtual
=
__phys_to_virt
(
p
->
physical
);
p
->
length
=
mi
->
bank
[
i
].
size
;
p
->
domain
=
DOMAIN_KERNEL
;
p
->
prot_read
=
0
;
p
->
prot_write
=
1
;
p
->
cacheable
=
1
;
p
->
bufferable
=
1
;
p
->
type
=
MT_MEMORY
;
p
++
;
}
...
...
@@ -332,12 +345,7 @@ void __init memtable_init(struct meminfo *mi)
p
->
physical
=
FLUSH_BASE_PHYS
;
p
->
virtual
=
FLUSH_BASE
;
p
->
length
=
PGDIR_SIZE
;
p
->
domain
=
DOMAIN_KERNEL
;
p
->
prot_read
=
1
;
p
->
prot_write
=
0
;
p
->
cacheable
=
1
;
p
->
bufferable
=
1
;
p
->
type
=
MT_CACHECLEAN
;
p
++
;
#endif
...
...
@@ -345,12 +353,7 @@ void __init memtable_init(struct meminfo *mi)
p
->
physical
=
FLUSH_BASE_PHYS
+
PGDIR_SIZE
;
p
->
virtual
=
FLUSH_BASE_MINICACHE
;
p
->
length
=
PGDIR_SIZE
;
p
->
domain
=
DOMAIN_KERNEL
;
p
->
prot_read
=
1
;
p
->
prot_write
=
0
;
p
->
cacheable
=
1
;
p
->
bufferable
=
0
;
p
->
type
=
MT_MINICLEAN
;
p
++
;
#endif
...
...
@@ -380,25 +383,22 @@ void __init memtable_init(struct meminfo *mi)
init_maps
->
physical
=
virt_to_phys
(
init_maps
);
init_maps
->
virtual
=
vectors_base
();
init_maps
->
length
=
PAGE_SIZE
;
init_maps
->
domain
=
DOMAIN_USER
;
init_maps
->
prot_read
=
0
;
init_maps
->
prot_write
=
0
;
init_maps
->
cacheable
=
1
;
init_maps
->
bufferable
=
0
;
init_maps
->
type
=
MT_VECTORS
;
create_mapping
(
init_maps
);
flush_cache_all
();
flush_tlb_all
();
}
/*
* Create the architecture specific mappings
*/
void
__init
iotable_init
(
struct
map_desc
*
io_desc
)
void
__init
iotable_init
(
struct
map_desc
*
io_desc
,
int
nr
)
{
int
i
;
for
(
i
=
0
;
i
o_desc
[
i
].
last
==
0
;
i
++
)
for
(
i
=
0
;
i
<
nr
;
i
++
)
create_mapping
(
io_desc
+
i
);
}
...
...
include/asm-arm/mach/map.h
View file @
ea1e2d62
...
...
@@ -13,20 +13,18 @@ struct map_desc {
unsigned
long
virtual
;
unsigned
long
physical
;
unsigned
long
length
;
int
domain
:
4
,
prot_read:
1
,
prot_write:
1
,
cacheable:
1
,
bufferable:
1
,
last:
1
;
unsigned
int
type
;
};
#define LAST_DESC \
{ last: 1 }
struct
meminfo
;
#define MT_DEVICE 0
#define MT_CACHECLEAN 1
#define MT_MINICLEAN 2
#define MT_VECTORS 3
#define MT_MEMORY 4
extern
void
create_memmap_holes
(
struct
meminfo
*
);
extern
void
memtable_init
(
struct
meminfo
*
);
extern
void
iotable_init
(
struct
map_desc
*
);
extern
void
iotable_init
(
struct
map_desc
*
,
int
);
extern
void
setup_io_desc
(
void
);
include/asm-arm/page.h
View file @
ea1e2d62
...
...
@@ -30,14 +30,14 @@ extern void __cpu_copy_user_page(void *to, const void *from,
unsigned
long
user
);
#endif
#define clear_user_page(addr,vaddr) \
#define clear_user_page(addr,vaddr
,pg
) \
do { \
preempt_disable(); \
__cpu_clear_user_page(addr, vaddr); \
preempt_enable(); \
} while (0)
#define copy_user_page(to,from,vaddr
)
\
#define copy_user_page(to,from,vaddr
,pg)
\
do { \
preempt_disable(); \
__cpu_copy_user_page(to, from, vaddr); \
...
...
include/asm-arm/thread_info.h
View file @
ea1e2d62
...
...
@@ -86,8 +86,10 @@ extern void free_thread_info(struct thread_info *);
#define get_thread_info(ti) get_task_struct((ti)->task)
#define put_thread_info(ti) put_task_struct((ti)->task)
#define thread_saved_pc(tsk) (pc_pointer((tsk)->thread_info->cpu_context.pc))
#define thread_saved_fp(tsk) ((tsk)->thread_info->cpu_context.fp)
#define thread_saved_pc(tsk) \
((unsigned long)(pc_pointer((tsk)->thread_info->cpu_context.pc)))
#define thread_saved_fp(tsk) \
((unsigned long)((tsk)->thread_info->cpu_context.fp))
#else
/* !__ASSEMBLY__ */
...
...
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