vserver 1.9.5.x5
[linux-2.6.git] / arch / ppc / kernel / ppc-stub.c
index a869750..d61889c 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)
+#if defined(CONFIG_40x) || defined(CONFIG_BOOKE)
        { 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
        */
-       { 0x2000, SIGTRAP},             /* debug */
+       { 0x2002, SIGTRAP},             /* debug */
 #else
        { 0x200, SIGSEGV },             /* machine check */
        { 0x300, SIGSEGV },             /* address error (store) */
@@ -602,11 +602,6 @@ 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];
@@ -620,8 +615,6 @@ handle_exception (struct pt_regs *regs)
        *ptr++ = ':';
        ptr = mem2hex(((char *)regs) + SP_REGNUM*4, ptr, 4);
        *ptr++ = ';';
-#endif
-
        *ptr++ = 0;
 
        putpacket(remcomOutBuffer);
@@ -774,10 +767,6 @@ 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);
@@ -791,10 +780,9 @@ handle_exception (struct pt_regs *regs)
 
                case 's':
                        kgdb_flush_cache_all();
-#if defined(CONFIG_40x)
+#if defined(CONFIG_40x) || defined(CONFIG_BOOKE)
+                       mtspr(SPRN_DBCR0, mfspr(SPRN_DBCR0) | DBCR0_IC);
                        regs->msr |= MSR_DE;
-                       regs->dbcr0 |= (DBCR0_IDM | DBCR0_IC);
-                       mtmsr(msr);
 #else
                        regs->msr |= MSR_SE;
 #endif