Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
authorLinus Torvalds <torvalds@woody.linux-foundation.org>
Tue, 23 Oct 2007 23:32:11 +0000 (16:32 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Tue, 23 Oct 2007 23:32:11 +0000 (16:32 -0700)
* '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

arch/arm/mach-pxa/pxa300.c
arch/arm/vfp/vfpdouble.c
arch/arm/vfp/vfpmodule.c

index 5363b1322652a53bad2e16a54ff46759ab7f1ff2..7a34231f31726ba66dcff10b357750d14dd12cbd 100644 (file)
@@ -23,8 +23,10 @@ static struct pxa3xx_mfp_addr_map pxa300_mfp_addr_map[] __initdata = {
 
        MFP_ADDR_X(GPIO0,   GPIO2,   0x00b4),
        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(nBE1, 0x0208),
index 74e89f8fb3abe7d6906d231bd0293f77493874b3..190a09ad18ebe87217222c7eecc2c05823bec86f 100644 (file)
@@ -1132,7 +1132,7 @@ u32 vfp_double_cpdo(u32 inst, u32 fpscr)
        unsigned int vecitr, veclen, vecstride;
        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)];
 
@@ -1184,10 +1184,10 @@ u32 vfp_double_cpdo(u32 inst, u32 fpscr)
                 * CHECK: It appears to be undefined whether we stop when
                 * 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)
-                       dm = FREG_BANK(dm) + ((FREG_IDX(dm) + vecstride) & 6);
+                       dm = FREG_BANK(dm) + ((FREG_IDX(dm) + vecstride) & 3);
        }
        return exceptions;
 
index eea3f50743d58b3076592969f5e0cf98b0ecedef..b4e210df92f2a37084c9dff73ae07b24ce73f725 100644 (file)
@@ -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.
         */
-       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);