]> git.sur5r.net Git - openocd/commitdiff
mips: delete kludgy code that modifies data sent to write_memory()
authorØyvind Harboe <oyvind.harboe@zylin.com>
Thu, 31 Mar 2011 16:42:10 +0000 (18:42 +0200)
committerØyvind Harboe <oyvind.harboe@zylin.com>
Thu, 31 Mar 2011 21:46:56 +0000 (23:46 +0200)
Could this cause confusion as data sent to write would be flipped
and then if the caller subsequently used the data, e.g. a
compare mismatch might happen?

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
src/target/mips_m4k.c

index 0508c35f80d7ab7dc99c9c5a113cfcb07eb42f15..589ba7a0b141edd1282c62649e308a31b0c98eee 100644 (file)
@@ -1004,19 +1004,34 @@ static int mips_m4k_bulk_write_memory(struct target *target, uint32_t address,
                ejtag_info->fast_access_save = -1;
        }
 
+       uint8_t * t = NULL;
+
        /* TAP data register is loaded LSB first (little endian) */
        if (target->endianness == TARGET_BIG_ENDIAN)
        {
+               t = malloc(count * sizeof(uint32_t));
+               if (t == NULL)
+               {
+                       LOG_ERROR("Out of memory");
+                       return ERROR_FAIL;
+               }
+
                uint32_t i, t32;
                for(i = 0; i < (count * 4); i += 4)
                {
                        t32 = be_to_h_u32((uint8_t *) &buffer[i]);
-                       h_u32_to_le(&buffer[i], t32);
+                       h_u32_to_le(&t[i], t32);
                }
+
+               buffer = t;
        }
 
        retval = mips32_pracc_fastdata_xfer(ejtag_info, mips32->fast_data_area, write_t, address,
                        count, (uint32_t*) (void *)buffer);
+
+       if (t != NULL)
+               free(t);
+
        if (retval != ERROR_OK)
        {
                /* FASTDATA access failed, try normal memory write */