summaryrefslogtreecommitdiff
path: root/arch/blackfin
diff options
context:
space:
mode:
authorMike Frysinger <vapier.adi@gmail.com>2008-04-24 07:23:36 +0800
committerBryan Wu <cooloney@kernel.org>2008-04-24 07:23:36 +0800
commit4bea8b20fded93871c872bb4a0d7c23345318184 (patch)
tree18f149266ccd65095bb6a596ccecf2b30fb70b4b /arch/blackfin
parentac76d889b5e1f829f71a1527a00dc8048c2c2660 (diff)
downloadlwn-4bea8b20fded93871c872bb4a0d7c23345318184.tar.gz
lwn-4bea8b20fded93871c872bb4a0d7c23345318184.zip
[Blackfin] arch: add implicit icplb for the bootrom so we can use the utility functions in the kernel
Signed-off-by: Mike Frysinger <vapier.adi@gmail.com> Signed-off-by: Bryan Wu <cooloney@kernel.org>
Diffstat (limited to 'arch/blackfin')
-rw-r--r--arch/blackfin/kernel/cplb-mpu/cplbmgr.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/blackfin/kernel/cplb-mpu/cplbmgr.c b/arch/blackfin/kernel/cplb-mpu/cplbmgr.c
index 3b165bbe90fa..44bbfe26ce49 100644
--- a/arch/blackfin/kernel/cplb-mpu/cplbmgr.c
+++ b/arch/blackfin/kernel/cplb-mpu/cplbmgr.c
@@ -165,7 +165,7 @@ static noinline int dcplb_miss(void)
&& (status & (FAULT_RW | FAULT_USERSUPV)) == FAULT_USERSUPV) {
addr &= ~(1 * 1024 * 1024 - 1);
d_data &= ~PAGE_SIZE_4KB;
- d_data |= PAGE_SIZE_1MB | CPLB_USER_RD;
+ d_data |= PAGE_SIZE_1MB;
} else
return CPLB_PROT_VIOL;
} else if (addr >= _ramend) {
@@ -243,7 +243,13 @@ static noinline int icplb_miss(void)
#endif
if (addr >= physical_mem_end) {
- return CPLB_PROT_VIOL;
+ if (addr >= BOOT_ROM_START && addr < BOOT_ROM_START + BOOT_ROM_LENGTH
+ && (status & FAULT_USERSUPV)) {
+ addr &= ~(1 * 1024 * 1024 - 1);
+ i_data &= ~PAGE_SIZE_4KB;
+ i_data |= PAGE_SIZE_1MB;
+ } else
+ return CPLB_PROT_VIOL;
} else if (addr >= _ramend) {
i_data |= CPLB_USER_RD;
} else {