On 01/17/2013 09:36 AM, Steven J. Hill wrote:
From: "Steven J. Hill" <sjhill@xxxxxxxx> The BRK_BUG value is used in the BUG and __BUG_ON inline macros. For standard MIPS cores the code in the 'tne' instruction is 10-bits long. In microMIPS, the 'tne' instruction is recoded and the code can only be 4-bits long. We use the value of 12 instead of 512 when building a microMIPS kernel. Signed-off-by: Steven J. Hill <sjhill@xxxxxxxx> --- arch/mips/include/asm/break.h | 1 + arch/mips/include/asm/bug.h | 4 ++++ 2 files changed, 5 insertions(+) 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...
#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.
static inline void __noreturn BUG(void) {