This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / arch / ppc / kernel / ppc-stub.c
index d61889c..a869750 100644 (file)
@@ -498,7 +498,7 @@ static struct hard_trap_info
        unsigned int tt;                /* Trap type code for powerpc */
        unsigned char signo;            /* Signal that we map this trap into */
 } hard_trap_info[] = {
-#if defined(CONFIG_40x) || defined(CONFIG_BOOKE)
+#if defined(CONFIG_40x)
        { 0x100, SIGINT  },             /* critical input interrupt */
        { 0x200, SIGSEGV },             /* machine check */
        { 0x300, SIGSEGV },             /* data storage */
@@ -521,7 +521,7 @@ static struct hard_trap_info
        ** 0x1100  data TLB miss
        ** 0x1200  instruction TLB miss
        */
-       { 0x2002, SIGTRAP},             /* debug */
+       { 0x2000, SIGTRAP},             /* debug */
 #else
        { 0x200, SIGSEGV },             /* machine check */
        { 0x300, SIGSEGV },             /* address error (store) */
@@ -602,6 +602,11 @@ handle_exception (struct pt_regs *regs)
        sigval = computeSignal(regs->trap);
        ptr = remcomOutBuffer;
 
+#if defined(CONFIG_40x)
+       *ptr++ = 'S';
+       *ptr++ = hexchars[sigval >> 4];
+       *ptr++ = hexchars[sigval & 0xf];
+#else
        *ptr++ = 'T';
        *ptr++ = hexchars[sigval >> 4];
        *ptr++ = hexchars[sigval & 0xf];
@@ -615,6 +620,8 @@ handle_exception (struct pt_regs *regs)
        *ptr++ = ':';
        ptr = mem2hex(((char *)regs) + SP_REGNUM*4, ptr, 4);
        *ptr++ = ';';
+#endif
+
        *ptr++ = 0;
 
        putpacket(remcomOutBuffer);
@@ -767,6 +774,10 @@ handle_exception (struct pt_regs *regs)
  * some location may have changed something that is in the instruction cache.
  */
                        kgdb_flush_cache_all();
+#if defined(CONFIG_40x)
+                       strcpy(remcomOutBuffer, "OK");
+                       putpacket(remcomOutBuffer);
+#endif
                        mtmsr(msr);
 
                        kgdb_interruptible(1);
@@ -780,9 +791,10 @@ handle_exception (struct pt_regs *regs)
 
                case 's':
                        kgdb_flush_cache_all();
-#if defined(CONFIG_40x) || defined(CONFIG_BOOKE)
-                       mtspr(SPRN_DBCR0, mfspr(SPRN_DBCR0) | DBCR0_IC);
+#if defined(CONFIG_40x)
                        regs->msr |= MSR_DE;
+                       regs->dbcr0 |= (DBCR0_IDM | DBCR0_IC);
+                       mtmsr(msr);
 #else
                        regs->msr |= MSR_SE;
 #endif