diff -Naurb u-boot-old/common/cmd_bootm.c u-boot-new/common/cmd_bootm.c
--- u-boot-old/common/cmd_bootm.c	2003-07-01 17:07:07.000000000 -0400
+++ u-boot-new/common/cmd_bootm.c	2003-07-21 15:30:50.000000000 -0400
@@ -120,6 +120,10 @@
 #if defined(CONFIG_ARTOS) && defined(CONFIG_PPC)
 static boot_os_Fcn do_bootm_artos;
 #endif
+#ifdef CONFIG_LYNXKDI
+static boot_os_Fcn do_bootm_lynxkdi;
+extern void lynxkdi_boot( image_header_t * );
+#endif
 
 image_header_t header;
 
@@ -350,6 +354,13 @@
 			     addr, len_ptr, verify);
 	    break;
 
+#ifdef CONFIG_LYNXKDI
+	case IH_OS_LYNXOS:
+	    do_bootm_lynxkdi (cmdtp, flag, argc, argv,
+			     addr, len_ptr, verify);
+	    break;
+#endif
+	    
 	case IH_OS_RTEMS:
 	    do_bootm_rtems (cmdtp, flag, argc, argv,
 			     addr, len_ptr, verify);
@@ -1008,6 +1019,9 @@
 #ifdef CONFIG_ARTOS
 	case IH_OS_ARTOS:	os = "ARTOS";			break;
 #endif
+#ifdef CONFIG_LYNXKDI
+	case IH_OS_LYNXOS:	os = "LynxOS";			break;
+#endif
 	default:		os = "Unknown OS";		break;
 	}
 
@@ -1180,3 +1194,17 @@
 	do_bootelf(cmdtp, 0, 2, local_args);
 }
 #endif /* CFG_CMD_ELF */
+
+#ifdef CONFIG_LYNXKDI
+static void
+do_bootm_lynxkdi (cmd_tbl_t *cmdtp, int flag,
+		 int	argc, char *argv[],
+		 ulong	addr,
+		 ulong	*len_ptr,
+		 int	verify)
+{
+	lynxkdi_boot( &header );
+}
+
+#endif /* CONFIG_LYNXKDI */
+
diff -Naurb u-boot-old/common/lynxkdi.c u-boot-new/common/lynxkdi.c
--- u-boot-old/common/lynxkdi.c	1969-12-31 19:00:00.000000000 -0500
+++ u-boot-new/common/lynxkdi.c	2003-07-21 15:30:18.000000000 -0400
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) Orbacom Systems, Inc <www.orbacom.com>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are freely
+ * permitted provided that the above copyright notice and this
+ * paragraph and the following disclaimer are duplicated in all
+ * such forms.
+ *
+ * This software is provided "AS IS" and without any express or
+ * implied warranties, including, without limitation, the implied
+ * warranties of merchantability and fitness for a particular
+ * purpose.
+ */
+
+#include <common.h>
+#include <asm/processor.h>
+#include <image.h>
+
+#if defined(CONFIG_LYNXKDI)
+#include <lynxkdi.h>
+
+#if defined(CONFIG_MPC8260)
+void lynxkdi_boot ( image_header_t *hdr )
+{
+	void (*lynxkdi)(void) = (void(*)(void))hdr->ih_ep;
+	lynxos_bootparms_t *parms = (lynxos_bootparms_t *)0x0020;
+	bd_t *kbd;
+	DECLARE_GLOBAL_DATA_PTR;
+	u32 *psz = (u32 *)(hdr->ih_load + 0x0204);
+
+	memset( parms, 0, sizeof(*parms));
+	kbd = gd->bd;
+	parms->clock_ref = kbd->bi_busfreq;
+	parms->dramsz = kbd->bi_memsize;
+	memcpy(parms->ethaddr, kbd->bi_enetaddr, 6);
+	mtspr(SPRN_SPRG2, 0x0020);
+
+	/* Do a simple check for Bluecat so we can pass the
+	 * kernel command line parameters.
+	 */
+	if( le32_to_cpu(*psz) == hdr->ih_size ){
+	    char *args;
+	    char *cmdline = (char *)(hdr->ih_load + 0x020c);
+	    int len;
+	    
+	    printf("Booting Bluecat KDI ...\n");
+	    udelay(200*1000); /* Allow serial port to flush */
+	    if ((args = getenv("bootargs")) == NULL)
+		    args = "";
+	    /* Prepend the cmdline */
+	    len = strlen(args);
+	    if( len && (len + strlen(cmdline) + 2 < (0x0400 - 0x020c))) {
+		memmove( cmdline + strlen(args) + 1, cmdline, strlen(cmdline) );
+		strcpy( cmdline, args );
+		cmdline[len] = ' ';
+	    }
+	}
+	else {
+	    printf("Booting LynxOS KDI ...\n");
+	}
+
+	lynxkdi();
+}
+#else
+#error "Lynx KDI support not implemented for configured CPU"
+#endif
+
+#endif	/* CONFIG_LYNXKDI */
+
diff -Naurb u-boot-old/common/Makefile u-boot-new/common/Makefile
--- u-boot-old/common/Makefile	2003-06-27 17:32:30.000000000 -0400
+++ u-boot-new/common/Makefile	2003-07-21 15:31:26.000000000 -0400
@@ -44,7 +44,7 @@
 	  environment.o env_common.o \
 	  env_flash.o env_eeprom.o env_nvram.o env_nowhere.o \
 	  flash.o fpga.o \
