Revert "target: remove unused working area 'user' field"
This reverts commit 63a23e6fc8
Change-Id: I62778fb3b1dabc6470d582bea9ca64d593999233
Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk>
Change-Id: Iaf5a2cf5bdc4a62ba68ad9403e1c1229112970de
Reviewed-on: http://openocd.zylin.com/899
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
This commit is contained in:
parent
43902905bb
commit
cbfc443c7b
|
@ -1405,6 +1405,7 @@ static void target_split_working_area(struct working_area *area, uint32_t size)
|
|||
new_wa->size = area->size - size;
|
||||
new_wa->address = area->address + size;
|
||||
new_wa->backup = NULL;
|
||||
new_wa->user = NULL;
|
||||
new_wa->free = true;
|
||||
|
||||
area->next = new_wa;
|
||||
|
@ -1493,6 +1494,7 @@ int target_alloc_working_area_try(struct target *target, uint32_t size, struct w
|
|||
new_wa->size = target->working_area_size & ~3UL; /* 4-byte align */
|
||||
new_wa->address = target->working_area;
|
||||
new_wa->backup = NULL;
|
||||
new_wa->user = NULL;
|
||||
new_wa->free = true;
|
||||
}
|
||||
|
||||
|
@ -1536,6 +1538,9 @@ int target_alloc_working_area_try(struct target *target, uint32_t size, struct w
|
|||
c->free = false;
|
||||
*area = c;
|
||||
|
||||
/* user pointer */
|
||||
c->user = area;
|
||||
|
||||
print_wa_layout(target);
|
||||
|
||||
return ERROR_OK;
|
||||
|
@ -1586,6 +1591,13 @@ static int target_free_working_area_restore(struct target *target, struct workin
|
|||
LOG_DEBUG("freed %"PRIu32" bytes of working area at address 0x%08"PRIx32,
|
||||
area->size, area->address);
|
||||
|
||||
/* mark user pointer invalid */
|
||||
/* TODO: Is this really safe? It points to some previous caller's memory.
|
||||
* How could we know that the area pointer is still in that place and not
|
||||
* some other vital data? What's the purpose of this, anyway? */
|
||||
*area->user = NULL;
|
||||
area->user = NULL;
|
||||
|
||||
target_merge_working_areas(target);
|
||||
|
||||
print_wa_layout(target);
|
||||
|
@ -1613,6 +1625,8 @@ static void target_free_all_working_areas_restore(struct target *target, int res
|
|||
if (restore)
|
||||
target_restore_working_area(target, c);
|
||||
c->free = true;
|
||||
*c->user = NULL; /* Same as above */
|
||||
c->user = NULL;
|
||||
}
|
||||
c = c->next;
|
||||
}
|
||||
|
|
|
@ -95,6 +95,7 @@ struct working_area {
|
|||
uint32_t size;
|
||||
bool free;
|
||||
uint8_t *backup;
|
||||
struct working_area **user;
|
||||
struct working_area *next;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue