split jim_jtag_command into multiple handlers
[openocd.git] / src / target / mips32_pracc.c
index 3177e0f291959482e42d2a33e06f61c71cff5062..604d34edbf2524d9183b69740fa6d85f00f1438e 100644 (file)
@@ -348,8 +348,8 @@ int mips32_pracc_read_mem32(struct mips_ejtag *ejtag_info, uint32_t addr, int co
                param_in[0] = addr;
                param_in[1] = blocksize;
 
-               if ((retval = mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code,
-                       sizeof(param_in)/sizeof(param_in[0]), param_in, blocksize, &buf[bytesread], 1)) != ERROR_OK)
+               if ((retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code,
+                       ARRAY_SIZE(param_in), param_in, blocksize, &buf[bytesread], 1)) != ERROR_OK)
                {
                        return retval;
                }
@@ -387,8 +387,8 @@ int mips32_pracc_read_u32(struct mips_ejtag *ejtag_info, uint32_t addr, uint32_t
 
        param_in[0] = addr;
 
-       if ((retval = mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code,
-               sizeof(param_in)/sizeof(param_in[0]), param_in, sizeof(uint32_t), buf, 1)) != ERROR_OK)
+       if ((retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code,
+               ARRAY_SIZE(param_in), param_in, sizeof(uint32_t), buf, 1)) != ERROR_OK)
        {
                return retval;
        }
@@ -440,7 +440,7 @@ int mips32_pracc_read_mem16(struct mips_ejtag *ejtag_info, uint32_t addr, int co
        };
 
 //     /* TODO remove array */
-       uint32_t param_out[count];
+       uint32_t *param_out = malloc(count * sizeof(uint32_t));
        int i;
 
 //     int retval;
@@ -459,8 +459,8 @@ int mips32_pracc_read_mem16(struct mips_ejtag *ejtag_info, uint32_t addr, int co
                param_in[0] = addr;
                param_in[1] = blocksize;
 
-               mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \
-                       sizeof(param_in)/sizeof(param_in[0]), param_in, count, param_out, 1);
+               mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, \
+                       ARRAY_SIZE(param_in), param_in, count, param_out, 1);
 
 //             count -= blocksize;
 //             addr += blocksize;
@@ -472,6 +472,8 @@ int mips32_pracc_read_mem16(struct mips_ejtag *ejtag_info, uint32_t addr, int co
                buf[i] = param_out[i];
        }
 
+       free(param_out);
+
        return ERROR_OK;
 }
 
@@ -519,7 +521,7 @@ int mips32_pracc_read_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, int cou
        };
 
 //     /* TODO remove array */
-       uint32_t param_out[count];
+       uint32_t *param_out = malloc(count * sizeof(uint32_t));
        int i;
 
 //     int retval;
@@ -538,8 +540,8 @@ int mips32_pracc_read_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, int cou
                param_in[0] = addr;
                param_in[1] = blocksize;
 
-               mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \
-                       sizeof(param_in)/sizeof(param_in[0]), param_in, count, param_out, 1);
+               mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, \
+                       ARRAY_SIZE(param_in), param_in, count, param_out, 1);
 
 //             count -= blocksize;
 //             addr += blocksize;
@@ -551,6 +553,8 @@ int mips32_pracc_read_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, int cou
                buf[i] = param_out[i];
        }
 
+       free(param_out);
+
        return ERROR_OK;
 }
 
@@ -609,14 +613,16 @@ int mips32_pracc_write_mem32(struct mips_ejtag *ejtag_info, uint32_t addr, int c
        };
 
        /* TODO remove array */
-       uint32_t param_in[count + 2];
+       uint32_t *param_in = malloc((count + 2) * sizeof(uint32_t));
        param_in[0] = addr;
        param_in[1] = addr + count * sizeof(uint32_t);  //last address
 
        memcpy(&param_in[2], buf, count * sizeof(uint32_t));
 
-       mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \
-               sizeof(param_in)/sizeof(param_in[0]),param_in, 0, NULL, 1);
+       mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, \
+               count + 2, param_in, 0, NULL, 1);
+
+       free(param_in);
 
        return ERROR_OK;
 }
@@ -648,8 +654,8 @@ int mips32_pracc_write_u32(struct mips_ejtag *ejtag_info, uint32_t addr, uint32_
        param_in[0] = addr;
        param_in[1] = *buf;
 
-       mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \
-               sizeof(param_in)/sizeof(param_in[0]),param_in, 0, NULL, 1);
+       mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, \
+               ARRAY_SIZE(param_in),param_in, 0, NULL, 1);
 
        return ERROR_OK;
 }
@@ -698,7 +704,7 @@ int mips32_pracc_write_mem16(struct mips_ejtag *ejtag_info, uint32_t addr, int c
        };
 
        /* TODO remove array */
-       uint32_t param_in[count + 2];
+       uint32_t *param_in = malloc((count + 2) * sizeof(uint32_t));
        int i;
        param_in[0] = addr;
        param_in[1] = count;
@@ -708,8 +714,10 @@ int mips32_pracc_write_mem16(struct mips_ejtag *ejtag_info, uint32_t addr, int c
                param_in[i + 2] = buf[i];
        }
 
-       mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \
-               sizeof(param_in)/sizeof(param_in[0]), param_in, 0, NULL, 1);
+       mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, \
+               count + 2, param_in, 0, NULL, 1);
+
+       free(param_in);
 
        return ERROR_OK;
 }
@@ -758,7 +766,7 @@ int mips32_pracc_write_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, int co
        };
 
        /* TODO remove array */
-       uint32_t param_in[count + 2];
+       uint32_t *param_in = malloc((count + 2) * sizeof(uint32_t));
        int retval;
        int i;
        param_in[0] = addr;
@@ -769,8 +777,10 @@ int mips32_pracc_write_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, int co
                param_in[i + 2] = buf[i];
        }
 
-       retval = mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \
-               sizeof(param_in)/sizeof(param_in[0]), param_in, 0, NULL, 1);
+       retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, \
+               count +2, param_in, 0, NULL, 1);
+
+       free(param_in);
 
        return retval;
 }
@@ -841,7 +851,7 @@ int mips32_pracc_write_regs(struct mips_ejtag *ejtag_info, uint32_t *regs)
 
        int retval;
 
-       retval = mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \
+       retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, \
                38, regs, 0, NULL, 1);
 
        return retval;
@@ -918,7 +928,7 @@ int mips32_pracc_read_regs(struct mips_ejtag *ejtag_info, uint32_t *regs)
 
        int retval;
 
-       retval = mips32_pracc_exec(ejtag_info, sizeof(code)/sizeof(code[0]), code, \
+       retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, \
                0, NULL, 38, regs, 1);
 
        return retval;

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)