Subject: LO reg. gets trashed by kgdb in 2.4.x and older kernels

From: Sergei Shtylyov <[email-masked]>
Date: Mon, 05 Jul 2004 19:05:14 +0400

Hi.

     I have discovered that the gdb-low.S trashes the LO reg. instead of 
restoring it. This was fixed for the 2.6 kernels but, as it seems, was left 
unfixed in the earlier ones (run into this on 2.4.18/2.4.20). Here's the patch
against the lastest 2.4.x revision of the file...

Index: linux/arch/mips/kernel/gdb-low.S
===================================================================
RCS file: /home/cvs/linux/arch/mips/kernel/gdb-low.S,v
retrieving revision 1.11.2.3
diff -a -u -r1.11.2.3 gdb-low.S
--- linux/arch/mips/kernel/gdb-low.S	20 Feb 2003 18:19:01 -0000	1.11.2.3
+++ linux/arch/mips/kernel/gdb-low.S	5 Jul 2004 14:48:08 -0000
@@ -283,7 +283,7 @@
  		lw	v0,GDB_FR_HI(sp)
  		lw	v1,GDB_FR_LO(sp)
  		mthi	v0
-		mtlo	v0
+		mtlo	v1
  		lw	ra,GDB_FR_REG31(sp)
  		lw	fp,GDB_FR_REG30(sp)
  		lw	gp,GDB_FR_REG28(sp)

---

From: Ralf Baechle <[email-masked]>
Date: Thu, 8 Jul 2004 13:43:23 +0200

> against the lastest 2.4.x revision of the file...

Thanks.  This also was an ancient bug probably dating back to late '94 or
early '95 so all branches other than 2.6 were affected.

  Ralf