On Thu, Jan 17, 2013 at 10:15:49AM -0800, David Daney wrote: > >diff --git a/arch/mips/include/asm/break.h b/arch/mips/include/asm/break.h > >index 9161e68..df9d090 100644 > >--- a/arch/mips/include/asm/break.h > >+++ b/arch/mips/include/asm/break.h > >@@ -27,6 +27,7 @@ > > #define BRK_STACKOVERFLOW 9 /* For Ada stackchecking */ > > #define BRK_NORLD 10 /* No rld found - not used by Linux/MIPS */ > > #define _BRK_THREADBP 11 /* For threads, user bp (used by debuggers) */ > >+#define BRK_BUG_MM 12 /* Used by BUG() in microMIPS mode */ > > #define BRK_BUG 512 /* Used by BUG() */ > > Can we move the CONFIG_CPU_MICROMIPS to here and just call the thing > BRK_BUG? > > Or perhaps redefining it unconditionally. I am not sure what the > implications of doing that would be. > > That way... The kernel decodes break and trap instruction in traps.c. For a microMIPS- enabled kernel it needs to be able to decode both classic and microMIPS encoded instructions so we want separate symbols. Or we do something like #define BRK_MM_BUG 12 /* Used by BUG() in microMIPS mode */ #define BRK_CM_BUG 512 /* Used by BUG() */ #ifdef __mips_micromips #define BRK_BUG BRK_MM_BUG #else #define BRK_BUG BRK_CM_BUG #endif This makes the BRK_MM_* / BRK_CM_* macros available for decoding instructions and the microMIPS-agnostic BRK_BUG for code such as BUG(). > > #define BRK_KDB 513 /* Used in KDB_ENTER() */ > > #define BRK_MEMU 514 /* Used by FPU emulator */ > >diff --git a/arch/mips/include/asm/bug.h b/arch/mips/include/asm/bug.h > >index 540c98a..b716fb9 100644 > >--- a/arch/mips/include/asm/bug.h > >+++ b/arch/mips/include/asm/bug.h > >@@ -7,6 +7,10 @@ > > #ifdef CONFIG_BUG > > > > #include <asm/break.h> > >+#ifdef CONFIG_CPU_MICROMIPS > >+#undef BRK_BUG > >+#define BRK_BUG BRK_BUG_MM > >+#endif > > > > ...We don't need this bit. Doing an #undef risks using different > values for BRK_BUG depending on whether or not asm/bug.h is > included. And generally is not very elegant. Ralf