Remove the last external user of arm7_9_get_arch_pointers(), and
that annoying downcast utility.  Add an is_arm7_9() predicate.

Stop returning specious success codes on various failure paths
in the ARM7/ARM9 commands which used that downcast utility.
---
 src/flash/ocl.c            |    7 +--
 src/target/arm7_9_common.c |   87 +++++++++++--------------------------------
 src/target/arm7_9_common.h |    6 ++
 3 files changed, 32 insertions(+), 68 deletions(-)

--- a/src/flash/ocl.c
+++ b/src/flash/ocl.c
@@ -46,8 +46,6 @@ static int ocl_protect_check(struct flas
 /* flash_bank ocl 0 0 0 0 <target#> */
 FLASH_BANK_COMMAND_HANDLER(ocl_flash_bank_command)
 {
-       int retval;
-       struct arm *armv4_5;
        struct arm7_9_common *arm7_9;
        struct ocl_priv *ocl;
 
@@ -57,8 +55,9 @@ FLASH_BANK_COMMAND_HANDLER(ocl_flash_ban
                return ERROR_FLASH_BANK_INVALID;
        }
 
-       if ((retval = arm7_9_get_arch_pointers(bank->target, &armv4_5, 
&arm7_9)) != ERROR_OK)
-               return retval;
+       arm7_9 = target_to_arm7_9(bank->target);
+       if (!is_arm7_9(arm7_9))
+               return ERROR_TARGET_INVALID;
 
        ocl = bank->driver_priv = malloc(sizeof(struct ocl_priv));
        ocl->jtag_info = &arm7_9->jtag_info;
--- a/src/target/arm7_9_common.c
+++ b/src/target/arm7_9_common.c
@@ -167,39 +167,6 @@ int arm7_9_setup(struct target *target)
 }
 
 /**
- * Retrieves the architecture information pointers for ARMv4/5 and ARM7/9
- * targets.  A return of ERROR_OK signifies that the target is a valid target
- * and that the pointers have been set properly.
- *
- * @param target Pointer to the target device to get the pointers from
- * @param armv4_5_p Pointer to be filled in with the common struct for ARMV4/5
- *                  targets
- * @param arm7_9_p Pointer to be filled in with the common struct for ARM7/9
- *                 targets
- * @return ERROR_OK if successful
- */
-int arm7_9_get_arch_pointers(struct target *target, struct arm **armv4_5_p, 
struct arm7_9_common **arm7_9_p)
-{
-       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
-       struct armv4_5_common_s *armv4_5 = &arm7_9->armv4_5_common;
-
-       /* FIXME stop using this routine; just target_to_arm7_9() and
-        * verify the resulting pointer using a replacement routine
-        * that emits a usage message.
-        */
-       if (armv4_5->common_magic != ARMV4_5_COMMON_MAGIC)
-               return ERROR_TARGET_INVALID;
-
-       if (arm7_9->common_magic != ARM7_9_COMMON_MAGIC)
-               return ERROR_TARGET_INVALID;
-
-       *armv4_5_p = armv4_5;
-       *arm7_9_p = arm7_9;
-
-       return ERROR_OK;
-}
-
-/**
  * Set either a hardware or software breakpoint on an ARM7/9 target.  The
  * breakpoint is set up even if it is already set.  Some actions, e.g. reset,
  * might have erased the values in Embedded ICE.
@@ -2877,25 +2844,24 @@ COMMAND_HANDLER(handle_arm7_9_write_xpsr
        int spsr;
        int retval;
        struct target *target = get_current_target(cmd_ctx);
-       struct arm *armv4_5;
-       struct arm7_9_common *arm7_9;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
 
-       if (arm7_9_get_arch_pointers(target, &armv4_5, &arm7_9) != ERROR_OK)
+       if (!is_arm7_9(arm7_9))
        {
                command_print(cmd_ctx, "current target isn't an ARM7/ARM9 
target");
-               return ERROR_OK;
+               return ERROR_TARGET_INVALID;
        }
 
        if (target->state != TARGET_HALTED)
        {
                command_print(cmd_ctx, "can't write registers while running");
-               return ERROR_OK;
+               return ERROR_FAIL;
        }
 
        if (argc < 2)
        {
                command_print(cmd_ctx, "usage: write_xpsr <value> <not cpsr | 
spsr>");
-               return ERROR_OK;
+               return ERROR_FAIL;
        }
 
        COMMAND_PARSE_NUMBER(u32, args[0], value);
@@ -2922,25 +2888,24 @@ COMMAND_HANDLER(handle_arm7_9_write_xpsr
        int spsr;
        int retval;
        struct target *target = get_current_target(cmd_ctx);
-       struct arm *armv4_5;
-       struct arm7_9_common *arm7_9;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
 
-       if (arm7_9_get_arch_pointers(target, &armv4_5, &arm7_9) != ERROR_OK)
+       if (!is_arm7_9(arm7_9))
        {
                command_print(cmd_ctx, "current target isn't an ARM7/ARM9 
target");
-               return ERROR_OK;
+               return ERROR_TARGET_INVALID;
        }
 
        if (target->state != TARGET_HALTED)
        {
                command_print(cmd_ctx, "can't write registers while running");
-               return ERROR_OK;
+               return ERROR_FAIL;
        }
 
        if (argc < 3)
        {
                command_print(cmd_ctx, "usage: write_xpsr_im8 <im8> <rotate> 
<not cpsr | spsr>");
-               return ERROR_OK;
+               return ERROR_FAIL;
        }
 
        COMMAND_PARSE_NUMBER(u32, args[0], value);
@@ -2963,25 +2928,24 @@ COMMAND_HANDLER(handle_arm7_9_write_core
        uint32_t mode;
        int num;
        struct target *target = get_current_target(cmd_ctx);
-       struct arm *armv4_5;
-       struct arm7_9_common *arm7_9;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
 
-       if (arm7_9_get_arch_pointers(target, &armv4_5, &arm7_9) != ERROR_OK)
+       if (!is_arm7_9(arm7_9))
        {
                command_print(cmd_ctx, "current target isn't an ARM7/ARM9 
target");
-               return ERROR_OK;
+               return ERROR_TARGET_INVALID;
        }
 
        if (target->state != TARGET_HALTED)
        {
                command_print(cmd_ctx, "can't write registers while running");
-               return ERROR_OK;
+               return ERROR_FAIL;
        }
 
        if (argc < 3)
        {
                command_print(cmd_ctx, "usage: write_core_reg <num> <mode> 
<value>");
-               return ERROR_OK;
+               return ERROR_FAIL;
        }
 
        COMMAND_PARSE_NUMBER(int, args[0], num);
@@ -2994,13 +2958,12 @@ COMMAND_HANDLER(handle_arm7_9_write_core
 COMMAND_HANDLER(handle_arm7_9_dbgrq_command)
 {
        struct target *target = get_current_target(cmd_ctx);
-       struct arm *armv4_5;
-       struct arm7_9_common *arm7_9;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
 
-       if (arm7_9_get_arch_pointers(target, &armv4_5, &arm7_9) != ERROR_OK)
+       if (!is_arm7_9(arm7_9))
        {
                command_print(cmd_ctx, "current target isn't an ARM7/ARM9 
target");
-               return ERROR_OK;
+               return ERROR_TARGET_INVALID;
        }
 
        if (argc > 0)
@@ -3027,13 +2990,12 @@ COMMAND_HANDLER(handle_arm7_9_dbgrq_comm
 COMMAND_HANDLER(handle_arm7_9_fast_memory_access_command)
 {
        struct target *target = get_current_target(cmd_ctx);
-       struct arm *armv4_5;
-       struct arm7_9_common *arm7_9;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
 
-       if (arm7_9_get_arch_pointers(target, &armv4_5, &arm7_9) != ERROR_OK)
+       if (!is_arm7_9(arm7_9))
        {
                command_print(cmd_ctx, "current target isn't an ARM7/ARM9 
target");
-               return ERROR_OK;
+               return ERROR_TARGET_INVALID;
        }
 
        if (argc > 0)
@@ -3060,13 +3022,12 @@ COMMAND_HANDLER(handle_arm7_9_fast_memor
 COMMAND_HANDLER(handle_arm7_9_dcc_downloads_command)
 {
        struct target *target = get_current_target(cmd_ctx);
-       struct arm *armv4_5;
-       struct arm7_9_common *arm7_9;
+       struct arm7_9_common *arm7_9 = target_to_arm7_9(target);
 
-       if (arm7_9_get_arch_pointers(target, &armv4_5, &arm7_9) != ERROR_OK)
+       if (!is_arm7_9(arm7_9))
        {
                command_print(cmd_ctx, "current target isn't an ARM7/ARM9 
target");
-               return ERROR_OK;
+               return ERROR_TARGET_INVALID;
        }
 
        if (argc > 0)
--- a/src/target/arm7_9_common.h
+++ b/src/target/arm7_9_common.h
@@ -115,6 +115,11 @@ target_to_arm7_9(struct target *target)
                        armv4_5_common);
 }
 
+static inline bool is_arm7_9(struct arm7_9_common *arm7_9)
+{
+       return arm7_9->common_magic == ARM7_9_COMMON_MAGIC;
+}
+
 int arm7_9_register_commands(struct command_context_s *cmd_ctx);
 
 int arm7_9_poll(struct target *target);
@@ -154,6 +159,5 @@ void arm7_9_disable_eice_step(struct tar
 int arm7_9_execute_sys_speed(struct target *target);
 
 int arm7_9_init_arch_info(struct target *target, struct arm7_9_common *arm7_9);
-int arm7_9_get_arch_pointers(struct target *target, struct arm **armv4_5_p, 
struct arm7_9_common **arm7_9_p);
 
 #endif /* ARM7_9_COMMON_H */
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to