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>