[parisc-linux] unaligned.c oops
LaMont Jones
lamont@smallone.fc.hp.com
Thu, 2 Oct 2003 15:10:48 -0600
--YiEDa0DAkWCtVeE4
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
The following patch should make the unaligned handler work better.
(float ops were miscoded...)
lamont
--YiEDa0DAkWCtVeE4
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="unaligned.diff"
Index: unaligned.c
===================================================================
RCS file: /var/cvs/linux-2.4/arch/parisc/kernel/unaligned.c,v
retrieving revision 1.21
diff -u -r1.21 unaligned.c
--- unaligned.c 23 Sep 2003 20:15:33 -0000 1.21
+++ unaligned.c 2 Oct 2003 21:09:02 -0000
@@ -93,13 +93,17 @@
#define OPCODE_STDA OPCODE1(0x03,1,0xf)
#define OPCODE_FLDWX OPCODE1(0x09,0,0x0)
-#define OPCODE_FSTWX OPCODE1(0x09,0,0x4)
+#define OPCODE_FLDWXR OPCODE1(0x09,0,0x1)
+#define OPCODE_FSTWX OPCODE1(0x09,0,0x8)
+#define OPCODE_FSTWXR OPCODE1(0x09,0,0x9)
#define OPCODE_FLDWS OPCODE1(0x09,1,0x0)
-#define OPCODE_FSTWS OPCODE1(0x09,1,0x4)
+#define OPCODE_FLDWSR OPCODE1(0x09,1,0x1)
+#define OPCODE_FSTWS OPCODE1(0x09,1,0x8)
+#define OPCODE_FSTWSR OPCODE1(0x09,1,0x9)
#define OPCODE_FLDDX OPCODE1(0x0b,0,0x0)
-#define OPCODE_FSTDX OPCODE1(0x0b,0,0x4)
+#define OPCODE_FSTDX OPCODE1(0x0b,0,0x8)
#define OPCODE_FLDDS OPCODE1(0x0b,1,0x0)
-#define OPCODE_FSTDS OPCODE1(0x0b,1,0x4)
+#define OPCODE_FSTDS OPCODE1(0x0b,1,0x8)
#define OPCODE_LDD_L OPCODE2(0x14,0)
#define OPCODE_FLDD_L OPCODE2(0x14,1)
@@ -541,6 +545,8 @@
case OPCODE_FLDWX:
case OPCODE_FLDWS:
+ case OPCODE_FLDWXR:
+ case OPCODE_FLDWSR:
flop=1;
ret = emulate_ldw(regs,FR3(regs->iir),1);
break;
@@ -553,6 +559,8 @@
case OPCODE_FSTWX:
case OPCODE_FSTWS:
+ case OPCODE_FSTWXR:
+ case OPCODE_FSTWSR:
flop=1;
ret = emulate_stw(regs,FR3(regs->iir),1);
break;
--YiEDa0DAkWCtVeE4--