-	  hush.o kgdb.o lists.o miiphybb.o miiphyutil.o \
+	  hush.o kgdb.o lists.o lynxkdi.o miiphybb.o miiphyutil.o \
 	  s_record.o soft_i2c.o soft_spi.o spartan2.o \
 	  usb.o usb_kbd.o usb_storage.o \
 	  virtex2.o xilinx.o
diff -Naurb u-boot-old/doc/README.lynxkdi u-boot-new/doc/README.lynxkdi
--- u-boot-old/doc/README.lynxkdi	1969-12-31 19:00:00.000000000 -0500
+++ u-boot-new/doc/README.lynxkdi	2003-07-21 16:03:18.000000000 -0400
@@ -0,0 +1,63 @@
+			   LYNX KDI SUPPORT
+
+		    Last Update: July 20, 2003
+=======================================================================
+
+This file describes support for LynuxWorks KDI within u-boot. Support
+is enabled by defining CONFIG_LYNXKDI.
+
+
+LYNXOS AND BLUECAT SUPPORTED
+============================
+Both LynxOS and BlueCat linux KDIs are supported. The implementation
+automatically detects which is being booted. When you use mkimage
+you should specify "lynxos" for both (see target-specific notes).
+
+
+SUPPORTED ARCHITECTURE/TARGETS
+==============================
+The following targets have been tested:
+
+-PowerPC  MPC8260ADS
+
+
+FILES TO LOOK AT
+================
+include/lynxkdi.h    -defines a simple struct passed to a kdi.
+common/lynxkdi.c     -implements the call to the kdi.
+common/cmd_bootm.c   -top-level command implementation ("bootm").
+
+
+====================================================================
+TARGET SPECIFIC NOTES
+====================================================================
+
+MPC8260ADS
+===========
+The default LynxOS and BlueCat implementations require some
+modifications to the config file.
+
+Edit include/configs/MPC8260ADS.h to use the following:
+
+#define CFG_IMMR	0xFA200000
+#define CFG_BCSR	0xFA100000
+#define CFG_BR1_PRELIM	0xFA101801
+
+When creating a LynxOS or BlueCat u-boot image using mkimage,
+you must specify the following:
+
+Both:    -A ppc -O lynxos -T kernel -C none
+LynxOS:  -a 0x00004000 -e 0x00004020
+BlueCat: -a 0x00500000 -e 0x00507000
+
+To pass the MAC address to BlueCat you should define the
+"fcc2_ether_addr" parameter in the "bootargs" environment
+variable. E.g.:
+
+==> setenv bootargs fcc2_ether_addr=11:22:33:33:44:55:66
+
+
+
+
+
+
diff -Naurb u-boot-old/include/lynxkdi.h u-boot-new/include/lynxkdi.h
--- u-boot-old/include/lynxkdi.h	1969-12-31 19:00:00.000000000 -0500
+++ u-boot-new/include/lynxkdi.h	2003-07-21 15:30:34.000000000 -0400
@@ -0,0 +1,44 @@
+/*
+ * (C) Copyright 2003
+ * Orbacom Systems, Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef __LYNXKDI_H__
+#define __LYNXKDI_H__
+
+
+/* Boot parameter struct passed to kernel
+ */
+typedef struct lynxos_bootparms_t {
+	uint8_t		rsvd1[2];	/* Reserved			*/
+	uint8_t		ethaddr[6];	/* Ethernet address		*/
+	uint16_t	flags;		/* Boot flags			*/
+	uint32_t	rate;		/* System frequency		*/
+	uint32_t	clock_ref;	/* Time reference		*/
+	uint32_t	dramsz;		/* DRAM size			*/
+	uint32_t    	rsvd2;		/* Reserved			*/
+} lynxos_bootparms_t;
+
+
+
+#endif	/* __LYNXKDI_H__ */
+
+
diff -Naurb u-boot-old/README u-boot-new/README
--- u-boot-old/README	2003-06-30 12:24:52.000000000 -0400
+++ u-boot-new/README	2003-07-21 16:19:49.000000000 -0400
@@ -2211,7 +2211,7 @@
 * Target Operating System (Provisions for OpenBSD, NetBSD, FreeBSD,
   4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks,
   LynxOS, pSOS, QNX, RTEMS, ARTOS;
-  Currently supported: Linux, NetBSD, VxWorks, QNX, RTEMS, ARTOS).
+  Currently supported: Linux, NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS).
 * Target CPU Architecture (Provisions for Alpha, ARM, Intel x86,
   IA64, MIPS, MIPS, PowerPC, IBM S390, SuperH, Sparc, Sparc 64 Bit;
   Currently supported: PowerPC).
