소스 검색

Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm

* 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm:
  [ARM] 4630/1: Fix the vector stride of the double vector instruction.
  [ARM] 4629/1: Fix VFP emulation code to clear all exception flags of FPEXC
  [ARM] 4613/1: pxa300: MFP typo fix
Linus Torvalds 17 년 전
부모
커밋
2024da6039
3개의 변경된 파일9개의 추가작업 그리고 7개의 파일을 삭제
  1. 4 2
      arch/arm/mach-pxa/pxa300.c
  2. 4 4
      arch/arm/vfp/vfpdouble.c
  3. 1 1
      arch/arm/vfp/vfpmodule.c

+ 4 - 2
arch/arm/mach-pxa/pxa300.c

@@ -23,8 +23,10 @@ static struct pxa3xx_mfp_addr_map pxa300_mfp_addr_map[] __initdata = {
 
 
 	MFP_ADDR_X(GPIO0,   GPIO2,   0x00b4),
 	MFP_ADDR_X(GPIO0,   GPIO2,   0x00b4),
 	MFP_ADDR_X(GPIO3,   GPIO26,  0x027c),
 	MFP_ADDR_X(GPIO3,   GPIO26,  0x027c),
-	MFP_ADDR_X(GPIO27,  GPIO127, 0x0400),
-	MFP_ADDR_X(GPIO0_2, GPIO6_2, 0x02ec),
+	MFP_ADDR_X(GPIO27,  GPIO98,  0x0400),
+	MFP_ADDR_X(GPIO99,  GPIO127, 0x0600),
+	MFP_ADDR_X(GPIO0_2, GPIO1_2, 0x0674),
+	MFP_ADDR_X(GPIO2_2, GPIO6_2, 0x02dc),
 
 
 	MFP_ADDR(nBE0, 0x0204),
 	MFP_ADDR(nBE0, 0x0204),
 	MFP_ADDR(nBE1, 0x0208),
 	MFP_ADDR(nBE1, 0x0208),

+ 4 - 4
arch/arm/vfp/vfpdouble.c

@@ -1132,7 +1132,7 @@ u32 vfp_double_cpdo(u32 inst, u32 fpscr)
 	unsigned int vecitr, veclen, vecstride;
 	unsigned int vecitr, veclen, vecstride;
 	struct op *fop;
 	struct op *fop;
 
 
-	vecstride = (1 + ((fpscr & FPSCR_STRIDE_MASK) == FPSCR_STRIDE_MASK)) * 2;
+	vecstride = (1 + ((fpscr & FPSCR_STRIDE_MASK) == FPSCR_STRIDE_MASK));
 
 
 	fop = (op == FOP_EXT) ? &fops_ext[FEXT_TO_IDX(inst)] : &fops[FOP_TO_IDX(op)];
 	fop = (op == FOP_EXT) ? &fops_ext[FEXT_TO_IDX(inst)] : &fops[FOP_TO_IDX(op)];
 
 
@@ -1184,10 +1184,10 @@ u32 vfp_double_cpdo(u32 inst, u32 fpscr)
 		 * CHECK: It appears to be undefined whether we stop when
 		 * CHECK: It appears to be undefined whether we stop when
 		 * we encounter an exception.  We continue.
 		 * we encounter an exception.  We continue.
 		 */
 		 */
-		dest = FREG_BANK(dest) + ((FREG_IDX(dest) + vecstride) & 6);
-		dn = FREG_BANK(dn) + ((FREG_IDX(dn) + vecstride) & 6);
+		dest = FREG_BANK(dest) + ((FREG_IDX(dest) + vecstride) & 3);
+		dn = FREG_BANK(dn) + ((FREG_IDX(dn) + vecstride) & 3);
 		if (FREG_BANK(dm) != 0)
 		if (FREG_BANK(dm) != 0)
-			dm = FREG_BANK(dm) + ((FREG_IDX(dm) + vecstride) & 6);
+			dm = FREG_BANK(dm) + ((FREG_IDX(dm) + vecstride) & 3);
 	}
 	}
 	return exceptions;
 	return exceptions;
 
 

+ 1 - 1
arch/arm/vfp/vfpmodule.c

@@ -229,7 +229,7 @@ void VFP9_bounce(u32 trigger, u32 fpexc, struct pt_regs *regs)
 	/*
 	/*
 	 * Enable access to the VFP so we can handle the bounce.
 	 * Enable access to the VFP so we can handle the bounce.
 	 */
 	 */
-	fmxr(FPEXC, fpexc & ~(FPEXC_EX|FPEXC_INV|FPEXC_UFC|FPEXC_IOC));
+	fmxr(FPEXC, fpexc & ~(FPEXC_EX|FPEXC_FPV2|FPEXC_INV|FPEXC_UFC|FPEXC_OFC|FPEXC_IOC));
 
 
 	orig_fpscr = fpscr = fmrx(FPSCR);
 	orig_fpscr = fpscr = fmrx(FPSCR);