]> git.sur5r.net Git - openocd/blobdiff - src/rtos/uCOS-III.c
rtos: support gdb_get_register_packet
[openocd] / src / rtos / uCOS-III.c
index 9021167dbca38f3ca035db0168234ecec646139e..e06bf41f81c7d89dfb4af5b9215a60bdec36c662 100644 (file)
@@ -241,7 +241,7 @@ static int uCOS_III_update_thread_offsets(struct rtos *rtos)
        return ERROR_OK;
 }
 
-static int uCOS_III_detect_rtos(struct target *target)
+static bool uCOS_III_detect_rtos(struct target *target)
 {
        return target->rtos->symbols != NULL &&
                        target->rtos->symbols[uCOS_III_VAL_OSRunning].address != 0;
@@ -300,6 +300,11 @@ static int uCOS_III_update_threads(struct rtos *rtos)
                return retval;
        }
 
+       if (rtos_running != 1 && rtos_running != 0) {
+               LOG_ERROR("uCOS-III: invalid RTOS running value");
+               return ERROR_FAIL;
+       }
+
        if (!rtos_running) {
                rtos->thread_details = calloc(1, sizeof(struct thread_detail));
                if (rtos->thread_details == NULL) {
@@ -449,7 +454,8 @@ static int uCOS_III_update_threads(struct rtos *rtos)
        return ERROR_OK;
 }
 
-static int uCOS_III_get_thread_reg_list(struct rtos *rtos, threadid_t threadid, char **hex_reg_list)
+static int uCOS_III_get_thread_reg_list(struct rtos *rtos, threadid_t threadid,
+               struct rtos_reg **reg_list, int *num_regs)
 {
        struct uCOS_III_params *params = rtos->rtos_specific_params;
        int retval;
@@ -479,7 +485,8 @@ static int uCOS_III_get_thread_reg_list(struct rtos *rtos, threadid_t threadid,
        return rtos_generic_stack_read(rtos->target,
                        params->stacking_info,
                        stack_address,
-                       hex_reg_list);
+                       reg_list,
+                       num_regs);
 }
 
 static int uCOS_III_get_symbol_list_to_lookup(symbol_table_elem_t *symbol_list[])