aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/tidspbridge/dynload/doff.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--drivers/staging/tidspbridge/dynload/doff.h354
1 files changed, 0 insertions, 354 deletions
diff --git a/drivers/staging/tidspbridge/dynload/doff.h b/drivers/staging/tidspbridge/dynload/doff.h
deleted file mode 100644
index a7c3145746ee..000000000000
--- a/drivers/staging/tidspbridge/dynload/doff.h
+++ /dev/null
@@ -1,354 +0,0 @@
-/*
- * doff.h
- *
- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
- *
- * Structures & definitions used for dynamically loaded modules file format.
- * This format is a reformatted version of COFF. It optimizes the layout for
- * the dynamic loader.
- *
- * .dof files, when viewed as a sequence of 32-bit integers, look the same
- * on big-endian and little-endian machines.
- *
- * 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 _DOFF_H
-#define _DOFF_H
-
-
-#define BYTE_RESHUFFLE_VALUE 0x00010203
-
-/* DOFF file header containing fields categorizing the remainder of the file */
-struct doff_filehdr_t {
-
- /* string table size, including filename, in bytes */
- u32 df_strtab_size;
-
- /* entry point if one exists */
- u32 df_entrypt;
-
- /* identifies byte ordering of file;
- * always set to BYTE_RESHUFFLE_VALUE */
- u32 df_byte_reshuffle;
-
- /* Size of the string table up to and including the last section name */
- /* Size includes the name of the COFF file also */
- u32 df_scn_name_size;
-
-#ifndef _BIG_ENDIAN
- /* number of symbols */
- u16 df_no_syms;
-
- /* length in bytes of the longest string, including terminating NULL */
- /* excludes the name of the file */
- u16 df_max_str_len;
-
- /* total number of sections including no-load ones */
- u16 df_no_scns;
-
- /* number of sections containing target code allocated or downloaded */
- u16 df_target_scns;
-
- /* unique id for dll file format & version */
- u16 df_doff_version;
-
- /* identifies ISA */
- u16 df_target_id;
-
- /* useful file flags */
- u16 df_flags;
-
- /* section reference for entry point, N_UNDEF for none, */
- /* N_ABS for absolute address */
- s16 df_entry_secn;
-#else
- /* length of the longest string, including terminating NULL */
- u16 df_max_str_len;
-
- /* number of symbols */
- u16 df_no_syms;
-
- /* number of sections containing target code allocated or downloaded */
- u16 df_target_scns;
-
- /* total number of sections including no-load ones */
- u16 df_no_scns;
-
- /* identifies ISA */
- u16 df_target_id;
-
- /* unique id for dll file format & version */
- u16 df_doff_version;
-
- /* section reference for entry point, N_UNDEF for none, */
- /* N_ABS for absolute address */
- s16 df_entry_secn;
-
- /* useful file flags */
- u16 df_flags;
-#endif
- /* checksum for file header record */
- u32 df_checksum;
-
-};
-
-/* flags in the df_flags field */
-#define DF_LITTLE 0x100
-#define DF_BIG 0x200
-#define DF_BYTE_ORDER (DF_LITTLE | DF_BIG)
-
-/* Supported processors */
-#define TMS470_ID 0x97
-#define LEAD_ID 0x98
-#define TMS32060_ID 0x99
-#define LEAD3_ID 0x9c
-
-/* Primary processor for loading */
-#if TMS32060
-#define TARGET_ID TMS32060_ID
-#endif
-
-/* Verification record containing values used to test integrity of the bits */
-struct doff_verify_rec_t {
-
- /* time and date stamp */
- u32 dv_timdat;
-
- /* checksum for all section records */
- u32 dv_scn_rec_checksum;
-
- /* checksum for string table */
- u32 dv_str_tab_checksum;
-
- /* checksum for symbol table */
- u32 dv_sym_tab_checksum;
-
- /* checksum for verification record */
- u32 dv_verify_rec_checksum;
-
-};
-
-/* String table is an array of null-terminated strings. The first entry is
- * the filename, which is added by DLLcreate. No new structure definitions
- * are required.
- */
-
-/* Section Records including information on the corresponding image packets */
-/*
- * !!WARNING!!
- *
- * This structure is expected to match in form ldr_section_info in
- * dynamic_loader.h
- */
-
-struct doff_scnhdr_t {
-
- s32 ds_offset; /* offset into string table of name */
- s32 ds_paddr; /* RUN address, in target AU */
- s32 ds_vaddr; /* LOAD address, in target AU */
- s32 ds_size; /* section size, in target AU */
-#ifndef _BIG_ENDIAN
- u16 ds_page; /* memory page id */
- u16 ds_flags; /* section flags */
-#else
- u16 ds_flags; /* section flags */
- u16 ds_page; /* memory page id */
-#endif
- u32 ds_first_pkt_offset;
- /* Absolute byte offset into the file */
- /* where the first image record resides */
-
- s32 ds_nipacks; /* number of image packets */
-
-};
-
-/* Symbol table entry */
-struct doff_syment_t {
-
- s32 dn_offset; /* offset into string table of name */
- s32 dn_value; /* value of symbol */
-#ifndef _BIG_ENDIAN
- s16 dn_scnum; /* section number */
- s16 dn_sclass; /* storage class */
-#else
- s16 dn_sclass; /* storage class */
- s16 dn_scnum; /* section number, 1-based */
-#endif
-
-};
-
-/* special values for dn_scnum */
-#define DN_UNDEF 0 /* undefined symbol */
-#define DN_ABS (-1) /* value of symbol is absolute */
-/* special values for dn_sclass */
-#define DN_EXT 2
-#define DN_STATLAB 20
-#define DN_EXTLAB 21
-
-/* Default value of image bits in packet */
-/* Configurable by user on the command line */
-#define IMAGE_PACKET_SIZE 1024
-
-/* An image packet contains a chunk of data from a section along with */
-/* information necessary for its processing. */
-struct image_packet_t {
-
- s32 num_relocs; /* number of relocations for */
- /* this packet */
-
- s32 packet_size; /* number of bytes in array */
- /* "bits" occupied by */
- /* valid data. Could be */
- /* < IMAGE_PACKET_SIZE to */
- /* prevent splitting a */
- /* relocation across packets. */
- /* Last packet of a section */
- /* will most likely contain */
- /* < IMAGE_PACKET_SIZE bytes */
- /* of valid data */
-
- s32 img_chksum; /* Checksum for image packet */
- /* and the corresponding */
- /* relocation records */
-
- u8 *img_data; /* Actual data in section */
-
-};
-
-/* The relocation structure definition matches the COFF version. Offsets */
-/* however are relative to the image packet base not the section base. */
-struct reloc_record_t {
-
- s32 vaddr;
-
- /* expressed in target AUs */
-
- union {
- struct {
-#ifndef _BIG_ENDIAN
- u8 _offset; /* bit offset of rel fld */
- u8 _fieldsz; /* size of rel fld */
- u8 _wordsz; /* # bytes containing rel fld */
- u8 _dum1;
- u16 _dum2;
- u16 _type;
-#else
- unsigned _dum1:8;
- unsigned _wordsz:8; /* # bytes containing rel fld */
- unsigned _fieldsz:8; /* size of rel fld */
- unsigned _offset:8; /* bit offset of rel fld */
- u16 _type;
- u16 _dum2;
-#endif
- } _r_field;
-
- struct {
- u32 _spc; /* image packet relative PC */
-#ifndef _BIG_ENDIAN
- u16 _dum;
- u16 _type; /* relocation type */
-#else
- u16 _type; /* relocation type */
- u16 _dum;
-#endif
- } _r_spc;
-
- struct {
- u32 _uval; /* constant value */
-#ifndef _BIG_ENDIAN
- u16 _dum;
- u16 _type; /* relocation type */
-#else
- u16 _type; /* relocation type */
- u16 _dum;
-#endif
- } _r_uval;
-
- struct {
- s32 _symndx; /* 32-bit sym tbl index */
-#ifndef _BIG_ENDIAN
- u16 _disp; /* extra addr encode data */
- u16 _type; /* relocation type */
-#else
- u16 _type; /* relocation type */
- u16 _disp; /* extra addr encode data */
-#endif
- } _r_sym;
- } _u_reloc;
-
-};
-
-/* abbreviations for convenience */
-#ifndef TYPE
-#define TYPE _u_reloc._r_sym._type
-#define UVAL _u_reloc._r_uval._uval
-#define SYMNDX _u_reloc._r_sym._symndx
-#define OFFSET _u_reloc._r_field._offset
-#define FIELDSZ _u_reloc._r_field._fieldsz
-#define WORDSZ _u_reloc._r_field._wordsz
-#define R_DISP _u_reloc._r_sym._disp
-#endif
-
-/**************************************************************************** */
-/* */
-/* Important DOFF macros used for file processing */
-/* */
-/**************************************************************************** */
-
-/* DOFF Versions */
-#define DOFF0 0
-
-/* Return the address/size >= to addr that is at a 32-bit boundary */
-/* This assumes that a byte is 8 bits */
-#define DOFF_ALIGN(addr) (((addr) + 3) & ~3UL)
-
-/**************************************************************************** */
-/* */
-/* The DOFF section header flags field is laid out as follows: */
-/* */
-/* Bits 0-3 : Section Type */
-/* Bit 4 : Set when section requires target memory to be allocated by DL */
-/* Bit 5 : Set when section requires downloading */
-/* Bits 8-11: Alignment, same as COFF */
-/* */
-/**************************************************************************** */
-
-/* Enum for DOFF section types (bits 0-3 of flag): See dynamic_loader.h */
-#define DS_SECTION_TYPE_MASK 0xF
-/* DS_ALLOCATE indicates whether a section needs space on the target */
-#define DS_ALLOCATE_MASK 0x10
-/* DS_DOWNLOAD indicates that the loader needs to copy bits */
-#define DS_DOWNLOAD_MASK 0x20
-/* Section alignment requirement in AUs */
-#define DS_ALIGNMENT_SHIFT 8
-
-static inline bool dload_check_type(struct doff_scnhdr_t *sptr, u32 flag)
-{
- return (sptr->ds_flags & DS_SECTION_TYPE_MASK) == flag;
-}
-static inline bool ds_needs_allocation(struct doff_scnhdr_t *sptr)
-{
- return sptr->ds_flags & DS_ALLOCATE_MASK;
-}
-
-static inline bool ds_needs_download(struct doff_scnhdr_t *sptr)
-{
- return sptr->ds_flags & DS_DOWNLOAD_MASK;
-}
-
-static inline int ds_alignment(u16 ds_flags)
-{
- return 1 << ((ds_flags >> DS_ALIGNMENT_SHIFT) & DS_SECTION_TYPE_MASK);
-}
-
-
-#endif /* _DOFF_H */