fixed warning
[fw/openocd] / src / target / armv4_5.c
index cb5f875813206a62f307b3d46be300ee7bf4be43..3d96961b09270be02e9f6cb5d0762f68c0b3110c 100644 (file)
@@ -70,11 +70,14 @@ char* armv4_5_core_reg_list[] =
        "cpsr", "spsr_fiq", "spsr_irq", "spsr_svc", "spsr_abt", "spsr_und"
 };
 
-char* armv4_5_mode_strings[] =
+char * armv4_5_mode_strings_list[] =
 {
-       "User", "FIQ", "IRQ", "Supervisor", "Abort", "Undefined", "System"
+       "Illegal mode value", "User", "FIQ", "IRQ", "Supervisor", "Abort", "Undefined", "System"
 };
 
+/* Hack! Yuk! allow -1 index, which simplifies codepaths elsewhere in the code */
+char** armv4_5_mode_strings = armv4_5_mode_strings_list+1;
+
 char* armv4_5_state_strings[] =
 {
        "ARM", "Thumb", "Jazelle"
@@ -178,6 +181,7 @@ int armv4_5_get_core_reg(reg_t *reg)
        
        if (target->state != TARGET_HALTED)
        {
+               LOG_ERROR("Target not halted");
                return ERROR_TARGET_NOT_HALTED;
        }
        
@@ -326,6 +330,9 @@ int handle_armv4_5_reg_command(struct command_context_s *cmd_ctx, char *cmd, cha
                return ERROR_OK;
        }
        
+       if (armv4_5_mode_to_number(armv4_5->core_mode)==-1)
+               return ERROR_FAIL;
+
        for (num = 0; num <= 15; num++)
        {
                output_len = 0;
@@ -438,6 +445,9 @@ int armv4_5_get_gdb_reg_list(target_t *target, reg_t **reg_list[], int *reg_list
        armv4_5_common_t *armv4_5 = target->arch_info;
        int i;
        
+       if (armv4_5_mode_to_number(armv4_5->core_mode)==-1)
+               return ERROR_FAIL;
+       
        *reg_list_size = 26;
        *reg_list = malloc(sizeof(reg_t*) * (*reg_list_size));
        
@@ -482,6 +492,9 @@ int armv4_5_run_algorithm(struct target_s *target, int num_mem_params, mem_param
                return ERROR_TARGET_NOT_HALTED;
        }
        
+       if (armv4_5_mode_to_number(armv4_5->core_mode)==-1)
+               return ERROR_FAIL;
+
        for (i = 0; i <= 16; i++)
        {
                if (!ARMV4_5_CORE_REG_MODE(armv4_5->core_cache, armv4_5_algorithm_info->core_mode, i).valid)
@@ -543,7 +556,7 @@ int armv4_5_run_algorithm(struct target_s *target, int num_mem_params, mem_param
        
        while (target->state != TARGET_HALTED)
        {
-               usleep(10000);
+               alive_sleep(10);
                target_poll(target);
                if ((timeout_ms -= 10) <= 0)
                {
@@ -552,7 +565,7 @@ int armv4_5_run_algorithm(struct target_s *target, int num_mem_params, mem_param
                        timeout_ms = 1000;
                        while (target->state != TARGET_HALTED)
                        {
-                               usleep(10000);
+                               alive_sleep(10);
                                target_poll(target);
                                if ((timeout_ms -= 10) <= 0)
                                {