cortex_a9: check target halted on APB read/write memory
authorLuca Ellero <lroluk@gmail.com>
Sat, 12 Feb 2011 11:54:38 +0000 (11:54 +0000)
committerØyvind Harboe <oyvind.harboe@zylin.com>
Mon, 14 Feb 2011 14:29:25 +0000 (15:29 +0100)
Signed-off-by: Luca Ellero <lroluk@gmail.com>
src/target/cortex_a9.c

index c13d41c81dfb38e48bbdcad92af7d079bccf8745..3ad7a7d3dcabd43dfe4c0c7c9f0f5ceecf0eebdb 100644 (file)
@@ -1522,6 +1522,12 @@ static int cortex_a9_read_phys_memory(struct target *target,
                        int nbytes = count * size;
                        uint32_t data;
 
+                       if (target->state != TARGET_HALTED)
+                       {
+                               LOG_WARNING("target not halted");
+                               return ERROR_TARGET_NOT_HALTED;
+                       }
+
                        /* save registers r0 and r1, we are going to corrupt them  */
                        retval = cortex_a9_dap_read_coreregister_u32(target, &saved_r0, 0);
                        if (retval != ERROR_OK)
@@ -1630,6 +1636,12 @@ static int cortex_a9_write_phys_memory(struct target *target,
                        int nbytes = count * size;
                        uint32_t data;
 
+                       if (target->state != TARGET_HALTED)
+                       {
+                               LOG_WARNING("target not halted");
+                               return ERROR_TARGET_NOT_HALTED;
+                       }
+
                        /* save registers r0 and r1, we are going to corrupt them  */
                        retval = cortex_a9_dap_read_coreregister_u32(target, &saved_r0, 0);
                        if (retval != ERROR_OK)