| /* |
| * 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> |
| #include <net.h> |
| |
| #include <lynxkdi.h> |
| |
| DECLARE_GLOBAL_DATA_PTR; |
| |
| #if defined(CONFIG_MPC8260) || defined(CONFIG_440EP) || defined(CONFIG_440GR) |
| void lynxkdi_boot (image_header_t *hdr) |
| { |
| void (*lynxkdi)(void) = (void(*)(void))image_get_ep (hdr); |
| lynxos_bootparms_t *parms = (lynxos_bootparms_t *)0x0020; |
| bd_t *kbd; |
| u32 *psz = (u32 *)(image_get_load (hdr) + 0x0204); |
| |
| memset (parms, 0, sizeof(*parms)); |
| kbd = gd->bd; |
| parms->clock_ref = kbd->bi_busfreq; |
| parms->dramsz = kbd->bi_memsize; |
| eth_getenv_enetaddr("ethaddr", parms->ethaddr); |
| mtspr (SPRN_SPRG2, 0x0020); |
| |
| /* Do a simple check for Bluecat so we can pass the |
| * kernel command line parameters. |
| */ |
| if (le32_to_cpu (*psz) == image_get_data_size (hdr)) { /* FIXME: NOT SURE HERE ! */ |
| char *args; |
| char *cmdline = (char *)(image_get_load (hdr) + 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 |