Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 205981
b: refs/heads/master
c: a563510
h: refs/heads/master
i:
  205979: f8a9eee
v: v3
  • Loading branch information
Armando Uribe authored and Greg Kroah-Hartman committed Jul 26, 2010
1 parent 99ac90d commit e7ae37c
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 19 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c18c9c910dbcc4cc55a440c38fad300f1ecf8dbb
refs/heads/master: a563510fb2f18f0d7f2fbf815e7d7052f280a61d
16 changes: 8 additions & 8 deletions trunk/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 trunk/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 trunk/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 e7ae37c

Please sign in to comment.