aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-23 19:32:11 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-23 19:32:11 -0400
commit2024da603978882d102a34d47828a205fffb338e (patch)
treee3e3908218f7631f77fe84a962d64df341e85f1f /arch/arm
parent01e7ae8c13bb06a2ce622ebace33bb7e28ef596c (diff)
parentb9a5ce3cae2f6d04c521204004a36be46656ec7b (diff)
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
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-pxa/pxa300.c6
-rw-r--r--arch/arm/vfp/vfpdouble.c8
-rw-r--r--arch/arm/vfp/vfpmodule.c2
3 files changed, 9 insertions, 7 deletions
diff --git a/arch/arm/mach-pxa/pxa300.c b/arch/arm/mach-pxa/pxa300.c
index 5363b132265..7a34231f317 100644
--- a/arch/arm/mach-pxa/pxa300.c
+++ b/arch/arm/mach-pxa/pxa300.c
@@ -23,8 +23,10 @@ static struct pxa3xx_mfp_addr_map pxa300_mfp_addr_map[] __initdata = {
23 23
24 MFP_ADDR_X(GPIO0, GPIO2, 0x00b4), 24 MFP_ADDR_X(GPIO0, GPIO2, 0x00b4),
25 MFP_ADDR_X(GPIO3, GPIO26, 0x027c), 25 MFP_ADDR_X(GPIO3, GPIO26, 0x027c),
26 MFP_ADDR_X(GPIO27, GPIO127, 0x0400), 26 MFP_ADDR_X(GPIO27, GPIO98, 0x0400),
27 MFP_ADDR_X(GPIO0_2, GPIO6_2, 0x02ec), 27 MFP_ADDR_X(GPIO99, GPIO127, 0x0600),
28 MFP_ADDR_X(GPIO0_2, GPIO1_2, 0x0674),
29 MFP_ADDR_X(GPIO2_2, GPIO6_2, 0x02dc),
28 30
29 MFP_ADDR(nBE0, 0x0204), 31 MFP_ADDR(nBE0, 0x0204),
30 MFP_ADDR(nBE1, 0x0208), 32 MFP_ADDR(nBE1, 0x0208),
diff --git a/arch/arm/vfp/vfpdouble.c b/arch/arm/vfp/vfpdouble.c
index 74e89f8fb3a..190a09ad18e 100644
--- a/arch/arm/vfp/vfpdouble.c
+++ b/arch/arm/vfp/vfpdouble.c
@@ -1132,7 +1132,7 @@ u32 vfp_double_cpdo(u32 inst, u32 fpscr)
1132 unsigned int vecitr, veclen, vecstride; 1132 unsigned int vecitr, veclen, vecstride;
1133 struct op *fop; 1133 struct op *fop;
1134 1134
1135 vecstride = (1 + ((fpscr & FPSCR_STRIDE_MASK) == FPSCR_STRIDE_MASK)) * 2; 1135 vecstride = (1 + ((fpscr & FPSCR_STRIDE_MASK) == FPSCR_STRIDE_MASK));
1136 1136
1137 fop = (op == FOP_EXT) ? &fops_ext[FEXT_TO_IDX(inst)] : &fops[FOP_TO_IDX(op)]; 1137 fop = (op == FOP_EXT) ? &fops_ext[FEXT_TO_IDX(inst)] : &fops[FOP_TO_IDX(op)];
1138 1138
@@ -1184,10 +1184,10 @@ u32 vfp_double_cpdo(u32 inst, u32 fpscr)
1184 * CHECK: It appears to be undefined whether we stop when 1184 * CHECK: It appears to be undefined whether we stop when
1185 * we encounter an exception. We continue. 1185 * we encounter an exception. We continue.
1186 */ 1186 */
1187 dest = FREG_BANK(dest) + ((FREG_IDX(dest) + vecstride) & 6); 1187 dest = FREG_BANK(dest) + ((FREG_IDX(dest) + vecstride) & 3);
1188 dn = FREG_BANK(dn) + ((FREG_IDX(dn) + vecstride) & 6); 1188 dn = FREG_BANK(dn) + ((FREG_IDX(dn) + vecstride) & 3);
1189 if (FREG_BANK(dm) != 0) 1189 if (FREG_BANK(dm) != 0)
1190 dm = FREG_BANK(dm) + ((FREG_IDX(dm) + vecstride) & 6); 1190 dm = FREG_BANK(dm) + ((FREG_IDX(dm) + vecstride) & 3);
1191 } 1191 }
1192 return exceptions; 1192 return exceptions;
1193 1193
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c
index eea3f50743d..b4e210df92f 100644
--- a/arch/arm/vfp/vfpmodule.c
+++ b/arch/arm/vfp/vfpmodule.c
@@ -229,7 +229,7 @@ void VFP9_bounce(u32 trigger, u32 fpexc, struct pt_regs *regs)
229 /* 229 /*
230 * Enable access to the VFP so we can handle the bounce. 230 * Enable access to the VFP so we can handle the bounce.
231 */ 231 */
232 fmxr(FPEXC, fpexc & ~(FPEXC_EX|FPEXC_INV|FPEXC_UFC|FPEXC_IOC)); 232 fmxr(FPEXC, fpexc & ~(FPEXC_EX|FPEXC_FPV2|FPEXC_INV|FPEXC_UFC|FPEXC_OFC|FPEXC_IOC));
233 233
234 orig_fpscr = fpscr = fmrx(FPSCR); 234 orig_fpscr = fpscr = fmrx(FPSCR);
235 235