summaryrefslogtreecommitdiff
path: root/drivers/staging/nmf-cm/cm/engine/elf/inc/mmdsp-loadmap.h
blob: bb65c0b12443b440024095a9772127441df80b8e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*
 * Copyright (C) ST-Ericsson SA 2010
 * Author: Jean-Philippe FASSINO <jean-philippe.fassino@stericsson.com> for ST-Ericsson.
 * License terms: GNU General Public License (GPL) version 2.
 */
/*!
 * \internal
 * \brief Elf writer internal methods.
 *
 * \defgroup LOADMAP MMDSP ELF writer (a linker in fact).
 */
#ifndef __INC_CM_LOADMAP_H
#define __INC_CM_LOADMAP_H

#include <cm/inc/cm_type.h>

/*
 * Align with loadmap :
 * https://codex.cro.st.com/wiki/index.php?pagename=Specification%2FLoadmap%2Fv1.2&group_id=310
 */
#define LOADMAP_MAGIC_NUMBER 0xFBBF

#define LOADMAP_VERSION_MSB 1
#define LOADMAP_VERSION_LSB 2

struct LoadMapItem
{
  const char*  pSolibFilename;  // Filename of shared library object
  void*        pAddrProg;       // Load address of program section
  void*        pAddrEmbProg;    // Load address of embedded program section
  void*        pThis;           // Data base address of component instance
  void*        pARMThis;        // ARM component debug ID
  const char*  pComponentName;  // Pretty name of the component instance, NULL if none.
  struct LoadMapItem* pNextItem;// Pointer on the next list item, NULL if last one.
  void*        pXROM;           // Start address of XROM
  void*        pYROM;           // Start address of YROM
};

struct LoadMapHdr
{
  t_uint16      nMagicNumber;    // Equal to 0xFBBF.
  t_uint16      nVersion;        // The version of the load map format.
  t_uint32      nRevision;       // A counter incremented at each load map list modification.
  struct LoadMapItem* pFirstItem;// Pointer on the first item, NULL if no shared library loaded.
};

#endif /* __INC_CM_LOADMAP_H */