Skip to contentSkip to conversation

unaligned.c oops

parisc-linux LaMont Jones 1 participant 1 message Oct 2, 2003

lore
Share & tools
lore
#0 lore raw

The following patch should make the unaligned handler work better. (float ops were miscoded...)

lamont

Index: unaligned.c
===================================================================
RCS file: /var/cvs/linux-2.4/arch/parisc/kernel/unaligned.c,v retrieving revision 1.21

unaligned.c +12 -4
diff -u -r1.21 unaligned.c
@@ -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;