From 7fd36ebeeec9244a7431bb010e6e3c5e4848a0d5 Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Fri, 12 May 2000 23:48:34 +0000 Subject: Merge with Linux 2.3.99-pre8. Linus must hate me, too man patches ;-) --- arch/arm/mm/mm-sa1100.c | 36 ++++++++++++++++++++++-------------- arch/arm/mm/proc-arm6,7.S | 10 +++++----- arch/arm/mm/proc-sa110.S | 11 ++++------- 3 files changed, 31 insertions(+), 26 deletions(-) (limited to 'arch/arm/mm') 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 -- cgit v1.2.3