summaryrefslogtreecommitdiffstats
path: root/arch/arm/mm
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>2000-05-12 23:48:34 +0000
committerRalf Baechle <ralf@linux-mips.org>2000-05-12 23:48:34 +0000
commit7fd36ebeeec9244a7431bb010e6e3c5e4848a0d5 (patch)
tree5fb03a9aafdd1cec5f4f6ff7f1873174cb89b66c /arch/arm/mm
parentba2dacab305c598cd4c34a604f8e276bf5bab5ff (diff)
Merge with Linux 2.3.99-pre8. Linus must hate me, too man patches ;-)
Diffstat (limited to 'arch/arm/mm')
-rw-r--r--arch/arm/mm/mm-sa1100.c36
-rw-r--r--arch/arm/mm/proc-arm6,7.S10
-rw-r--r--arch/arm/mm/proc-sa110.S11
3 files changed, 31 insertions, 26 deletions
diff --git a/arch/arm/mm/mm-sa1100.c b/arch/arm/mm/mm-sa1100.c
index 5674dbe37..9d9306dd4 100644
--- a/arch/arm/mm/mm-sa1100.c
+++ b/arch/arm/mm/mm-sa1100.c
@@ -29,12 +29,12 @@
#define SA1100_STD_IO_MAPPING \
/* virtual physical length domain r w c b */ \
- { 0xe0000000, 0x20000000, 0x04000000, DOMAIN_IO, 0, 1, 0, 0 }, /* PCMCIA0 IO */ \
- { 0xe4000000, 0x30000000, 0x04000000, DOMAIN_IO, 0, 1, 0, 0 }, /* PCMCIA1 IO */ \
- { 0xe8000000, 0x28000000, 0x04000000, DOMAIN_IO, 0, 1, 0, 0 }, /* PCMCIA0 attr */ \
- { 0xec000000, 0x38000000, 0x04000000, DOMAIN_IO, 0, 1, 0, 0 }, /* PCMCIA1 attr */ \
- { 0xf0000000, 0x2c000000, 0x04000000, DOMAIN_IO, 0, 1, 0, 0 }, /* PCMCIA0 mem */ \
- { 0xf4000000, 0x3c000000, 0x04000000, DOMAIN_IO, 0, 1, 0, 0 }, /* PCMCIA1 mem */ \
+ { 0xe0000000, 0x20000000, 0x04000000, DOMAIN_IO, 1, 1, 0, 0 }, /* PCMCIA0 IO */ \
+ { 0xe4000000, 0x30000000, 0x04000000, DOMAIN_IO, 1, 1, 0, 0 }, /* PCMCIA1 IO */ \
+ { 0xe8000000, 0x28000000, 0x04000000, DOMAIN_IO, 1, 1, 0, 0 }, /* PCMCIA0 attr */ \
+ { 0xec000000, 0x38000000, 0x04000000, DOMAIN_IO, 1, 1, 0, 0 }, /* PCMCIA1 attr */ \
+ { 0xf0000000, 0x2c000000, 0x04000000, DOMAIN_IO, 1, 1, 0, 0 }, /* PCMCIA0 mem */ \
+ { 0xf4000000, 0x3c000000, 0x04000000, DOMAIN_IO, 1, 1, 0, 0 }, /* PCMCIA1 mem */ \
{ 0xf8000000, 0x80000000, 0x02000000, DOMAIN_IO, 0, 1, 0, 0 }, /* PCM */ \
{ 0xfa000000, 0x90000000, 0x02000000, DOMAIN_IO, 0, 1, 0, 0 }, /* SCM */ \
{ 0xfc000000, 0xa0000000, 0x02000000, DOMAIN_IO, 0, 1, 0, 0 }, /* MER */ \
@@ -63,16 +63,21 @@ static struct map_desc empeg_io_desc[] __initdata = {
#endif
};
+static struct map_desc graphicsclient_io_desc[] __initdata = {
+#ifdef CONFIG_SA1100_GRAPHICSCLIENT
+ { 0xd0000000, 0x08000000, 0x00800000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 1 */
+ { 0xd0800000, 0x18000000, 0x00800000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 3 */
+ { 0xdc000000, 0x10000000, 0x00400000, DOMAIN_IO, 0, 1, 0, 0 }, /* CPLD */
+ SA1100_STD_IO_MAPPING
+#endif
+};
+
static struct map_desc thinclient_io_desc[] __initdata = {
#ifdef CONFIG_SA1100_THINCLIENT
-#if 1
- /* ThinClient: only one of those... */
-// { 0xd0000000, 0x00000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 0 when JP1 2-4 */
- { 0xd0000000, 0x08000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 1 when JP1 3-4 */
+#if 0
+ { 0xd0000000, 0x00000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 0 when JP1 2-4 */
#else
- /* GraphicsClient: */
- { 0xd0000000, 0x08000000, 0x00800000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 1 */
- { 0xd0800000, 0x18000000, 0x00800000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 3 */
+ { 0xd0000000, 0x08000000, 0x01000000, DOMAIN_IO, 1, 1, 0, 0 }, /* Flash bank 1 when JP1 3-4 */
#endif
{ 0xdc000000, 0x10000000, 0x00400000, DOMAIN_IO, 0, 1, 0, 0 }, /* CPLD */
SA1100_STD_IO_MAPPING
@@ -104,7 +109,7 @@ static struct map_desc default_io_desc[] __initdata = {
* Here it would be wiser to simply assign a pointer to the appropriate
* list, but io_desc is already declared as an array in "map.h".
*/
-struct map_desc io_desc[20] __initdata = { { 0, }, };
+struct map_desc io_desc[20] __initdata = {};
unsigned int io_desc_size;
void __init select_sa1100_io_desc(void)
@@ -118,6 +123,9 @@ void __init select_sa1100_io_desc(void)
} else if( machine_is_empeg() ) {
memcpy( io_desc, empeg_io_desc, sizeof(empeg_io_desc) );
io_desc_size = SIZE(empeg_io_desc);
+ } else if( machine_is_graphicsclient() ) {
+ memcpy( io_desc, graphicsclient_io_desc, sizeof(graphicsclient_io_desc) );
+ io_desc_size = SIZE(graphicsclient_io_desc);
} else if( machine_is_thinclient() ) {
memcpy( io_desc, thinclient_io_desc, sizeof(thinclient_io_desc) );
io_desc_size = SIZE(thinclient_io_desc);
diff --git a/arch/arm/mm/proc-arm6,7.S b/arch/arm/mm/proc-arm6,7.S
index dd039f208..c2f4f2346 100644
--- a/arch/arm/mm/proc-arm6,7.S
+++ b/arch/arm/mm/proc-arm6,7.S
@@ -254,9 +254,7 @@ ENTRY(cpu_arm7_proc_init)
ENTRY(cpu_arm6_proc_fin)
ENTRY(cpu_arm7_proc_fin)
- mrs r0, cpsr
- orr r0, r0, #F_BIT | I_BIT
- msr cpsr, r0
+ msr cpsr_c, #F_BIT | I_BIT | SVC_MODE
mov r0, #0x31 @ ....S..DP...M
mcr p15, 0, r0, c1, c0, 0 @ disable caches
mov pc, lr
@@ -366,7 +364,8 @@ cpu_arm710_name:
.section ".text.init", #alloc, #execinstr
-__arm6_setup: mov r0, #0
+__arm6_setup: msr cpsr_c, #F_BIT | I_BIT | SVC_MODE
+ mov r0, #0
mcr p15, 0, r0, c7, c0 @ flush caches on v3
mcr p15, 0, r0, c5, c0 @ flush TLBs on v3
mcr p15, 0, r4, c2, c0 @ load page table pointer
@@ -376,7 +375,8 @@ __arm6_setup: mov r0, #0
orr r0, r0, #0x100
mov pc, lr
-__arm7_setup: mov r0, #0
+__arm7_setup: msr cpsr_c, #F_BIT | I_BIT | SVC_MODE
+ mov r0, #0
mcr p15, 0, r0, c7, c0 @ flush caches on v3
mcr p15, 0, r0, c5, c0 @ flush TLBs on v3
mcr p15, 0, r4, c2, c0 @ load page table pointer
diff --git a/arch/arm/mm/proc-sa110.S b/arch/arm/mm/proc-sa110.S
index 9ae5fb9d6..ac5d0735e 100644
--- a/arch/arm/mm/proc-sa110.S
+++ b/arch/arm/mm/proc-sa110.S
@@ -423,9 +423,7 @@ ENTRY(cpu_sa1100_proc_init)
ENTRY(cpu_sa110_proc_fin)
stmfd sp!, {r1, lr}
- mrs r0, cpsr
- orr r0, r0, #F_BIT | I_BIT
- msr cpsr, r0
+ msr cpsr_c, #F_BIT | I_BIT | SVC_MODE
bl cpu_sa110_flush_cache_all @ clean caches
1: mov r0, #0
mcr p15, 0, r0, c15, c2, 2 @ Disable clock switching
@@ -437,9 +435,7 @@ ENTRY(cpu_sa110_proc_fin)
ENTRY(cpu_sa1100_proc_fin)
stmfd sp!, {r1, lr}
- mrs r0, cpsr
- orr r0, r0, #F_BIT | I_BIT
- msr cpsr, r0
+ msr cpsr_c, #F_BIT | I_BIT | SVC_MODE
bl cpu_sa1100_flush_cache_all @ clean caches
b 1b
@@ -505,7 +501,8 @@ cpu_sa1110_name:
.section ".text.init", #alloc, #execinstr
-__sa110_setup: mov r0, #0
+__sa110_setup: msr cpsr_c, #F_BIT | I_BIT | SVC_MODE
+ mov r0, #0
mcr p15, 0, r0, c7, c7 @ flush I,D caches on v4
mcr p15, 0, r0, c7, c10, 4 @ drain write buffer on v4
mcr p15, 0, r0, c8, c7 @ flush I,D TLBs on v4