gdb_server, rtos: Fine-grained RTOS register access
[fw/openocd] / src / target / register.c
index 5352d2f21d7786753c35b2cf1448a79a85cf4989..4ddda6e6b3c420978d7c58e5692e8d2e1b1fa9ff 100644 (file)
  * 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)
+{
+       unsigned i;
+       struct reg_cache *cache = first;
+
+       while (cache) {
+               for (i = 0; i < cache->num_regs; i++) {
+                       if (cache->reg_list[i].exist == false)
+                               continue;
+                       if (cache->reg_list[i].number == reg_num)
+                               return &(cache->reg_list[i]);
+               }
+
+               if (search_all)
+                       cache = cache->next;
+               else
+                       break;
+       }
+
+       return NULL;
+}
+
 struct reg *register_get_by_name(struct reg_cache *first,
                const char *name, bool search_all)
 {