X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Ftarget%2Fregister.c;h=638747560cb08f9c66762477c84ef0fa2220db6d;hb=4bb1d8b45ecd768b972efb1e3e9cf6e55336f8fd;hp=850641448b637a276ced58748f5e504871ac4168;hpb=b5964191f0d2fc3ace607af001df3d57cbfbaf2b;p=fw%2Fopenocd diff --git a/src/target/register.c b/src/target/register.c index 850641448..638747560 100644 --- a/src/target/register.c +++ b/src/target/register.c @@ -36,24 +36,45 @@ * may be separate registers associated with debug or trace modules. */ +struct reg *register_get_by_number(struct reg_cache *first, + uint32_t reg_num, bool search_all) +{ + struct reg_cache *cache = first; + + while (cache) { + for (unsigned int i = 0; i < cache->num_regs; i++) { + if (!cache->reg_list[i].exist) + continue; + if (cache->reg_list[i].number == reg_num) + return &(cache->reg_list[i]); + } + + if (!search_all) + break; + + cache = cache->next; + } + + return NULL; +} + struct reg *register_get_by_name(struct reg_cache *first, const char *name, bool search_all) { - unsigned i; struct reg_cache *cache = first; while (cache) { - for (i = 0; i < cache->num_regs; i++) { - if (cache->reg_list[i].exist == false) + for (unsigned int i = 0; i < cache->num_regs; i++) { + if (!cache->reg_list[i].exist) continue; if (strcmp(cache->reg_list[i].name, name) == 0) return &(cache->reg_list[i]); } - if (search_all) - cache = cache->next; - else + if (!search_all) break; + + cache = cache->next; } return NULL; @@ -85,11 +106,11 @@ void register_cache_invalidate(struct reg_cache *cache) { struct reg *reg = cache->reg_list; - for (unsigned n = cache->num_regs; n != 0; n--, reg++) { - if (reg->exist == false) + for (unsigned int n = cache->num_regs; n != 0; n--, reg++) { + if (!reg->exist) continue; - reg->valid = 0; - reg->dirty = 0; + reg->valid = false; + reg->dirty = false; } } @@ -100,8 +121,8 @@ static int register_get_dummy_core_reg(struct reg *reg) static int register_set_dummy_core_reg(struct reg *reg, uint8_t *buf) { - reg->dirty = 1; - reg->valid = 1; + reg->dirty = true; + reg->valid = true; return ERROR_OK; }