From e10b3f131fb724184ced4f68d13b8b8175f30968 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Thu, 24 Apr 2008 05:44:32 +0800 Subject: [PATCH] --- yaml --- r: 92314 b: refs/heads/master c: 4e354b54991fd7d589c8e5753eea58a1afcae30a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/blackfin/kernel/cplb-mpu/cplbinfo.c | 8 -------- trunk/arch/blackfin/kernel/cplb-mpu/cplbmgr.c | 6 +++++- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index 14ee2f78223b..5d4ff2baf1c0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7795566495ff90c541a4654d3c903ab277abadfd +refs/heads/master: 4e354b54991fd7d589c8e5753eea58a1afcae30a diff --git a/trunk/arch/blackfin/kernel/cplb-mpu/cplbinfo.c b/trunk/arch/blackfin/kernel/cplb-mpu/cplbinfo.c index bd072299f7f2..822beefa3a4b 100644 --- a/trunk/arch/blackfin/kernel/cplb-mpu/cplbinfo.c +++ b/trunk/arch/blackfin/kernel/cplb-mpu/cplbinfo.c @@ -39,14 +39,6 @@ #include #include -#define CPLB_I 1 -#define CPLB_D 2 - -#define SYNC_SYS SSYNC() -#define SYNC_CORE CSYNC() - -#define CPLB_BIT_PAGESIZE 0x30000 - static char page_size_string_table[][4] = { "1K", "4K", "1M", "4M" }; static char *cplb_print_entry(char *buf, struct cplb_entry *tbl, int switched) diff --git a/trunk/arch/blackfin/kernel/cplb-mpu/cplbmgr.c b/trunk/arch/blackfin/kernel/cplb-mpu/cplbmgr.c index 3377cbf28fb4..3b165bbe90fa 100644 --- a/trunk/arch/blackfin/kernel/cplb-mpu/cplbmgr.c +++ b/trunk/arch/blackfin/kernel/cplb-mpu/cplbmgr.c @@ -161,6 +161,11 @@ static noinline int dcplb_miss(void) addr &= ~0x3fffff; d_data &= ~PAGE_SIZE_4KB; d_data |= PAGE_SIZE_4MB; + } else if (addr >= BOOT_ROM_START && addr < BOOT_ROM_START + BOOT_ROM_LENGTH + && (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; } else return CPLB_PROT_VIOL; } else if (addr >= _ramend) { @@ -277,7 +282,6 @@ static noinline int icplb_miss(void) static noinline int dcplb_protection_fault(void) { - unsigned long addr = bfin_read_DCPLB_FAULT_ADDR(); int status = bfin_read_DCPLB_STATUS(); nr_dcplb_prot++;