xmon is normally disabled unless booted with 'xmon=on'.
          Use 'xmon=off' to disable xmon init during runtime.
 
+config XMON_DISASSEMBLY
+       bool "Include disassembly support in xmon"
+       depends on XMON
+       default y
+       help
+         Include support for disassembling in xmon. You probably want
+         to say Y here, unless you're building for a memory-constrained
+         system.
+
 config IRQSTACKS
        bool "Use separate kernel stacks when processing interrupts"
        depends on PPC64
 
 ifdef CONFIG_PPC64
 EXTRA_CFLAGS += -mno-minimal-toc
 endif
-obj-y                  += xmon.o ppc-dis.o ppc-opc.o setjmp.o start.o \
-                          nonstdio.o
+
+obj-y                  += xmon.o setjmp.o start.o nonstdio.o
+
+ifdef CONFIG_XMON_DISASSEMBLY
+obj-y                  += ppc-dis.o ppc-opc.o
 obj-$(CONFIG_PPC_CELL) += spu-dis.o spu-opc.o
+endif
 
--- /dev/null
+#ifndef _POWERPC_XMON_DIS_ASM_H
+#define _POWERPC_XMON_DIS_ASM_H
+/*
+ * Copyright (C) 2006 Michael Ellerman, IBM Corporation.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+extern void print_address (unsigned long memaddr);
+
+#ifdef CONFIG_XMON_DISASSEMBLY
+extern int print_insn_powerpc(unsigned long insn, unsigned long memaddr);
+extern int print_insn_spu(unsigned long insn, unsigned long memaddr);
+#else
+static inline int print_insn_powerpc(unsigned long insn, unsigned long memaddr)
+{
+       printf("%.8x", insn);
+       return 0;
+}
+
+static inline int print_insn_spu(unsigned long insn, unsigned long memaddr)
+{
+       printf("%.8x", insn);
+       return 0;
+}
+#endif
+
+#endif /* _POWERPC_XMON_DIS_ASM_H */
 
 #include "nonstdio.h"
 #include "ansidecl.h"
 #include "ppc.h"
-
-extern void print_address (unsigned long memaddr);
+#include "dis-asm.h"
 
 /* Print a PowerPC or POWER instruction.  */
 
 
 #include "nonstdio.h"
 #include "ansidecl.h"
 #include "spu.h"
-
-extern void print_address (unsigned long memaddr);
+#include "dis-asm.h"
 
 /* This file provides a disassembler function which uses
    the disassembler interface defined in dis-asm.h.   */
 
 #endif
 
 #include "nonstdio.h"
+#include "dis-asm.h"
 
 #define scanhex        xmon_scanhex
 #define skipbl xmon_skipbl
 static void dump(void);
 static void prdump(unsigned long, long);
 static int ppc_inst_dump(unsigned long, long, int);
-void print_address(unsigned long);
 static void backtrace(struct pt_regs *);
 static void excprint(struct pt_regs *);
 static void prregs(struct pt_regs *);
 
 int xmon_no_auto_backtrace;
 
-extern int print_insn_powerpc(unsigned long insn, unsigned long memaddr);
-extern int print_insn_spu(unsigned long insn, unsigned long memaddr);
-
 extern void xmon_enter(void);
 extern void xmon_leave(void);