From 28e5ddd27838affce08026b5d39c3b75dc58abb5 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Thu, 24 Apr 2008 07:23:36 +0800 Subject: [PATCH] --- yaml --- r: 92321 b: refs/heads/master c: 4bea8b20fded93871c872bb4a0d7c23345318184 h: refs/heads/master i: 92319: 7352777896fcaa7017d002b77bfa5da73acc5bfb v: v3 --- [refs] | 2 +- trunk/arch/blackfin/kernel/cplb-mpu/cplbmgr.c | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 9f28712e9063..a07bde5e079a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ac76d889b5e1f829f71a1527a00dc8048c2c2660 +refs/heads/master: 4bea8b20fded93871c872bb4a0d7c23345318184 diff --git a/trunk/arch/blackfin/kernel/cplb-mpu/cplbmgr.c b/trunk/arch/blackfin/kernel/cplb-mpu/cplbmgr.c index 3b165bbe90fa..44bbfe26ce49 100644 --- a/trunk/arch/blackfin/kernel/cplb-mpu/cplbmgr.c +++ b/trunk/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 {