浏览代码

[Blackfin] arch: cplb-mpu code clean up

 - allow bootrom to be readable from supervisor mode
 - delete unused local variable "addr"
 - punt unused local defines of cplbinfo.c

Signed-off-by: Mike Frysinger <vapier.adi@gmail.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
Mike Frysinger 17 年之前
父节点
当前提交
4e354b5499
共有 2 个文件被更改,包括 5 次插入9 次删除
  1. 0 8
      arch/blackfin/kernel/cplb-mpu/cplbinfo.c
  2. 5 1
      arch/blackfin/kernel/cplb-mpu/cplbmgr.c

+ 0 - 8
arch/blackfin/kernel/cplb-mpu/cplbinfo.c

@@ -39,14 +39,6 @@
 #include <asm/cplbinit.h>
 #include <asm/blackfin.h>
 
-#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)

+ 5 - 1
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++;