1/*  *********************************************************************
2    *  Broadcom Common Firmware Environment (CFE)
3    *
4    *  Loader API 				File: cfe_loader.h
5    *
6    *  This is the main API for the program loader.
7    *
8    *  Author:  Mitch Lichtenberg
9    *
10    *********************************************************************
11    *
12    *  Copyright 2000,2001,2002,2003
13    *  Broadcom Corporation. All rights reserved.
14    *
15    *  This software is furnished under license and may be used and
16    *  copied only in accordance with the following terms and
17    *  conditions.  Subject to these conditions, you may download,
18    *  copy, install, use, modify and distribute modified or unmodified
19    *  copies of this software in source and/or binary form.  No title
20    *  or ownership is transferred hereby.
21    *
22    *  1) Any source code used, modified or distributed must reproduce
23    *     and retain this copyright notice and list of conditions
24    *     as they appear in the source file.
25    *
26    *  2) No right is granted to use any trade name, trademark, or
27    *     logo of Broadcom Corporation.  The "Broadcom Corporation"
28    *     name may not be used to endorse or promote products derived
29    *     from this software without the prior written permission of
30    *     Broadcom Corporation.
31    *
32    *  3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR
33    *     IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED
34    *     WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
35    *     PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT
36    *     SHALL BROADCOM BE LIABLE FOR ANY DAMAGES WHATSOEVER, AND IN
37    *     PARTICULAR, BROADCOM SHALL NOT BE LIABLE FOR DIRECT, INDIRECT,
38    *     INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
39    *     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
40    *     GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
41    *     BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
42    *     OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
43    *     TORT (INCLUDING NEGLIGENCE OR OTHERWISE), EVEN IF ADVISED OF
44    *     THE POSSIBILITY OF SUCH DAMAGE.
45    ********************************************************************* */
46
47#ifndef _CFE_LOADER_H_
48#define _CFE_LOADER_H_
49
50#define LOADFLG_NOISY		0x0001	/* print out noisy info */
51#define LOADFLG_EXECUTE		0x0002	/* execute loaded program */
52#define LOADFLG_SPECADDR	0x0004	/* Use a specific size & addr */
53#define LOADFLG_NOBB		0x0008	/* don't look for a boot block */
54#define LOADFLG_NOCLOSE		0x0010	/* don't close network */
55#define LOADFLG_COMPRESSED	0x0020	/* file is compressed */
56#define LOADFLG_BATCH		0x0040	/* batch file */
57
58typedef struct cfe_loadargs_s {
59    char *la_filename;			/* name of file on I/O device */
60    char *la_filesys;			/* file system name */
61    char *la_device;			/* device name (ide0, etc.) */
62    char *la_options;			/* args to pass to loaded prog */
63    char *la_loader;			/* binary file loader to use */
64    unsigned int la_flags;		/* various flags */
65    hsaddr_t la_address;		/* used by SPECADDR only */
66    unsigned long la_maxsize;		/* used by SPECADDR only */
67    hsaddr_t la_entrypt;		/* returned entry point */
68} cfe_loadargs_t;
69
70
71typedef struct cfe_loader_s {
72    char *name;				/* name of loader */
73    int (*loader)(cfe_loadargs_t *);	/* access function */
74    int flags;				/* flags */
75} cfe_loader_t;
76
77#define LDRLOAD(ldr,arg) (*((ldr)->loader))(arg)
78
79int cfe_load_program(char *name,cfe_loadargs_t *la);
80const cfe_loader_t *cfe_findloader(char *name);
81void splitpath(char *path,char **devname,char **filename);
82void cfe_go(cfe_loadargs_t *la);
83int cfe_boot(char *ldrname,cfe_loadargs_t *la);
84int cfe_savedata(char *fsname,char *devname,char *filename,hsaddr_t start,hsaddr_t end);
85
86#endif /* _CFE_LOADER_H_ */
87