Utils: Remove the v1 firmware generator code
[gstreamer-omap:sysbios-rpmsg.git] / src / utils.mmap / elfload / include / dlw_dsbt.h
1 /*
2  *  Syslink-IPC for TI OMAP Processors
3  *
4  *  Copyright (c) 2008-2010, Texas Instruments Incorporated
5  *  All rights reserved.
6  *
7  *  Redistribution and use in source and binary forms, with or without
8  *  modification, are permitted provided that the following conditions
9  *  are met:
10  *
11  *  *  Redistributions of source code must retain the above copyright
12  *     notice, this list of conditions and the following disclaimer.
13  *
14  *  *  Redistributions in binary form must reproduce the above copyright
15  *     notice, this list of conditions and the following disclaimer in the
16  *     documentation and/or other materials provided with the distribution.
17  *
18  *  *  Neither the name of Texas Instruments Incorporated nor the names of
19  *     its contributors may be used to endorse or promote products derived
20  *     from this software without specific prior written permission.
21  *
22  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
24  *  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
25  *  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
26  *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
27  *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
28  *  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
29  *  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
30  *  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
31  *  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
32  *  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33  */
34 /*****************************************************************************/
35 /* dlw_dsbt.h                                                                */
36 /*                                                                           */
37 /* Define internal data structures used by RIDL client side for              */
38 /* Dynamic Static Base Table (DSBT) support.                                 */
39 /*****************************************************************************/
40 #ifndef DLW_DSBT_H
41 #define DLW_DSBT_H
42
43 #include "Queue.h"
44 #include "dload_api.h"
45
46 /*---------------------------------------------------------------------------*/
47 /* DSBT_Index_Request - Representation of a request for a DSBT index on      */
48 /*    behalf of an executable or library. This data structure will reserve   */
49 /*    space for the specified module in the client's model of the master     */
50 /*    DSBT.                                                                  */
51 /*---------------------------------------------------------------------------*/
52 typedef struct {
53    char           *name;
54    int32_t         file_handle;
55    uint32_t        dsbt_size;
56    TARGET_ADDRESS  dsbt_base;
57    TARGET_ADDRESS  static_base;
58    int32_t         requested_index;
59    int32_t         assigned_index;
60 } DSBT_Index_Request;
61
62 /*---------------------------------------------------------------------------*/
63 /* DSBT_Entry - Representation of one slot in the client's model of the      */
64 /*    master DSBT. The model is built up when DSBT indices are assigned.     */
65 /*    The content of the master DSBT is propagated to each module who uses   */
66 /*    the DSBT model.                                                        */
67 /*---------------------------------------------------------------------------*/
68 typedef struct {
69    DSBT_Index_Request *index_request;
70 } DSBT_Entry;
71
72 /*---------------------------------------------------------------------------*/
73 /* DSBT_index_request_queue - This is a holding area for DSBT index requests */
74 /*    while allocation and relocation of symbols is in progress for the top- */
75 /*    level module and all of its dependents. Items will be pulled off the   */
76 /*    queue when we are ready to make actual DSBT index assignmments.        */
77 /*---------------------------------------------------------------------------*/
78 TYPE_QUEUE_DEFINITION(DSBT_Index_Request*, dsbt_index_request_ptr)
79 extern dsbt_index_request_ptr_Queue DSBT_index_request_queue;
80
81 /*---------------------------------------------------------------------------*/
82 /* DSBT_master - client's model of DSBT master. Vector of DSBT_Entry ptrs.   */
83 /*---------------------------------------------------------------------------*/
84 extern Array_List DSBT_master;
85
86 /*---------------------------------------------------------------------------*/
87 /* DSBT_release_entry()                                                      */
88 /*                                                                           */
89 /*    Release an entry in the client's model of the master DSBT. This        */
90 /*    happens when a module is unloaded from the target. The slot will       */
91 /*    remain a part of the DSBT, but it will become available to other       */
92 /*    objects that are subsequently loaded.                                  */
93 /*---------------------------------------------------------------------------*/
94 extern void DSBT_release_entry(int32_t file_handle);
95
96 #endif