diff mbox

[PATCHv2,17/18] DSPBRIDGE: Delete unused files

Message ID 1261016163-11091-18-git-send-email-omar.ramirez@ti.com (mailing list archive)
State Awaiting Upstream, archived
Headers show

Commit Message

omar ramirez Dec. 17, 2009, 2:16 a.m. UTC
None
diff mbox

Patch

diff --git a/arch/arm/plat-omap/include/dspbridge/dbl.h b/arch/arm/plat-omap/include/dspbridge/dbl.h
deleted file mode 100644
index 19847f9..0000000
--- a/arch/arm/plat-omap/include/dspbridge/dbl.h
+++ /dev/null
@@ -1,354 +0,0 @@ 
-/*
- * dbl.h
- *
- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
- *
- * Copyright (C) 2005-2006 Texas Instruments, Inc.
- *
- * This package is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-
-/*
- *  ======== dbl.h ========
- *
- *! Revision History
- *! ================
- *! 19-Mar-2002 jeh     Pass DBL_Symbol pointer to DBL_getAddr, DBL_getCAddr
- *!                     to accomodate dynamic loader library.
- *! 20-Nov-2001 jeh     Removed DBL_loadArgs().
- *! 24-Sep-2001 jeh     Code review changes.
- *! 07-Sep-2001 jeh     Added DBL_LoadSect(), DBL_UnloadSect().
- *! 05-Jun-2001 jeh     Created based on zl.h.
- */
-
-#ifndef DBL_
-#define DBL_
-
-#include <dspbridge/dbdefs.h>
-#include <dspbridge/dbldefs.h>
-
-/*
- *  ======== DBL_close ========
- *  Close library opened with DBL_open.
- *  Parameters:
- *      lib             - Handle returned from DBL_open().
- *  Returns:
- *  Requires:
- *      DBL initialized.
- *      Valid lib.
- *  Ensures:
- */
-	extern void DBL_close(struct DBL_LibraryObj *lib);
-
-/*
- *  ======== DBL_create ========
- *  Create a target object by specifying the alloc, free, and write
- *  functions for the target.
- *  Parameters:
- *      pTarget         - Location to store target handle on output.
- *      pAttrs          - Attributes.
- *  Returns:
- *      DSP_SOK:        Success.
- *      DSP_EMEMORY:    Memory allocation failed.
- *  Requires:
- *      DBL initialized.
- *      pAttrs != NULL.
- *      pTarget != NULL;
- *  Ensures:
- *      Success:        *pTarget != NULL.
- *      Failure:        *pTarget == NULL.
- */
-	extern DSP_STATUS DBL_create(struct DBL_TargetObj **pTarget,
-				     struct DBL_Attrs *pAttrs);
-
-/*
- *  ======== DBL_delete ========
- *  Delete target object and free resources for any loaded libraries.
- *  Parameters:
- *      target          - Handle returned from DBL_Create().
- *  Returns:
- *  Requires:
- *      DBL initialized.
- *      Valid target.
- *  Ensures:
- */
-	extern void DBL_delete(struct DBL_TargetObj *target);
-
-/*
- *  ======== DBL_exit ========
- *  Discontinue use of DBL module.
- *  Parameters:
- *  Returns:
- *  Requires:
- *      cRefs > 0.
- *  Ensures:
- *      cRefs >= 0.
- */
-	extern void DBL_exit(void);
-
-/*
- *  ======== DBL_getAddr ========
- *  Get address of name in the specified library.
- *  Parameters:
- *      lib             - Handle returned from DBL_open().
- *      name            - Name of symbol
- *      ppSym           - Location to store symbol address on output.
- *  Returns:
- *      TRUE:           Success.
- *      FALSE:          Symbol not found.
- *  Requires:
- *      DBL initialized.
- *      Valid lib.
- *      name != NULL.
- *      pAddr != NULL.
- *  Ensures:
- */
-	extern bool DBL_getAddr(struct DBL_LibraryObj *lib, char *name,
-				struct DBL_Symbol **ppSym);
-
-/*
- *  ======== DBL_getAttrs ========
- *  Retrieve the attributes of the target.
- *  Parameters:
- *      target          - Handle returned from DBL_Create().
- *      pAttrs          - Location to store attributes on output.
- *  Returns:
- *  Requires:
- *      DBL initialized.
- *      Valid target.
- *      pAttrs != NULL.
- *  Ensures:
- */
-	extern void DBL_getAttrs(struct DBL_TargetObj *target,
-				 struct DBL_Attrs *pAttrs);
-
-/*
- *  ======== DBL_getCAddr ========
- *  Get address of "C" name in the specified library.
- *  Parameters:
- *      lib             - Handle returned from DBL_open().
- *      name            - Name of symbol
- *      ppSym           - Location to store symbol address on output.
- *  Returns:
- *      TRUE:           Success.
- *      FALSE:          Symbol not found.
- *  Requires:
- *      DBL initialized.
- *      Valid lib.
- *      name != NULL.
- *      pAddr != NULL.
- *  Ensures:
- */
-	extern bool DBL_getCAddr(struct DBL_LibraryObj *lib, char *name,
-				 struct DBL_Symbol **ppSym);
-
-/*
- *  ======== DBL_getEntry ========
- *  Get program entry point.
- *
- *  Parameters:
- *      lib             - Handle returned from DBL_open().
- *      pEntry          - Location to store entry address on output.
- *  Returns:
- *      TRUE:           Success.
- *      FALSE:          Failure.
- *  Requires:
- *      DBL initialized.
- *      Valid lib.
- *      pEntry != NULL.
- *  Ensures:
- */
-	extern bool DBL_getEntry(struct DBL_LibraryObj *lib, u32 *pEntry);
-
-/*
- *  ======== DBL_getSect ========
- *  Get address and size of a named section.
- *  Parameters:
- *      lib             - Library handle returned from DBL_open().
- *      name            - Name of section.
- *      pAddr           - Location to store section address on output.
- *      pSize           - Location to store section size on output.
- *  Returns:
- *      DSP_SOK:        Success.
- *      DSP_ENOSECT:    Section not found.
- *  Requires:
- *      DBL initialized.
- *      Valid lib.
- *      name != NULL.
- *      pAddr != NULL;
- *      pSize != NULL.
- *  Ensures:
- */
-	extern DSP_STATUS DBL_getSect(struct DBL_LibraryObj *lib, char *name,
-				      u32 *pAddr, u32 *pSize);
-
-/*
- *  ======== DBL_init ========
- *  Initialize DBL module.
- *  Parameters:
- *  Returns:
- *      TRUE:           Success.
- *      FALSE:          Failure.
- *  Requires:
- *      cRefs >= 0.
- *  Ensures:
- *      Success:        cRefs > 0.
- *      Failure:        cRefs >= 0.
- */
-	extern bool DBL_init(void);
-
-/*
- *  ======== DBL_load ========
- *  Add symbols/code/data defined in file to that already present on
- *  the target.
- *
- *  Parameters:
- *      lib             - Library handle returned from DBL_open().
- *      flags           - Specifies whether loading code, data, and/or symbols.
- *      attrs           - May contain write, alloc, and free functions.
- *      pulEntry        - Location to store program entry on output.
- *  Returns:
- *      DSP_SOK:        Success.
- *      DSP_EFREAD:     File read failed.
- *      DSP_EFWRITE:    Write to target failed.
- *  Requires:
- *      DBL initialized.
- *      Valid lib.
- *      pEntry != NULL.
- *  Ensures:
- */
-	extern DSP_STATUS DBL_load(struct DBL_LibraryObj *lib, DBL_Flags flags,
-				   struct DBL_Attrs *attrs, u32 *pEntry);
-
-/*
- *  ======== DBL_loadSect ========
- *  Load a named section from an library (for overlay support).
- *  Parameters:
- *      lib             - Handle returned from DBL_open().
- *      sectName        - Name of section to load.
- *      attrs           - Contains write function and handle to pass to it.
- *  Returns:
- *      DSP_SOK:        Success.
- *      DSP_ENOSECT:    Section not found.
- *      DSP_EFWRITE:    Write function failed.
- *  Requires:
- *      Valid lib.
- *      sectName != NULL.
- *      attrs != NULL.
- *      attrs->write != NULL.
- *  Ensures:
- */
-	extern DSP_STATUS DBL_loadSect(struct DBL_LibraryObj *lib,
-				       char *sectName,
-				       struct DBL_Attrs *attrs);
-
-/*
- *  ======== DBL_open ========
- *  DBL_open() returns a library handle that can be used to load/unload
- *  the symbols/code/data via DBL_load()/DBL_unload().
- *  Parameters:
- *      target          - Handle returned from DBL_create().
- *      file            - Name of file to open.
- *      flags           - Specifies whether to load symbols now.
- *      pLib            - Location to store library handle on output.
- *  Returns:
- *      DSP_SOK:            Success.
- *      DSP_EMEMORY:        Memory allocation failure.
- *      DSP_EFOPEN:         File open failure.
- *      DSP_EFREAD:         File read failure.
- *      DSP_ECORRUPTFILE:   Unable to determine target type.
- *  Requires:
- *      DBL initialized.
- *      Valid target.
- *      file != NULL.
- *      pLib != NULL.
- *      struct DBL_Attrs fopen function non-NULL.
- *  Ensures:
- *      Success:        Valid *pLib.
- *      Failure:        *pLib == NULL.
- */
-	extern DSP_STATUS DBL_open(struct DBL_TargetObj *target, char *file,
-				   DBL_Flags flags,
-				   struct DBL_LibraryObj **pLib);
-
-/*
- *  ======== DBL_readSect ========
- *  Read COFF section into a character buffer.
- *  Parameters:
- *      lib             - Library handle returned from DBL_open().
- *      name            - Name of section.
- *      pBuf            - Buffer to write section contents into.
- *      size            - Buffer size
- *  Returns:
- *      DSP_SOK:        Success.
- *      DSP_ENOSECT:    Named section does not exists.
- *  Requires:
- *      DBL initialized.
- *      Valid lib.
- *      name != NULL.
- *      pBuf != NULL.
- *      size != 0.
- *  Ensures:
- */
-	extern DSP_STATUS DBL_readSect(struct DBL_LibraryObj *lib, char *name,
-				       char *pBuf, u32 size);
-
-/*
- *  ======== DBL_setAttrs ========
- *  Set the attributes of the target.
- *  Parameters:
- *      target          - Handle returned from DBL_create().
- *      pAttrs          - New attributes.
- *  Returns:
- *  Requires:
- *      DBL initialized.
- *      Valid target.
- *      pAttrs != NULL.
- *  Ensures:
- */
-	extern void DBL_setAttrs(struct DBL_TargetObj *target,
-				 struct DBL_Attrs *pAttrs);
-
-/*
- *  ======== DBL_unload ========
- *  Remove the symbols/code/data corresponding to the library lib.
- *  Parameters:
- *      lib             - Handle returned from DBL_open().
- *      attrs           - Contains free() function and handle to pass to it.
- *  Returns:
- *  Requires:
- *      DBL initialized.
- *      Valid lib.
- *  Ensures:
- */
-	extern void DBL_unload(struct DBL_LibraryObj *lib,
-			       struct DBL_Attrs *attrs);
-
-/*
- *  ======== DBL_unloadSect ========
- *  Unload a named section from an library (for overlay support).
- *  Parameters:
- *      lib             - Handle returned from DBL_open().
- *      sectName        - Name of section to load.
- *      attrs           - Contains free() function and handle to pass to it.
- *  Returns:
- *      DSP_SOK:        Success.
- *      DSP_ENOSECT:    Named section not found.
- *  Requires:
- *      DBL initialized.
- *      Valid lib.
- *      sectName != NULL.
- *  Ensures:
- */
-	extern DSP_STATUS DBL_unloadSect(struct DBL_LibraryObj *lib,
-					 char *sectName,
-					 struct DBL_Attrs *attrs);
-
-#endif				/* DBL_ */
diff --git a/arch/arm/plat-omap/include/dspbridge/dbof.h b/arch/arm/plat-omap/include/dspbridge/dbof.h
deleted file mode 100644
index 54f4250..0000000
--- a/arch/arm/plat-omap/include/dspbridge/dbof.h
+++ /dev/null
@@ -1,117 +0,0 @@ 
-/*
- * dbof.h
- *
- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
- *
- * Copyright (C) 2005-2006 Texas Instruments, Inc.
- *
- * This package is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-
-/*
- *  ======== dbof.h ========
- *  Description:
- *      Defines and typedefs for DSP/BIOS Bridge Object File Format (DBOF).
- *
- *! Revision History
- *! ================
- *! 12-Jul-2002 jeh     Added defines for DBOF_SectHdr page.
- *! 12-Oct-2001 jeh     Converted to std.h format.
- *! 07-Sep-2001 jeh     Added overlay support.
- *! 06-Jul-2001 jeh     Created.
- */
-
-#ifndef DBOF_
-#define DBOF_
-
-/* Enough to hold DCD section names: 32 digit ID + underscores */
-#define DBOF_DCDSECTNAMELEN     40
-
-/* Values for DBOF_SectHdr page field. */
-#define         DBOF_PROGRAM    0
-#define         DBOF_DATA       1
-#define         DBOF_CINIT      2
-
-/*
- *  ======== DBOF_FileHdr ========
- */
-	struct DBOF_FileHdr {
-		u32 magic;	/* COFF magic number */
-		u32 entry;	/* Program entry point */
-		u16 numSymbols;	/* Number of bridge symbols */
-		u16 numDCDSects;	/* Number of DCD sections */
-		u16 numSects;	/* Number of sections to load */
-		u16 numOvlySects;	/* Number of overlay sections */
-		u32 symOffset;	/* Offset in file to symbols */
-		u32 dcdSectOffset;	/* Offset to DCD sections */
-		u32 loadSectOffset;	/* Offset to loadable sections */
-		u32 ovlySectOffset;	/* Offset to overlay data */
-		u16 version;	/* DBOF version number */
-		u16 resvd;	/* Reserved for future use */
-	} ;
-
-/*
- *  ======== DBOF_DCDSectHdr ========
- */
-	struct DBOF_DCDSectHdr {
-		u32 size;	/* Sect size (target MAUs) */
-		char name[DBOF_DCDSECTNAMELEN];	/* DCD section name */
-	} ;
-
-/*
- *  ======== DBOF_OvlySectHdr ========
- */
-	struct DBOF_OvlySectHdr {
-		u16 nameLen;	/* Length of section name */
-		u16 numCreateSects;	/* # of sects loaded for create phase */
-		u16 numDeleteSects;	/* # of sects loaded for delete phase */
-		u16 numExecuteSects; /* # of sects loaded for execute phase */
-
-		/*
-		 *  Number of sections where load/unload phase is not specified.
-		 *  These sections will be loaded when create phase sects are
-		 *  loaded, and unloaded when the delete phase is unloaded.
-		 */
-		u16 numOtherSects;
-		u16 resvd;	/* Reserved for future use */
-	};
-
-/*
- *  ======== DBOF_OvlySectData ========
- */
-	struct DBOF_OvlySectData {
-		u32 loadAddr;	/* Section load address */
-		u32 runAddr;	/* Section run address */
-		u32 size;	/* Section size (target MAUs) */
-		u16 page;	/* Memory page number */
-		u16 resvd;	/* Reserved */
-	} ;
-
-/*
- *  ======== DBOF_SectHdr ========
- */
-	struct DBOF_SectHdr {
-		u32 addr;	/* Section address */
-		u32 size;	/* Section size (target MAUs) */
-		u16 page;	/* Page number */
-		u16 resvd;	/* Reserved for future use */
-	} ;
-
-/*
- *  ======== DBOF_SymbolHdr ========
- */
-	struct DBOF_SymbolHdr {
-		u32 value;	/* Symbol value */
-		u16 nameLen;	/* Length of symbol name */
-		u16 resvd;	/* Reserved for future use */
-	} ;
-
-#endif				/* DBOF_ */
-
diff --git a/drivers/dsp/bridge/dynload/dlclasses_hdr.h b/drivers/dsp/bridge/dynload/dlclasses_hdr.h
deleted file mode 100644
index 04f136e..0000000
--- a/drivers/dsp/bridge/dynload/dlclasses_hdr.h
+++ /dev/null
@@ -1,41 +0,0 @@ 
-/*
- * dlclasses_hdr.h
- *
- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
- *
- * Copyright (C) 2005-2006 Texas Instruments, Inc.
- *
- * This package is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-
-
-#ifndef _DLCLASSES_HDR_H
-#define _DLCLASSES_HDR_H
-
-/*****************************************************************************
- *****************************************************************************
- *
- *                          DLCLASSES_HDR.H
- *
- * Sample classes in support of the dynamic loader
- *
- * These are just concrete derivations of the virtual ones in dynamic_loader.h
- * with a few additional interfaces for init, etc.
- *****************************************************************************
- *****************************************************************************/
-
-#include <dspbridge/dynamic_loader.h>
-
-#include "DLstream.h"
-#include "DLsymtab.h"
-#include "DLalloc.h"
-#include "DLinit.h"
-
-#endif				/* _DLCLASSES_HDR_H */
diff --git a/drivers/dsp/bridge/pmgr/dbl.c b/drivers/dsp/bridge/pmgr/dbl.c
deleted file mode 100644
index 641b011..0000000
--- a/drivers/dsp/bridge/pmgr/dbl.c
+++ /dev/null
@@ -1,1385 +0,0 @@ 
-/*
- * dbl.c
- *
- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
- *
- * Copyright (C) 2005-2006 Texas Instruments, Inc.
- *
- * This package is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-
-/*
- *  ======== dbl.c ========
- *  Dynamic BOF Loader library. Contains functions related to
- *  loading and unloading symbols/code/data on DSP.
- *  Also contains other support functions.
- *
- *! Revision History
- *! ================
- *! 24-Feb-2003 swa 	PMGR Code review comments incorporated.
- *! 24-May-2002 jeh     Free DCD sects in DBL_close().
- *! 19-Mar-2002 jeh     Changes made to match dynamic loader (dbll.c): Pass
- *!		     DBL_Library to DBL_getAddr() instead of DBL_Target,
- *!		     eliminate scope param, use DBL_Symbol. Pass attrs to
- *!		     DBL_load(), DBL_unload().
- *! 20-Nov-2001 jeh     Removed DBL_loadArgs().
- *! 07-Sep-2001 jeh     Added overlay support.
- *! 31-Jul-2001 jeh     Include windows.h.
- *! 06-Jun-2001 jeh     Created.
- */
-
-/*  ----------------------------------- Host OS */
-#include <dspbridge/host_os.h>
-
-/*  ----------------------------------- DSP/BIOS Bridge */
-#include <dspbridge/std.h>
-#include <dspbridge/dbdefs.h>
-#include <dspbridge/errbase.h>
-
-/*  ----------------------------------- Trace & Debug */
-#include <dspbridge/dbc.h>
-#include <dspbridge/gt.h>
-
-/*  ----------------------------------- OS Adaptation Layer */
-#include <dspbridge/csl.h>
-#include <dspbridge/mem.h>
-#include <dspbridge/kfile.h>
-
-/*  ----------------------------------- This */
-#include <dspbridge/dbof.h>
-#include <dspbridge/dbl.h>
-
-#define DBL_TARGSIGNATURE      0x544c4244	/* "TLBD" */
-#define DBL_LIBSIGNATURE       0x4c4c4244	/* "LLBD" */
-
-#define C54TARG	 0
-#define C55TARG	 1
-#define NUMTARGS	2
-
-#define C54MAGIC	0x98	/* Magic number for TI C54 COF  */
-#define C55MAGIC	0x9c	/* Magic number for LEAD3 (C55) COF  */
-
-/* Three task phases */
-#define CREATEPHASE 0
-#define DELETEPHASE 1
-#define EXECUTEPHASE 2
-#define NONE 3		/* For overlay section with phase not specified */
-
-/* Default load buffer size */
-#define LOADBUFSIZE     0x800
-
-#define SWAPLONG(x) ((((x) << 24) & 0xFF000000) | (((x) << 8) & 0xFF0000L) | \
-		      (((x) >> 8) & 0xFF00L) | (((x) >> 24) & 0xFF))
-
-#define SWAPWORD(x) ((((x) << 8) & 0xFF00) | (((x) >> 8) & 0xFF))
-
-/*
- *  Macros for accessing the following types of overlay data within a
- *  structure of type OvlyData:
- *      - Overlay data not associated with a particular phase
- *      - Create phase overlay data
- *      - Delete phase overlay data
- *      - Execute phase overlay data
- */
-#define numOtherSects(pOvlyData)    ((pOvlyData)->hdr.dbofHdr.numOtherSects)
-#define numCreateSects(pOvlyData)   ((pOvlyData)->hdr.dbofHdr.numCreateSects)
-#define numDeleteSects(pOvlyData)   ((pOvlyData)->hdr.dbofHdr.numDeleteSects)
-#define numExecuteSects(pOvlyData)  ((pOvlyData)->hdr.dbofHdr.numExecuteSects)
-#define otherOffset(pOvlyData)      0
-#define createOffset(pOvlyData)     ((pOvlyData)->hdr.dbofHdr.numOtherSects)
-#define deleteOffset(pOvlyData)     (createOffset(pOvlyData) + \
-				     (pOvlyData->hdr.dbofHdr.numCreateSects))
-#define executeOffset(pOvlyData)    (deleteOffset(pOvlyData) + \
-				     (pOvlyData->hdr.dbofHdr.numDeleteSects))
-/*
- *  ======== OvlyHdr ========
- */
-struct OvlyHdr {
-	struct DBOF_OvlySectHdr dbofHdr;
-	char *pName; 		/* Name of overlay section */
-	u16 createRef; 	/* Reference count for create phase */
-	u16 deleteRef; 	/* Reference count for delete phase */
-	u16 executeRef; 	/* Execute phase ref count */
-	u16 otherRef; 		/* Unspecified phase ref count */
-} ;
-
-/*
- *  ======== OvlyData ========
- */
-struct OvlyData {
-	struct OvlyHdr hdr;
-	struct DBOF_OvlySectData data[1];
-} ;
-
-/*
- *  ======== Symbol ========
- */
-struct Symbol {
-	struct DBL_Symbol sym;
-	char *pSymName;
-};
-
-/*
- *  ======== DCDSect ========
- */
-struct DCDSect {
-	struct DBOF_DCDSectHdr sectHdr;
-	char *pData;
-} ;
-
-/*
- *  ======== DBL_TargetObj ========
- */
-struct DBL_TargetObj {
-	u32 dwSignature; 	/* For object validation */
-	struct DBL_Attrs dblAttrs; 	/* file read, write, etc. functions */
-	char *pBuf; 		/* Load buffer */
-};
-
-/*
- *  ======== TargetInfo ========
- */
-struct TargetInfo {
-	u16 dspType; 		/* eg, C54TARG, C55TARG */
-	u32 magic; 		/* COFF magic number, identifies target type */
-	u16 wordSize; 	/* Size of a DSP word */
-	u16 mauSize; 		/* Size of minimum addressable unit */
-	u16 charSize; 	/* For C55x, mausize = 1, but charsize = 2 */
-} ;
-
-/*
- *  ======== DBL_LibraryObj ========
- *  Represents a library loaded on a target.
- */
-struct DBL_LibraryObj {
-	u32 dwSignature; 	/* For object validation */
-	struct DBL_TargetObj *pTarget; 	/* Target for this library */
-	struct KFILE_FileObj *file; 	/* DBOF file handle */
-	bool byteSwapped; 	/* Are bytes swapped? */
-	struct DBOF_FileHdr fileHdr; 	/* Header of DBOF file */
-	u16 nSymbols; 		/* Number of DSP/Bridge symbols */
-	struct Symbol *symbols; 	/* Table of DSP/Bridge symbols */
-	u16 nDCDSects; 	/* Number of DCD sections */
-	u16 nOvlySects; 	/* Number of overlay nodes */
-	struct DCDSect *dcdSects; 	/* DCD section data */
-	struct OvlyData **ppOvlyData; 	/* Array of overlay section data */
-	struct TargetInfo *pTargetInfo; 	/* Entry in targetTab[] below */
-} ;
-
-#if GT_TRACE
-static struct GT_Mask DBL_debugMask = { NULL, NULL }; 	/* GT trace variable */
-#endif
-
-static u32 cRefs; 		/* module reference count */
-
-static u32 magicTab[NUMTARGS] = { C54MAGIC, C55MAGIC };
-
-static struct TargetInfo targetTab[] = {
-	/* targ     magic       wordsize    mausize    charsize */
-	{C54TARG, C54MAGIC, 2, 2, 2}, 	/* C54  */
-	{C55TARG, C55MAGIC, 2, 1, 2}, 	/* C55  */
-};
-
-static void freeSects(struct DBL_TargetObj *dbl, struct OvlyData *pOvlyData,
-		     s32 offset, s32 nSects);
-static DSP_STATUS loadSect(struct DBL_TargetObj *dbl,
-			  struct DBL_LibraryObj *pdblLib);
-static DSP_STATUS readDCDSects(struct DBL_TargetObj *dbl,
-			      struct DBL_LibraryObj *pdblLib);
-static DSP_STATUS readHeader(struct DBL_TargetObj *dbl,
-			    struct DBL_LibraryObj *pdblLib);
-static DSP_STATUS readOvlySects(struct DBL_TargetObj *dbl,
-				struct DBL_LibraryObj *pdblLib);
-static DSP_STATUS readSymbols(struct DBL_TargetObj *dbl,
-			     struct DBL_LibraryObj *pdblLib);
-
-/*
- *  ======== DBL_close ========
- *  Purpose:
- *  	Close library opened with DBL_open.
- */
-void DBL_close(struct DBL_LibraryObj *lib)
-{
-	struct DBL_LibraryObj *pdblLib = (struct DBL_LibraryObj *)lib;
-	u16 i;
-
-	DBC_Require(cRefs > 0);
-	DBC_Require(MEM_IsValidHandle(pdblLib, DBL_LIBSIGNATURE));
-
-	GT_1trace(DBL_debugMask, GT_ENTER, "DBL_close: lib: 0x%x\n", lib);
-
-	/* Free symbols */
-	if (pdblLib->symbols) {
-		for (i = 0; i < pdblLib->nSymbols; i++) {
-			if (pdblLib->symbols[i].pSymName)
-				MEM_Free(pdblLib->symbols[i].pSymName);
-
-		}
-		MEM_Free(pdblLib->symbols);
-	}
-
-	/* Free DCD sects */
-	if (pdblLib->dcdSects) {
-		for (i = 0; i < pdblLib->nDCDSects; i++) {
-			if (pdblLib->dcdSects[i].pData)
-				MEM_Free(pdblLib->dcdSects[i].pData);
-
-		}
-		MEM_Free(pdblLib->dcdSects);
-	}
-
-	/* Free overlay sects */
-	if (pdblLib->ppOvlyData) {
-		for (i = 0;  i < pdblLib->nOvlySects;  i++) {
-			if (pdblLib->ppOvlyData[i]) {
-				if (pdblLib->ppOvlyData[i]->hdr.pName) {
-					MEM_Free(pdblLib->ppOvlyData[i]->
-						hdr.pName);
-				}
-				MEM_Free(pdblLib->ppOvlyData[i]);
-			}
-		}
-		MEM_Free(pdblLib->ppOvlyData);
-	}
-
-	/* Close the file */
-	if (pdblLib->file)
-		(*pdblLib->pTarget->dblAttrs.fclose) (pdblLib->file);
-
-
-	MEM_FreeObject(pdblLib);
-}
-
-/*
- *  ======== DBL_create ========
- *  Purpose:
- *  	Create a target object by specifying the alloc, free, and
- *  	write functions for the target.
- */
-DSP_STATUS DBL_create(struct DBL_TargetObj **pTarget, struct DBL_Attrs *pAttrs)
-{
-	struct DBL_TargetObj *pdblTarget = NULL;
-	DSP_STATUS status = DSP_SOK;
-
-	DBC_Require(cRefs > 0);
-	DBC_Require(pAttrs != NULL);
-	DBC_Require(pTarget != NULL);
-
-	GT_2trace(DBL_debugMask, GT_ENTER,
-		 "DBL_create: pTarget: 0x%x pAttrs: 0x%x\n",
-		 pTarget, pAttrs);
-	/* Allocate DBL target object */
-	MEM_AllocObject(pdblTarget, struct DBL_TargetObj, DBL_TARGSIGNATURE);
-	if (pdblTarget == NULL) {
-		GT_0trace(DBL_debugMask, GT_6CLASS,
-			 "DBL_create: Memory allocation failed\n");
-		status = DSP_EMEMORY;
-	} else {
-		pdblTarget->dblAttrs = *pAttrs;
-		/* Allocate buffer for loading target */
-		pdblTarget->pBuf = MEM_Calloc(LOADBUFSIZE, MEM_PAGED);
-		if (pdblTarget->pBuf == NULL)
-			status = DSP_EMEMORY;
-
-	}
-	if (DSP_SUCCEEDED(status)) {
-		*pTarget = pdblTarget;
-	} else {
-		*pTarget = NULL;
-		if (pdblTarget)
-			DBL_delete(pdblTarget);
-
-	}
-	DBC_Ensure(DSP_SUCCEEDED(status) &&
-		  ((MEM_IsValidHandle((*pTarget), DBL_TARGSIGNATURE)) ||
-		  (DSP_FAILED(status) && *pTarget == NULL)));
-	return status;
-}
-
-/*
- *  ======== DBL_delete ========
- *  Purpose:
- *  	Delete target object and free resources for any loaded libraries.
- */
-void DBL_delete(struct DBL_TargetObj *target)
-{
-	DBC_Require(cRefs > 0);
-	DBC_Require(MEM_IsValidHandle(target, DBL_TARGSIGNATURE));
-
-	GT_1trace(DBL_debugMask, GT_ENTER,
-		 "DBL_delete: target: 0x%x\n", target);
-
-	if (target->pBuf)
-		MEM_Free(target->pBuf);
-
-	MEM_FreeObject(target);
-}
-
-/*
- *  ======== DBL_exit ========
- *  Purpose
- *  	Discontinue usage of DBL module.
- */
-void DBL_exit()
-{
-	DBC_Require(cRefs > 0);
-	cRefs--;
-	GT_1trace(DBL_debugMask, GT_5CLASS,
-		 "DBL_exit() ref count: 0x%x\n", cRefs);
-	DBC_Ensure(cRefs >= 0);
-}
-
-/*
- *  ======== DBL_getAddr ========
- *  Purpose:
- *  	Get address of name in the specified library.
- */
-bool DBL_getAddr(struct DBL_LibraryObj *lib, char *name,
-		struct DBL_Symbol **ppSym)
-{
-	bool retVal = false;
-	struct Symbol *symbol;
-	u16 i;
-
-	DBC_Require(cRefs > 0);
-	DBC_Require(MEM_IsValidHandle(lib, DBL_LIBSIGNATURE));
-	DBC_Require(name != NULL);
-	DBC_Require(ppSym != NULL);
-
-	GT_3trace(DBL_debugMask, GT_ENTER,
-		 "DBL_getAddr: libt: 0x%x name: %s pAddr: "
-		 "0x%x\n", lib, name, ppSym);
-	for (i = 0; i < lib->nSymbols; i++) {
-		symbol = &lib->symbols[i];
-		if (CSL_Strcmp(name, symbol->pSymName) == 0) {
-			/* Found it */
-			*ppSym = &lib->symbols[i].sym;
-			retVal = true;
-			break;
-		}
-	}
-	return retVal;
-}
-
-/*
- *  ======== DBL_getAttrs ========
- *  Purpose:
- *  	Retrieve the attributes of the target.
- */
-void DBL_getAttrs(struct DBL_TargetObj *target, struct DBL_Attrs *pAttrs)
-{
-	DBC_Require(cRefs > 0);
-	DBC_Require(MEM_IsValidHandle(target, DBL_TARGSIGNATURE));
-	DBC_Require(pAttrs != NULL);
-	GT_2trace(DBL_debugMask, GT_ENTER, "DBL_getAttrs: target: 0x%x pAttrs: "
-		  "0x%x\n", target, pAttrs);
-	*pAttrs = target->dblAttrs;
-}
-
-/*
- *  ======== DBL_getCAddr ========
- *  Purpose:
- *  	Get address of "C" name in the specified library.
- */
-bool DBL_getCAddr(struct DBL_LibraryObj *lib, char *name,
-		 struct DBL_Symbol **ppSym)
-{
-	bool retVal = false;
-	struct Symbol *symbol;
-	u16 i;
-
-	DBC_Require(cRefs > 0);
-	DBC_Require(MEM_IsValidHandle(lib, DBL_LIBSIGNATURE));
-	DBC_Require(name != NULL);
-	DBC_Require(ppSym != NULL);
-
-	GT_3trace(DBL_debugMask, GT_ENTER,
-		 "DBL_getCAddr: target: 0x%x name:%s pAddr:"
-		 " 0x%x\n", lib, name, ppSym);
-	for (i = 0;  i < lib->nSymbols;  i++) {
-		symbol = &lib->symbols[i];
-		if ((CSL_Strcmp(name, symbol->pSymName) == 0) ||
-		    (CSL_Strcmp(name, symbol->pSymName + 1) == 0 &&
-		     symbol->pSymName[0] == '_')) {
-			/* Found it */
-			*ppSym = &lib->symbols[i].sym;
-			retVal = true;
-			break;
-		}
-	}
-	return retVal;
-}
-
-/*
- *  ======== DBL_getEntry ========
- *  Purpose:
- *  	Get program entry point.
- *
- */
-bool DBL_getEntry(struct DBL_LibraryObj *lib, u32 *pEntry)
-{
-	struct DBL_LibraryObj *pdblLib = (struct DBL_LibraryObj *)lib;
-
-	DBC_Require(cRefs > 0);
-	DBC_Require(MEM_IsValidHandle(pdblLib, DBL_LIBSIGNATURE));
-	DBC_Require(pEntry != NULL);
-
-	GT_2trace(DBL_debugMask, GT_ENTER,
-		 "DBL_getEntry: lib: 0x%x pEntry: 0x%x\n", lib, pEntry);
-	*pEntry = pdblLib->fileHdr.entry;
-
-	return true;
-}
-
-/*
- *  ======== DBL_getSect ========
- *  Purpose:
- *  	Get address and size of a named section.
- */
-DSP_STATUS DBL_getSect(struct DBL_LibraryObj *lib, char *name, u32 *pAddr,
-		      u32 *pSize)
-{
-	struct DBL_LibraryObj *pdblLib = (struct DBL_LibraryObj *)lib;
-	u16 i;
-	DSP_STATUS status = DSP_ENOSECT;
-
-	DBC_Require(cRefs > 0);
-	DBC_Require(name != NULL);
-	DBC_Require(pAddr != NULL);
-	DBC_Require(pSize != NULL);
-	DBC_Require(MEM_IsValidHandle(pdblLib, DBL_LIBSIGNATURE));
-
-	GT_4trace(DBL_debugMask, GT_ENTER,
-		 "DBL_getSect: lib: 0x%x name: %s pAddr:"
-		 " 0x%x pSize: 0x%x\n", lib, name, pAddr, pSize);
-
-	/*
-	 *  Check for DCD and overlay sections. Overlay loader uses DBL_getSect
-	 *  to determine whether or not a node has overlay sections.
-	 *  DCD section names begin with '.'
-	 */
-	if (name[0] == '.') {
-		/* Get DCD section size (address is 0, since it's a NOLOAD). */
-		for (i = 0; i < pdblLib->nDCDSects; i++) {
-			if (CSL_Strcmp(pdblLib->dcdSects[i].sectHdr.name,
-			   name) == 0) {
-				*pAddr = 0;
-				*pSize = pdblLib->dcdSects[i].sectHdr.size *
-					 pdblLib->pTargetInfo->mauSize;
-				status = DSP_SOK;
-				break;
-			}
-		}
-	} else {
-		/* Check for overlay section */
-		for (i = 0;  i < pdblLib->nOvlySects;  i++) {
-			if (CSL_Strcmp(pdblLib->ppOvlyData[i]->hdr.pName,
-			   name) == 0) {
-				/* Address and size are meaningless */
-				*pAddr = 0;
-				*pSize = 0;
-				status = DSP_SOK;
-				break;
-			}
-		}
-	}
-
-	return status;
-}
-
-/*
- *  ======== DBL_init ========
- *  Purpose:
- *  	Initialize DBL module.
- */
-bool DBL_init(void)
-{
-	bool retVal = true;
-
-	DBC_Require(cRefs >= 0);
-
-	if (cRefs == 0) {
-		DBC_Assert(!DBL_debugMask.flags);
-		GT_create(&DBL_debugMask, "BL"); 	/* "BL" for dBL */
-
-	}
-
-	if (retVal)
-		cRefs++;
-
-
-	GT_1trace(DBL_debugMask, GT_5CLASS, "DBL_init(), ref count:  0x%x\n",
-		  cRefs);
-
-	DBC_Ensure((retVal && (cRefs > 0)) || (!retVal && (cRefs >= 0)));
-
-	return retVal;
-}
-
-/*
- *  ======== DBL_load ========
- *  Purpose:
- *  	Add symbols/code/data defined in file to that already present
- *  	on the target.
- */
-DSP_STATUS DBL_load(struct DBL_LibraryObj *lib, DBL_Flags flags,
-		   struct DBL_Attrs *attrs, u32 *pEntry)
-{
-	struct DBL_LibraryObj *pdblLib = (struct DBL_LibraryObj *)lib;
-	struct DBL_TargetObj *dbl;
-	u16 i;
-	u16 nSects;
-	DSP_STATUS status = DSP_EFAIL;
-
-	DBC_Require(cRefs > 0);
-	DBC_Require(MEM_IsValidHandle(pdblLib, DBL_LIBSIGNATURE));
-	DBC_Require(pEntry != NULL);
-	DBC_Require(attrs != NULL);
-
-	GT_4trace(DBL_debugMask, GT_ENTER, "DBL_load: lib: 0x%x flags: "
-		 "0x%x attrs: 0x%x pEntry: 0x%x\n", lib, flags, attrs, pEntry);
-
-	dbl = pdblLib->pTarget;
-	*pEntry = pdblLib->fileHdr.entry;
-	nSects = pdblLib->fileHdr.numSects;
-	dbl->dblAttrs = *attrs;
-
-	for (i = 0; i < nSects; i++) {
-		/* Load the section at the current file offset */
-		status = loadSect(dbl, lib);
-		if (DSP_FAILED(status))
-			break;
-
-	}
-
-	/* Done with file, we can close it */
-	if (pdblLib->file) {
-		(*pdblLib->pTarget->dblAttrs.fclose) (pdblLib->file);
-		pdblLib->file = NULL;
-	}
-	return status;
-}
-
-/*
- *  ======== DBL_loadSect ========
- *  Purpose:
- *  	Load a named section from an library (for overlay support).
- */
-DSP_STATUS DBL_loadSect(struct DBL_LibraryObj *lib, char *sectName,
-			struct DBL_Attrs *attrs)
-{
-	struct DBL_TargetObj *dbl;
-	s32 i;
-	s32 phase;
-	s32 offset = -1;
-	s32 nSects = -1;
-	s32 allocdSects = 0;
-	u32 loadAddr;
-	u32 runAddr;
-	u32 size;
-	u32 space;
-	u32 ulBytes;
-	u16 mauSize;
-	u16 wordSize;
-	u16 *phaseRef = NULL;
-	u16 *otherRef = NULL;
-	char *name = NULL;
-	struct OvlyData *pOvlyData;
-	DSP_STATUS status = DSP_ENOSECT;
-
-	DBC_Require(cRefs > 0);
-	DBC_Require(MEM_IsValidHandle(lib, DBL_LIBSIGNATURE));
-	DBC_Require(sectName != NULL);
-	DBC_Require(attrs != NULL);
-	DBC_Require(attrs->write != NULL);
-	GT_3trace(DBL_debugMask, GT_ENTER,
-		 "DBL_loadSect: lib: 0x%x sectName: %s "
-		 "attrs: 0x%x\n", lib, sectName, attrs);
-	dbl = lib->pTarget;
-	mauSize = lib->pTargetInfo->mauSize;
-	wordSize = lib->pTargetInfo->wordSize;
-	/* Check for match of sect name in overlay table */
-	for (i = 0; i < lib->nOvlySects; i++) {
-		name = lib->ppOvlyData[i]->hdr.pName;
-		if (!CSL_Strncmp(name, sectName, CSL_Strlen(name))) {
-			/* Match found */
-			status = DSP_SOK;
-			break;
-		}
-	}
-	if (DSP_SUCCEEDED(status)) {
-		DBC_Assert(i < lib->nOvlySects);
-		pOvlyData = lib->ppOvlyData[i];
-		/*
-		 *  If node overlay, phase will be encoded in name. If not node
-		 *  overlay, set phase to NONE.
-		 */
-		phase = (CSL_Strcmp(name, sectName)) ?
-			CSL_Atoi(sectName + CSL_Strlen(sectName) - 1) : NONE;
-		 /*  Get reference count of node phase to be loaded, offset into
-		 *  overlay data array, and number of sections to overlay.  */
-		switch (phase) {
-		case NONE:
-			/* Not a node overlay */
-			phaseRef = &pOvlyData->hdr.otherRef;
-			nSects = numOtherSects(pOvlyData);
-			offset = otherOffset(pOvlyData);
-			break;
-		case CREATEPHASE:
-			phaseRef = &pOvlyData->hdr.createRef;
-			otherRef = &pOvlyData->hdr.otherRef;
-			if (*otherRef) {
-				/* The overlay sections where node phase was
-				 * not specified, have already been loaded.  */
-				nSects = numCreateSects(pOvlyData);
-				offset = createOffset(pOvlyData);
-			} else {
-				/* Overlay sections where node phase was not
-				 * specified get loaded at create time, along
-				 * with create sects.  */
-				nSects = numCreateSects(pOvlyData) +
-					 numOtherSects(pOvlyData);
-				offset = otherOffset(pOvlyData);
-			}
-			break;
-		case DELETEPHASE:
-			phaseRef = &pOvlyData->hdr.deleteRef;
-			nSects = numDeleteSects(pOvlyData);
-			offset = deleteOffset(pOvlyData);
-			break;
-		case EXECUTEPHASE:
-			phaseRef = &pOvlyData->hdr.executeRef;
-			nSects = numExecuteSects(pOvlyData);
-			offset = executeOffset(pOvlyData);
-			break;
-		default:
-			/* ERROR */
-			DBC_Assert(false);
-			break;
-		}
-		/* Do overlay if reference count is 0 */
-		if (!(*phaseRef)) {
-			/* "Allocate" all sections */
-			for (i = 0; i < nSects; i++) {
-				runAddr = pOvlyData->data[offset + i].runAddr;
-				size = pOvlyData->data[offset + i].size;
-				space = pOvlyData->data[offset + i].page;
-				status = (dbl->dblAttrs.alloc)(dbl->dblAttrs.
-					 rmmHandle, space, size, 0,
-					 &runAddr, true);
-				if (DSP_FAILED(status))
-					break;
-
-				allocdSects++;
-			}
-			if (DSP_SUCCEEDED(status)) {
-				/* Load sections */
-				for (i = 0; i < nSects; i++) {
-					loadAddr = pOvlyData->data[offset + i].
-						   loadAddr;
-					runAddr = pOvlyData->data[offset + i].
-						  runAddr;
-					size = pOvlyData->data[offset + i].
-						size;
-					space = pOvlyData->data[offset + i].
-						page;
-					/* Convert to word address, call
-					 * write function */
-					loadAddr /= (wordSize / mauSize);
-					runAddr /= (wordSize / mauSize);
-					ulBytes = size * mauSize;
-					if ((*attrs->write)(attrs->wHandle,
-					   runAddr, (void *)loadAddr, ulBytes,
-					   space) != ulBytes) {
-						GT_0trace(DBL_debugMask,
-							GT_6CLASS,
-							"DBL_loadSect: write"
-							" failed\n");
-						status = DSP_EFWRITE;
-						break;
-					}
-				}
-			}
-			/* Free sections on failure */
-			if (DSP_FAILED(status))
-				freeSects(dbl, pOvlyData, offset, allocdSects);
-
-		}
-	}
-	if (DSP_SUCCEEDED(status)) {
-		/* Increment reference counts */
-		if (otherRef)
-			*otherRef = *otherRef + 1;
-
-		*phaseRef = *phaseRef + 1;
-	}
-	return status;
-}
-
-/*
- *  ======== DBL_open ========
- *  Purpose:
- *  	DBL_open() returns a library handle that can be used to
- *  	load/unload the symbols/code/data via DBL_load()/DBL_unload().
- */
-DSP_STATUS DBL_open(struct DBL_TargetObj *target, char *file, DBL_Flags flags,
-		   struct DBL_LibraryObj **pLib)
-{
-	struct DBL_LibraryObj *pdblLib = NULL;
-	u16 nSymbols;
-	u16 nDCDSects;
-	DSP_STATUS status = DSP_SOK;
-	DBC_Require(cRefs > 0);
-	DBC_Require(MEM_IsValidHandle(target, DBL_TARGSIGNATURE));
-	DBC_Require(target->dblAttrs.fopen != NULL);
-	DBC_Require(file != NULL);
-	DBC_Require(pLib != NULL);
-
-	GT_3trace(DBL_debugMask, GT_ENTER, "DBL_open: target: 0x%x file: %s "
-		 "pLib: 0x%x\n", target, file, pLib);
-	/* Allocate DBL library object */
-	MEM_AllocObject(pdblLib, struct DBL_LibraryObj, DBL_LIBSIGNATURE);
-	if (pdblLib == NULL)
-		status = DSP_EMEMORY;
-
-	/* Open the file */
-	if (DSP_SUCCEEDED(status)) {
-		pdblLib->pTarget = target;
-		pdblLib->file = (*target->dblAttrs.fopen)(file, "rb");
-		if (pdblLib->file == NULL)
-			status = DSP_EFOPEN;
-
-	}
-	/* Read file header */
-	if (DSP_SUCCEEDED(status)) {
-		status = readHeader(target, pdblLib);
-		if (DSP_FAILED(status)) {
-			GT_0trace(DBL_debugMask, GT_6CLASS,
-				 "DBL_open(): Failed to read file header\n");
-		}
-	}
-	/* Allocate symbol table */
-	if (DSP_SUCCEEDED(status)) {
-		nSymbols = pdblLib->nSymbols = pdblLib->fileHdr.numSymbols;
-		pdblLib->symbols = MEM_Calloc(nSymbols * sizeof(struct Symbol),
-					     MEM_PAGED);
-		if (pdblLib->symbols == NULL)
-			status = DSP_EMEMORY;
-
-	}
-	/* Read all the symbols */
-	if (DSP_SUCCEEDED(status)) {
-		status = readSymbols(target, pdblLib);
-		if (DSP_FAILED(status)) {
-			GT_0trace(DBL_debugMask, GT_6CLASS,
-				 "DBL_open(): Failed to read symbols\n");
-		}
-	}
-	/* Allocate DCD sect table */
-	if (DSP_SUCCEEDED(status)) {
-		nDCDSects = pdblLib->nDCDSects = pdblLib->fileHdr.numDCDSects;
-		pdblLib->dcdSects = MEM_Calloc(nDCDSects *
-					 sizeof(struct DCDSect), MEM_PAGED);
-		if (pdblLib->dcdSects == NULL)
-			status = DSP_EMEMORY;
-
-	}
-	/* Read DCD sections */
-	if (DSP_SUCCEEDED(status)) {
-		status = readDCDSects(target, pdblLib);
-		if (DSP_FAILED(status)) {
-			GT_0trace(DBL_debugMask, GT_6CLASS,
-				 "DBL_open(): Failed to read DCD sections\n");
-		}
-	}
-	/* Read overlay sections */
-	if (DSP_SUCCEEDED(status)) {
-		status = readOvlySects(target, pdblLib);
-		if (DSP_FAILED(status)) {
-			GT_0trace(DBL_debugMask, GT_6CLASS,
-				 "DBL_open(): Failed to read "
-				 "overlay sections\n");
-		}
-	}
-	if (DSP_FAILED(status)) {
-		*pLib = NULL;
-		if (pdblLib != NULL)
-			DBL_close((struct DBL_LibraryObj *) pdblLib);
-
-	} else {
-		*pLib = pdblLib;
-	}
-	DBC_Ensure((DSP_SUCCEEDED(status) &&
-		  (MEM_IsValidHandle((*pLib), DBL_LIBSIGNATURE))) ||
-		  (DSP_FAILED(status) && *pLib == NULL));
-	return status;
-}
-
-/*
- *  ======== DBL_readSect ========
- *  Purpose:
- *  	Read COFF section into a character buffer.
- */
-DSP_STATUS DBL_readSect(struct DBL_LibraryObj *lib, char *name, char *pContent,
-			u32 size)
-{
-	struct DBL_LibraryObj *pdblLib = (struct DBL_LibraryObj *)lib;
-	u16 i;
-	u32 mauSize;
-	u32 max;
-	DSP_STATUS status = DSP_ENOSECT;
-
-	DBC_Require(cRefs > 0);
-	DBC_Require(MEM_IsValidHandle(pdblLib, DBL_LIBSIGNATURE));
-	DBC_Require(name != NULL);
-	DBC_Require(pContent != NULL);
-	DBC_Require(size != 0);
-	GT_4trace(DBL_debugMask, GT_ENTER, "DBL_readSect: lib: 0x%x name: %s "
-		 "pContent: 0x%x size: 0x%x\n", lib, name, pContent, size);
-
-	mauSize = pdblLib->pTargetInfo->mauSize;
-
-	/* Attempt to find match with DCD section names. */
-	for (i = 0; i < pdblLib->nDCDSects; i++) {
-		if (CSL_Strcmp(pdblLib->dcdSects[i].sectHdr.name, name) == 0) {
-			/* Match found */
-			max = pdblLib->dcdSects[i].sectHdr.size * mauSize;
-			max = (max > size) ? size : max;
-			memcpy(pContent, pdblLib->dcdSects[i].pData, max);
-			status = DSP_SOK;
-			break;
-		}
-	}
-
-	return status;
-}
-
-/*
- *  ======== DBL_setAttrs ========
- *  Purpose:
- *  	Set the attributes of the target.
- */
-void DBL_setAttrs(struct DBL_TargetObj *target, struct DBL_Attrs *pAttrs)
-{
-	DBC_Require(cRefs > 0);
-	DBC_Require(MEM_IsValidHandle(target, DBL_TARGSIGNATURE));
-	DBC_Require(pAttrs != NULL);
-
-	GT_2trace(DBL_debugMask, GT_ENTER, "DBL_setAttrs: target: 0x%x pAttrs: "
-		 "0x%x\n", target, pAttrs);
-
-	target->dblAttrs = *pAttrs;
-}
-
-/*
- *  ======== DBL_unload ========
- *  Purpose:
- *  	Remove the symbols/code/data corresponding to the library lib.
- */
-void DBL_unload(struct DBL_LibraryObj *lib, struct DBL_Attrs *attrs)
-{
-	DBC_Require(cRefs > 0);
-	DBC_Require(MEM_IsValidHandle(lib, DBL_LIBSIGNATURE));
-
-	GT_1trace(DBL_debugMask, GT_ENTER, "DBL_unload: lib: 0x%x\n", lib);
-
-	/* Nothing to do for static loading */
-}
-
-/*
- *  ======== DBL_unloadSect ========
- *  Purpose:
- *  	Unload a named section from an library (for overlay support).
- */
-DSP_STATUS DBL_unloadSect(struct DBL_LibraryObj *lib, char *sectName,
-			  struct DBL_Attrs *attrs)
-{
-	struct DBL_TargetObj *dbl;
-	s32 i;
-	s32 phase;
-	s32 offset = -1;
-	s32 nSects = -1;
-	u16 *phaseRef = NULL;
-	u16 *otherRef = NULL;
-	char *pName = NULL;
-	struct OvlyData *pOvlyData;
-	DSP_STATUS status = DSP_ENOSECT;
-
-	DBC_Require(cRefs > 0);
-	DBC_Require(MEM_IsValidHandle(lib, DBL_LIBSIGNATURE));
-	DBC_Require(sectName != NULL);
-
-	GT_2trace(DBL_debugMask, GT_ENTER,
-		 "DBL_unloadSect: lib: 0x%x sectName: %s\n", lib, sectName);
-	dbl = lib->pTarget;
-	/* Check for match of sect name in overlay table */
-	for (i = 0; i < lib->nOvlySects; i++) {
-		pName = lib->ppOvlyData[i]->hdr.pName;
-		if (!CSL_Strncmp(pName, sectName, CSL_Strlen(pName))) {
-			/* Match found */
-			status = DSP_SOK;
-			break;
-		}
-	}
-	if (DSP_SUCCEEDED(status)) {
-		DBC_Assert(i < lib->nOvlySects);
-		pOvlyData = lib->ppOvlyData[i];
-		/* If node overlay, phase will be encoded in name. */
-		phase = (CSL_Strcmp(pName, sectName)) ?
-			CSL_Atoi(sectName + CSL_Strlen(sectName) - 1) : NONE;
-		switch (phase) {
-		case NONE:
-			nSects = numOtherSects(pOvlyData);
-			phaseRef = &pOvlyData->hdr.otherRef;
-			offset = otherOffset(pOvlyData);
-			break;
-		case CREATEPHASE:
-			nSects = numCreateSects(pOvlyData);
-			offset = createOffset(pOvlyData);
-			phaseRef = &pOvlyData->hdr.createRef;
-			break;
-		case DELETEPHASE:
-			nSects = numDeleteSects(pOvlyData);
-			offset = deleteOffset(pOvlyData);
-			phaseRef = &pOvlyData->hdr.deleteRef;
-			otherRef = &pOvlyData->hdr.otherRef;
-			break;
-		case EXECUTEPHASE:
-			nSects = numExecuteSects(pOvlyData);
-			offset = executeOffset(pOvlyData);
-			phaseRef = &pOvlyData->hdr.executeRef;
-			break;
-		default:
-			/* ERROR */
-			DBC_Assert(false);
-			break;
-		}
-		if (*phaseRef) {
-			*phaseRef = *phaseRef - 1;
-			if (*phaseRef == 0) {
-				/* Unload overlay sections for phase */
-				freeSects(dbl, pOvlyData, offset, nSects);
-			}
-			if (phase == DELETEPHASE) {
-				DBC_Assert(*otherRef);
-				*otherRef = *otherRef - 1;
-				if (*otherRef == 0) {
-					/* Unload other overlay sections */
-					nSects = numOtherSects(pOvlyData);
-					offset = otherOffset(pOvlyData);
-					freeSects(dbl, pOvlyData, offset,
-						 nSects);
-				}
-			}
-		}
-	}
-
-	return status;
-}
-
-/*
- *  ======== freeSects ========
- *  Purpose:
- *  	Free section
- */
-static void freeSects(struct DBL_TargetObj *dbl, struct OvlyData *pOvlyData,
-		     s32 offset, s32 nSects)
-{
-	u32 runAddr;
-	u32 size;
-	u32 space;
-	s32 i;
-
-	for (i = 0; i < nSects; i++) {
-		runAddr = pOvlyData->data[offset + i].runAddr;
-		size = pOvlyData->data[offset + i].size;
-		space = pOvlyData->data[offset + i].page;
-		if (!(dbl->dblAttrs.free)
-		    (dbl->dblAttrs.rmmHandle, space, runAddr, size, true)) {
-			/*
-			 *  Free function will not fail for overlay, unless
-			 *  address passed in is bad.
-			 */
-			DBC_Assert(false);
-		}
-	}
-}
-
-/*
- *  ======== loadSect ========
- *  Purpose:
- *  	Load section to target
- */
-static DSP_STATUS loadSect(struct DBL_TargetObj *dbl,
-			  struct DBL_LibraryObj *pdblLib)
-{
-	struct DBOF_SectHdr sectHdr;
-	char *pBuf;
-	struct KFILE_FileObj *file;
-	u32 space;
-	u32 addr;
-	u32 total;
-	u32 nWords = 0;
-	u32 nBytes = 0;
-	u16 mauSize;
-	u32 bufSize;
-	DSP_STATUS status = DSP_SOK;
-
-	file = pdblLib->file;
-	mauSize = pdblLib->pTargetInfo->mauSize;
-	bufSize = LOADBUFSIZE / mauSize;
-	pBuf = dbl->pBuf;
-
-	/* Read the section header */
-	if ((*dbl->dblAttrs.fread)(&sectHdr, sizeof(struct DBOF_SectHdr),
-	   1, file) != 1) {
-		GT_0trace(DBL_debugMask, GT_6CLASS,
-			 "Failed to read DCD sect header\n");
-		status = DSP_EFREAD;
-	} else {
-		if (pdblLib->byteSwapped) {
-			sectHdr.size = SWAPLONG(sectHdr.size);
-			sectHdr.addr = SWAPLONG(sectHdr.addr);
-			sectHdr.page = SWAPWORD(sectHdr.page);
-		}
-	}
-	if (DSP_SUCCEEDED(status)) {
-		addr = sectHdr.addr;
-		space = sectHdr.page;
-		for (total = sectHdr.size; total > 0; total -= nWords) {
-			nWords = min(total, bufSize);
-			nBytes = nWords * mauSize;
-			/* Read section data */
-			if ((*dbl->dblAttrs.fread)(pBuf, nBytes, 1,
-			   file) != 1) {
-				GT_0trace(DBL_debugMask, GT_6CLASS,
-					 "Failed to read DCD sect header\n");
-				status = DSP_EFREAD;
-				break;
-			}
-			/* Write section to target */
-			if (!(*dbl->dblAttrs.write)(dbl->dblAttrs.wHandle,
-			   addr, pBuf, nBytes, space)) {
-				GT_0trace(DBL_debugMask, GT_6CLASS,
-					 "Failed to write section data\n");
-				status = DSP_EFWRITE;
-				break;
-			}
-			addr += nWords;
-		}
-	}
-	return status;
-}
-
-/*
- *  ======== readDCDSects ========
- *  Purpose:
- *  	Read DCD sections.
- */
-static DSP_STATUS readDCDSects(struct DBL_TargetObj *dbl,
-			      struct DBL_LibraryObj *pdblLib)
-{
-	struct DBOF_DCDSectHdr *pSectHdr;
-	struct DCDSect *pSect;
-	struct KFILE_FileObj *file;
-	u16 nSects;
-	u16 i;
-	u16 mauSize;
-	DSP_STATUS status = DSP_SOK;
-
-	file = pdblLib->file;
-	mauSize = pdblLib->pTargetInfo->mauSize;
-	nSects = pdblLib->fileHdr.numDCDSects;
-	for (i = 0; i < nSects; i++) {
-		pSect = &pdblLib->dcdSects[i];
-		pSectHdr = &pdblLib->dcdSects[i].sectHdr;
-		/* Read sect header */
-		if ((*dbl->dblAttrs.fread)(pSectHdr,
-		   sizeof(struct DBOF_DCDSectHdr), 1, file) != 1) {
-			GT_0trace(DBL_debugMask, GT_6CLASS,
-				 "Failed to read DCD sect header\n");
-			status = DSP_EFREAD;
-			break;
-		}
-		if (pdblLib->byteSwapped)
-			pSectHdr->size = SWAPLONG(pSectHdr->size);
-
-		pSect->pData = (char *)MEM_Calloc(pSectHdr->size *
-				mauSize, MEM_PAGED);
-		if (pSect->pData == NULL) {
-			GT_2trace(DBL_debugMask, GT_6CLASS,
-				 "Memory allocation for sect %s "
-				 "data failed: Size: 0x%lx\n", pSectHdr->name,
-				 pSectHdr->size);
-			status = DSP_EMEMORY;
-			break;
-		}
-		/* Read DCD sect data */
-		if ((*dbl->dblAttrs.fread)(pSect->pData, mauSize,
-		   pSectHdr->size, file) != pSectHdr->size) {
-			GT_0trace(DBL_debugMask, GT_6CLASS,
-				  "Failed to read DCD sect data\n");
-			status = DSP_EFREAD;
-			break;
-		}
-	}
-
-	return status;
-}
-
-/*
- *  ======== readHeader ========
- *  Purpose:
- *  	Read Header.
- */
-static DSP_STATUS readHeader(struct DBL_TargetObj *dbl,
-			    struct DBL_LibraryObj *pdblLib)
-{
-	struct KFILE_FileObj *file;
-	s32 i;
-	struct DBOF_FileHdr *pHdr;
-	u32 swapMagic;
-	DSP_STATUS status = DSP_SOK;
-
-	pdblLib->byteSwapped = false;
-	file = pdblLib->file;
-	pHdr = &pdblLib->fileHdr;
-	if ((*dbl->dblAttrs.fread)(pHdr, sizeof(struct DBOF_FileHdr), 1,
-	   file) != 1) {
-		GT_0trace(DBL_debugMask, GT_6CLASS,
-			 "readHeader: Failed to read file header\n");
-		status = DSP_EFREAD;
-	}
-
-	if (DSP_SUCCEEDED(status)) {
-		/* Determine if byte swapped */
-		for (i = 0; i < NUMTARGS; i++) {
-			swapMagic = SWAPLONG(pHdr->magic);
-			if (pHdr->magic == magicTab[i] || swapMagic ==
-			   magicTab[i]) {
-				if (swapMagic == magicTab[i]) {
-					pdblLib->byteSwapped = true;
-					pHdr->magic = SWAPLONG(pHdr->magic);
-					pHdr->entry = SWAPLONG(pHdr->entry);
-					pHdr->symOffset = SWAPLONG(pHdr->
-								symOffset);
-					pHdr->dcdSectOffset = SWAPLONG(pHdr->
-								dcdSectOffset);
-					pHdr->loadSectOffset = SWAPLONG(pHdr->
-								loadSectOffset);
-					pHdr->ovlySectOffset = SWAPLONG(pHdr->
-								ovlySectOffset);
-					pHdr->numSymbols = SWAPWORD(pHdr->
-								numSymbols);
-					pHdr->numDCDSects = SWAPWORD(pHdr->
-								numDCDSects);
-					pHdr->numSects = SWAPWORD(pHdr->
-								numSects);
-					pHdr->numOvlySects = SWAPWORD(pHdr->
-								numOvlySects);
-				}
-				break;
-			}
-		}
-		if (i == NUMTARGS) {
-			GT_0trace(DBL_debugMask, GT_6CLASS,
-				 "readHeader: Failed to determine"
-				 " target type\n");
-			status = DSP_ECORRUPTFILE;
-		} else {
-			pdblLib->pTargetInfo = &targetTab[i];
-			GT_1trace(DBL_debugMask, GT_ENTER,
-				 "COF type: 0x%lx\n", pHdr->magic);
-			GT_1trace(DBL_debugMask, GT_ENTER,
-				 "Entry point:0x%lx\n", pHdr->entry);
-		}
-	}
-	return status;
-}
-
-/*
- *  ======== readOvlySects ========
- *  Purpose:
- *  	Read Overlay Sections
- */
-static DSP_STATUS readOvlySects(struct DBL_TargetObj *dbl,
-				struct DBL_LibraryObj *pdblLib)
-{
-	struct DBOF_OvlySectHdr hdr;
-	struct DBOF_OvlySectData *pData;
-	struct OvlyData *pOvlyData;
-	char *pName;
-	struct KFILE_FileObj *file;
-	u16 i, j;
-	u16 nSects;
-	u16 n;
-	DSP_STATUS status = DSP_SOK;
-
-	pdblLib->nOvlySects = nSects = pdblLib->fileHdr.numOvlySects;
-	file = pdblLib->file;
-	if (nSects > 0) {
-		pdblLib->ppOvlyData = MEM_Calloc(nSects * sizeof(OvlyData *),
-						 MEM_PAGED);
-		if (pdblLib->ppOvlyData == NULL) {
-			GT_0trace(DBL_debugMask, GT_7CLASS,
-				 "Failed to allocatate overlay "
-				 "data memory\n");
-			status = DSP_EMEMORY;
-		}
-	}
-	if (DSP_SUCCEEDED(status)) {
-		/* Read overlay data for each node */
-		for (i = 0; i < nSects; i++) {
-			/* Read overlay section header */
-			if ((*dbl->dblAttrs.fread)(&hdr,
-			   sizeof(struct DBOF_OvlySectHdr), 1, file) != 1) {
-				GT_0trace(DBL_debugMask, GT_6CLASS,
-					 "Failed to read overlay sect"
-					 " header\n");
-				status = DSP_EFREAD;
-				break;
-			}
-			if (pdblLib->byteSwapped) {
-				hdr.nameLen = SWAPWORD(hdr.nameLen);
-				hdr.numCreateSects =
-						SWAPWORD(hdr.numCreateSects);
-				hdr.numDeleteSects =
-						SWAPWORD(hdr.numDeleteSects);
-				hdr.numExecuteSects =
-						SWAPWORD(hdr.numExecuteSects);
-				hdr.numOtherSects =
-						SWAPWORD(hdr.numOtherSects);
-				hdr.resvd = SWAPWORD(hdr.resvd);
-			}
-			n = hdr.numCreateSects + hdr.numDeleteSects +
-			    hdr.numExecuteSects + hdr.numOtherSects;
-
-			/* Allocate memory for node's overlay data */
-			pOvlyData = (struct OvlyData *)MEM_Calloc
-				    (sizeof(struct OvlyHdr) +
-				    n * sizeof(struct DBOF_OvlySectData),
-				    MEM_PAGED);
-			if (pOvlyData == NULL) {
-				GT_0trace(DBL_debugMask, GT_7CLASS,
-					 "Failed to allocatate ovlyay"
-					 " data memory\n");
-				status = DSP_EMEMORY;
-				break;
-			}
-			pOvlyData->hdr.dbofHdr = hdr;
-			pdblLib->ppOvlyData[i] = pOvlyData;
-			/* Allocate memory for section name */
-			pName = (char *)MEM_Calloc(hdr.nameLen + 1, MEM_PAGED);
-			if (pName == NULL) {
-				GT_0trace(DBL_debugMask, GT_7CLASS,
-					 "Failed to allocatate ovlyay"
-					 " section name\n");
-				status = DSP_EMEMORY;
-				break;
-			}
-			pOvlyData->hdr.pName = pName;
-			/* Read the overlay section name */
-			if ((*dbl->dblAttrs.fread)(pName, sizeof(char),
-			   hdr.nameLen, file) != hdr.nameLen) {
-				GT_0trace(DBL_debugMask, GT_7CLASS,
-					 "readOvlySects: Unable to "
-					 "read overlay name.\n");
-				status = DSP_EFREAD;
-				break;
-			}
-			/* Read the overlay section data */
-			pData = pOvlyData->data;
-			if ((*dbl->dblAttrs.fread)(pData,
-			   sizeof(struct DBOF_OvlySectData), n, file) != n) {
-				GT_0trace(DBL_debugMask, GT_7CLASS,
-					 "readOvlySects: Unable to "
-					 "read overlay data.\n");
-				status = DSP_EFREAD;
-				break;
-			}
-			/* Swap overlay data, if necessary */
-			if (pdblLib->byteSwapped) {
-				for (j = 0; j < n; j++) {
-					pData[j].loadAddr =
-						 SWAPLONG(pData[j].loadAddr);
-					pData[j].runAddr =
-						 SWAPLONG(pData[j].runAddr);
-					pData[j].size =
-						 SWAPLONG(pData[j].size);
-					pData[j].page =
-						 SWAPWORD(pData[j].page);
-				}
-			}
-		}
-	}
-	return status;
-}
-
-/*
- *  ======== readSymbols ========
- *  Purpose:
- *  	Read Symbols
- */
-static DSP_STATUS readSymbols(struct DBL_TargetObj *dbl,
-			     struct DBL_LibraryObj *pdblLib)
-{
-	struct DBOF_SymbolHdr symHdr;
-	struct KFILE_FileObj *file;
-	u16 i;
-	u16 nSymbols;
-	u16 len;
-	char *pName = NULL;
-	DSP_STATUS status = DSP_SOK;
-
-	file = pdblLib->file;
-
-	nSymbols = pdblLib->fileHdr.numSymbols;
-
-	for (i = 0; i < nSymbols; i++) {
-		/* Read symbol value */
-		if ((*dbl->dblAttrs.fread)(&symHdr,
-		   sizeof(struct DBOF_SymbolHdr), 1, file) != 1) {
-			GT_0trace(DBL_debugMask, GT_6CLASS,
-				 "Failed to read symbol value\n");
-			status = DSP_EFREAD;
-			break;
-		}
-		if (pdblLib->byteSwapped) {
-			symHdr.nameLen = SWAPWORD(symHdr.nameLen);
-			symHdr.value = SWAPLONG(symHdr.value);
-		}
-		/* Allocate buffer for symbol name */
-		len = symHdr.nameLen;
-		pName = (char *)MEM_Calloc(len + 1, MEM_PAGED);
-		if (pName == NULL) {
-			GT_0trace(DBL_debugMask, GT_6CLASS,
-				 "Memory allocation failed\n");
-			status = DSP_EMEMORY;
-			break;
-		}
-		pdblLib->symbols[i].pSymName = pName;
-		pdblLib->symbols[i].sym.value = symHdr.value;
-		/* Read symbol name */
-		if ((*dbl->dblAttrs.fread) (pName, sizeof(char), len, file) !=
-		   len) {
-			GT_0trace(DBL_debugMask, GT_6CLASS,
-				 "Failed to read symbol value\n");
-			status = DSP_EFREAD;
-			break;
-		} else {
-			pName[len] = '\0';
-			GT_2trace(DBL_debugMask, GT_ENTER,
-				 "Symbol: %s  Value: 0x%lx\n",
-				 pName, symHdr.value);
-		}
-	}
-	return status;
-}
-