Title: [3924] trunk/arch/blackfin/mach-common/cplbmgr.S: [#2424] Add a note describing what is going on - no functional changes
Revision
3924
Author
rgetz
Date
2007-11-22 16:03:19 -0600 (Thu, 22 Nov 2007)

Log Message

[#2424] Add a note describing what is going on - no functional changes

Diffstat

 cplbmgr.S |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)

Modified Paths

Diff

Modified: trunk/arch/blackfin/mach-common/cplbmgr.S (3923 => 3924)


--- trunk/arch/blackfin/mach-common/cplbmgr.S	2007-11-22 10:47:08 UTC (rev 3923)
+++ trunk/arch/blackfin/mach-common/cplbmgr.S	2007-11-22 22:03:19 UTC (rev 3924)
@@ -75,6 +75,15 @@
 	* from the configuration table.
 	*/
 
+	/* A multi-word instruction can cross a page boundary. This means the
+	 * first part of the instruction can be in a valid page, but the
+	 * second part is not, and hence generates the instruction miss.
+	 * However, the fault address is for the start of the instruction,
+	 * not the part that's in the bad page. Therefore, we have to check
+	 * whether the fault address applies to a page that is already present
+	 * in the table.
+	 */
+
 	P4.L = LO(ICPLB_FAULT_ADDR);
 	P4.H = HI(ICPLB_FAULT_ADDR);
 
@@ -87,7 +96,7 @@
 	R4 = [P4];		/* Get faulting address*/
 	R6 = 64;		/* Advance past the fault address, which*/
 	R6 = R6 + R4;		/* we'll use if we find a match*/
-	R3 = ((16 << 8) | 2);	/* Extract mask, bits 16 and 17.*/
+	R3 = ((16 << 8) | 2);	/* Extract mask, two bits at posn 16 */
 
 	R5 = 0;
 .Lisearch:
@@ -125,7 +134,9 @@
 	P4.L = LO(IMEM_CONTROL);
 	P4.H = HI(IMEM_CONTROL);
 
-	/* disable cplbs */
+	/* Turn off CPLBs while we work, necessary according to HRM before
+	 * modifying CPLB descriptors
+	 */
 	R5 = [P4];		/* Control Register*/
 	BITCLR(R5,ENICPLB_P);
 	CLI R1;
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
http://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits

Reply via email to