Skip to content

Commit

Permalink
staging: tidspbridge: Change macros to static inline functions used i…
Browse files Browse the repository at this point in the history
…n cload

This patch changes the macros to static inline function used
in cload as well adds two definition of const to avoid using magic
numbers

Signed-off-by: Armando Uribe <x0095078@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Armando Uribe authored and Greg Kroah-Hartman committed Jul 26, 2010
1 parent c18c9c9 commit a563510
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 18 deletions.
16 changes: 8 additions & 8 deletions drivers/staging/tidspbridge/dynload/cload.c
Original file line number Diff line number Diff line change
Expand Up @@ -528,7 +528,7 @@ static void allocate_sections(struct dload_state *dlthis)
}
#endif
/* allocate target storage for sections that require it */
if (DS_NEEDS_ALLOCATION(shp)) {
if (ds_needs_allocation(shp)) {
*asecs = *DOFFSEC_IS_LDRSEC(shp);
asecs->context = 0; /* zero the context field */
#if BITS_PER_AU > BITS_PER_BYTE
Expand All @@ -540,7 +540,7 @@ static void allocate_sections(struct dload_state *dlthis)
if (dlthis->myalloc != NULL) {
if (!dlthis->myalloc->
dload_allocate(dlthis->myalloc, asecs,
DS_ALIGNMENT(asecs->type))) {
ds_alignment(asecs->type))) {
dload_error(dlthis, tgtalloc,
asecs->name, asecs->size);
return;
Expand Down Expand Up @@ -1155,7 +1155,7 @@ static void dload_data(struct dload_state *dlthis)
*/
for (curr_sect = 0; curr_sect < dlthis->dfile_hdr.df_no_scns;
curr_sect += 1) {
if (DS_NEEDS_DOWNLOAD(sptr)) {
if (ds_needs_download(sptr)) {
s32 nip;
ldr_addr image_offset = 0;
/* set relocation info for this section */
Expand Down Expand Up @@ -1201,7 +1201,7 @@ static void dload_data(struct dload_state *dlthis)
dest = ibuf.bufr;
#ifdef OPT_ZERO_COPY_LOADER
zero_copy = false;
if (DLOAD_SECT_TYPE(sptr) != DLOAD_CINIT) {
if (!dload_check_type(sptr, DLOAD_CINIT) {
dlthis->myio->writemem(dlthis->myio,
&dest,
lptr->load_addr +
Expand Down Expand Up @@ -1267,8 +1267,8 @@ static void dload_data(struct dload_state *dlthis)

/* stuff the result into target
* memory */
if (DLOAD_SECT_TYPE(sptr) ==
DLOAD_CINIT) {
if (dload_check_type(sptr,
DLOAD_CINIT)) {
cload_cinit(dlthis,
&ibuf.ipacket);
cinit_processed = true;
Expand Down Expand Up @@ -1306,7 +1306,7 @@ static void dload_data(struct dload_state *dlthis)
BYTE_TO_TADDR(ibuf.ipacket.packet_size);
} /* process packets */
/* if this is a BSS section, we may want to fill it */
if (DLOAD_SECT_TYPE(sptr) != DLOAD_BSS)
if (!dload_check_type(sptr, DLOAD_BSS))
goto loop_cont;

if (!(dlthis->myoptions & DLOAD_INITBSS))
Expand All @@ -1330,7 +1330,7 @@ static void dload_data(struct dload_state *dlthis)
}
/* if DS_DOWNLOAD_MASK */
/* If not loading, but BSS, zero initialize */
if (DLOAD_SECT_TYPE(sptr) != DLOAD_BSS)
if (!dload_check_type(sptr, DLOAD_BSS))
goto loop_cont;

if (!(dlthis->myoptions & DLOAD_INITBSS))
Expand Down
31 changes: 22 additions & 9 deletions drivers/staging/tidspbridge/dynload/doff.h
Original file line number Diff line number Diff line change
Expand Up @@ -326,19 +326,32 @@ struct reloc_record_t {
/**************************************************************************** */

/* Enum for DOFF section types (bits 0-3 of flag): See dynamic_loader.h */

/* Macros to help processing of sections */
#define DLOAD_SECT_TYPE(s_hdr) ((s_hdr)->ds_flags & 0xF)

#define DS_SECTION_TYPE_MASK 0xF
/* DS_ALLOCATE indicates whether a section needs space on the target */
#define DS_ALLOCATE_MASK 0x10
#define DS_NEEDS_ALLOCATION(s_hdr) ((s_hdr)->ds_flags & DS_ALLOCATE_MASK)

/* DS_DOWNLOAD indicates that the loader needs to copy bits */
#define DS_DOWNLOAD_MASK 0x20
#define DS_NEEDS_DOWNLOAD(s_hdr) ((s_hdr)->ds_flags & DS_DOWNLOAD_MASK)

/* Section alignment requirement in AUs */
#define DS_ALIGNMENT(ds_flags) (1 << (((ds_flags) >> 8) & 0xF))
#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 */
2 changes: 1 addition & 1 deletion drivers/staging/tidspbridge/dynload/tramp.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ static int priv_tramp_sect_tgt_alloc(struct dload_state *dlthis)
sect_info->load_addr = 0;
ret_val = dlthis->myalloc->dload_allocate(dlthis->myalloc,
sect_info,
DS_ALIGNMENT
ds_alignment
(sect_info->type));

if (ret_val == 0)
Expand Down

0 comments on commit a563510

Please sign in to comment.