Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 20 May 2012 22:07:18 GMT
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 211452 for review
Message-ID:  <201205202207.q4KM7ILq057188@skunkworks.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@211452?ac=10

Change 211452 by rwatson@rwatson_svr_ctsrd_mipsbuild on 2012/05/20 22:06:14

	As a debugging aid, cause capability coprocessor usability faults
	to enter the kernel debugger.  I'm not running into this currently,
	but might do in the future.

Affected files ...

.. //depot/projects/ctsrd/cheribsd/src/sys/mips/mips/trap.c#3 edit
.. //depot/projects/ctsrd/cheribsd/src/sys/sys/kdb.h#2 edit

Differences ...

==== //depot/projects/ctsrd/cheribsd/src/sys/mips/mips/trap.c#3 (text+ko) ====

@@ -831,11 +831,13 @@
 		goto err;
 		break;
 	case T_COP_UNUSABLE:
-#ifdef CPU_CHERI
-	/* XXXRW: CP2 state management here. */
+		cop = (trapframe->cause & MIPS_CR_COP_ERR) >> MIPS_CR_COP_ERR_SHIFT;
+#if defined(CPU_CHERI) && defined(DDB)
+		/* XXXRW: CP2 state management here. */
+		if (cop == 2)
+			kdb_enter(KDB_WHY_CHERI, "T_COP_UNUSABLE exception");
 #endif
 #ifdef	CPU_CNMIPS
-		cop = (trapframe->cause & MIPS_CR_COP_ERR) >> MIPS_CR_COP_ERR_SHIFT;
 		/* Handle only COP2 exception */
 		if (cop != 2)
 			goto err;
@@ -873,6 +875,12 @@
 
 	case T_COP_UNUSABLE + T_USER:
 		cop = (trapframe->cause & MIPS_CR_COP_ERR) >> MIPS_CR_COP_ERR_SHIFT;
+#if defined(CPU_CHERI) && defined(DDB)
+		/* XXXRW: CP2 state management here. */
+		if (cop == 2)
+			kdb_enter(KDB_WHY_CHERI,
+			    "T_COP_UNUSABLE + T_USER exception");
+#endif
 		if (cop == 1) {
 #if !defined(CPU_HAVEFPU)
 		/* FP (COP1) instruction */
@@ -888,9 +896,6 @@
 			goto out;
 #endif
 		}
-#ifdef CPU_CHERI
-		/* XXXRW: CP2 state management here. */
-#endif
 #ifdef	CPU_CNMIPS
 		else  if (cop == 2) {
 			addr = trapframe->pc;

==== //depot/projects/ctsrd/cheribsd/src/sys/sys/kdb.h#2 (text+ko) ====

@@ -109,6 +109,7 @@
 #define	KDB_WHY_POWERPC		"powerpc"	/* Unhandled powerpc intr. */
 #define	KDB_WHY_UNIONFS		"unionfs"	/* Unionfs bug. */
 #define	KDB_WHY_DTRACE		"dtrace"	/* DTrace action entered debugger. */
+#define	KDB_WHY_CHERI		"cheri"		/* CHERI MIPS coprocessor. */
 
 /* Return values for kdb_alt_break */
 #define	KDB_REQ_DEBUGGER	1	/* User requested Debugger */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201205202207.q4KM7ILq057188>