diff options
author | Spencer Oliver <spen@spen-soft.co.uk> | 2012-02-05 12:03:04 +0000 |
---|---|---|
committer | Spencer Oliver <spen@spen-soft.co.uk> | 2012-02-06 11:00:36 +0000 |
commit | 374127301ec1d72033b9d573b72c7abdfd61990d (patch) | |
tree | b56f5f4bba1718f9ac482d1fabdff18f5d170196 /src/target/mips32_pracc.c | |
parent | de0130a0aad83c1ef692ee4d68ab996a8668424d (diff) | |
download | riscv-openocd-374127301ec1d72033b9d573b72c7abdfd61990d.zip riscv-openocd-374127301ec1d72033b9d573b72c7abdfd61990d.tar.gz riscv-openocd-374127301ec1d72033b9d573b72c7abdfd61990d.tar.bz2 |
build: cleanup src/target directory
Change-Id: Ia055b6d2b5f6449a38afd0539a8c66e7d7e0c059
Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk>
Reviewed-on: http://openocd.zylin.com/430
Tested-by: jenkins
Diffstat (limited to 'src/target/mips32_pracc.c')
-rw-r--r-- | src/target/mips32_pracc.c | 1035 |
1 files changed, 495 insertions, 540 deletions
diff --git a/src/target/mips32_pracc.c b/src/target/mips32_pracc.c index 7160f8e..267a4ff 100644 --- a/src/target/mips32_pracc.c +++ b/src/target/mips32_pracc.c @@ -26,52 +26,51 @@ ***************************************************************************/ /* -This version has optimized assembly routines for 32 bit operations: -- read word -- write word -- write array of words - -One thing to be aware of is that the MIPS32 cpu will execute the -instruction after a branch instruction (one delay slot). - -For example: - - LW $2, ($5 +10) - B foo - LW $1, ($2 +100) - -The LW $1, ($2 +100) instruction is also executed. If this is -not wanted a NOP can be inserted: - - LW $2, ($5 +10) - B foo - NOP - LW $1, ($2 +100) - -or the code can be changed to: - - B foo - LW $2, ($5 +10) - LW $1, ($2 +100) - -The original code contained NOPs. I have removed these and moved -the branches. - -I also moved the PRACC_STACK to 0xFF204000. This allows -the use of 16 bits offsets to get pointers to the input -and output area relative to the stack. Note that the stack -isn't really a stack (the stack pointer is not 'moving') -but a FIFO simulated in software. - -These changes result in a 35% speed increase when programming an -external flash. - -More improvement could be gained if the registers do no need -to be preserved but in that case the routines should be aware -OpenOCD is used as a flash programmer or as a debug tool. - -Nico Coesel -*/ + * This version has optimized assembly routines for 32 bit operations: + * - read word + * - write word + * - write array of words + * + * One thing to be aware of is that the MIPS32 cpu will execute the + * instruction after a branch instruction (one delay slot). + * + * For example: + * LW $2, ($5 +10) + * B foo + * LW $1, ($2 +100) + * + * The LW $1, ($2 +100) instruction is also executed. If this is + * not wanted a NOP can be inserted: + * + * LW $2, ($5 +10) + * B foo + * NOP + * LW $1, ($2 +100) + * + * or the code can be changed to: + * + * B foo + * LW $2, ($5 +10) + * LW $1, ($2 +100) + * + * The original code contained NOPs. I have removed these and moved + * the branches. + * + * I also moved the PRACC_STACK to 0xFF204000. This allows + * the use of 16 bits offsets to get pointers to the input + * and output area relative to the stack. Note that the stack + * isn't really a stack (the stack pointer is not 'moving') + * but a FIFO simulated in software. + * + * These changes result in a 35% speed increase when programming an + * external flash. + * + * More improvement could be gained if the registers do no need + * to be preserved but in that case the routines should be aware + * OpenOCD is used as a flash programmer or as a debug tool. + * + * Nico Coesel + */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -82,8 +81,7 @@ Nico Coesel #include "mips32.h" #include "mips32_pracc.h" -struct mips32_pracc_context -{ +struct mips32_pracc_context { uint32_t *local_iparam; int num_iparam; uint32_t *local_oparam; @@ -116,7 +114,7 @@ static int mips32_pracc_write_u32(struct mips_ejtag *ejtag_info, static int mips32_pracc_sync_cache(struct mips_ejtag *ejtag_info, uint32_t start_addr, uint32_t end_addr); static int mips32_pracc_clean_invalidate_cache(struct mips_ejtag *ejtag_info, - uint32_t start_addr, uint32_t end_addr); + uint32_t start_addr, uint32_t end_addr); static int wait_for_pracc_rw(struct mips_ejtag *ejtag_info, uint32_t *ctrl) { @@ -129,8 +127,7 @@ static int wait_for_pracc_rw(struct mips_ejtag *ejtag_info, uint32_t *ctrl) mips_ejtag_set_instr(ejtag_info, EJTAG_INST_CONTROL); ejtag_ctrl = ejtag_info->ejtag_ctrl; - while (1) - { + while (1) { retval = mips_ejtag_drscan_32(ejtag_info, &ejtag_ctrl); if (retval != ERROR_OK) return retval; @@ -138,8 +135,8 @@ static int wait_for_pracc_rw(struct mips_ejtag *ejtag_info, uint32_t *ctrl) if (ejtag_ctrl & EJTAG_CTRL_PRACC) break; - if ( (timeout = timeval_ms()-then) > 1000 ) - { + timeout = timeval_ms() - then; + if (timeout > 1000) { LOG_DEBUG("DEBUGMODULE: No memory access in progress!"); return ERROR_JTAG_DEVICE_ERROR; } @@ -156,30 +153,21 @@ static int mips32_pracc_exec_read(struct mips32_pracc_context *ctx, uint32_t add uint32_t ejtag_ctrl, data; if ((address >= MIPS32_PRACC_PARAM_IN) - && (address <= MIPS32_PRACC_PARAM_IN + ctx->num_iparam * 4)) - { + && (address <= MIPS32_PRACC_PARAM_IN + ctx->num_iparam * 4)) { offset = (address - MIPS32_PRACC_PARAM_IN) / 4; data = ctx->local_iparam[offset]; - } - else if ((address >= MIPS32_PRACC_PARAM_OUT) - && (address <= MIPS32_PRACC_PARAM_OUT + ctx->num_oparam * 4)) - { + } else if ((address >= MIPS32_PRACC_PARAM_OUT) + && (address <= MIPS32_PRACC_PARAM_OUT + ctx->num_oparam * 4)) { offset = (address - MIPS32_PRACC_PARAM_OUT) / 4; data = ctx->local_oparam[offset]; - } - else if ((address >= MIPS32_PRACC_TEXT) - && (address <= MIPS32_PRACC_TEXT + ctx->code_len * 4)) - { + } else if ((address >= MIPS32_PRACC_TEXT) + && (address <= MIPS32_PRACC_TEXT + ctx->code_len * 4)) { offset = (address - MIPS32_PRACC_TEXT) / 4; data = ctx->code[offset]; - } - else if (address == MIPS32_PRACC_STACK) - { + } else if (address == MIPS32_PRACC_STACK) { /* save to our debug stack */ data = ctx->stack[--ctx->stack_offset]; - } - else - { + } else { /* TODO: send JMP 0xFF200000 instruction. Hopefully processor jump back * to start of debug vector */ @@ -201,7 +189,7 @@ static int mips32_pracc_exec_read(struct mips32_pracc_context *ctx, uint32_t add static int mips32_pracc_exec_write(struct mips32_pracc_context *ctx, uint32_t address) { - uint32_t ejtag_ctrl,data; + uint32_t ejtag_ctrl, data; int offset; struct mips_ejtag *ejtag_info = ctx->ejtag_info; int retval; @@ -221,24 +209,17 @@ static int mips32_pracc_exec_write(struct mips32_pracc_context *ctx, uint32_t ad return retval; if ((address >= MIPS32_PRACC_PARAM_IN) - && (address <= MIPS32_PRACC_PARAM_IN + ctx->num_iparam * 4)) - { + && (address <= MIPS32_PRACC_PARAM_IN + ctx->num_iparam * 4)) { offset = (address - MIPS32_PRACC_PARAM_IN) / 4; ctx->local_iparam[offset] = data; - } - else if ((address >= MIPS32_PRACC_PARAM_OUT) - && (address <= MIPS32_PRACC_PARAM_OUT + ctx->num_oparam * 4)) - { + } else if ((address >= MIPS32_PRACC_PARAM_OUT) + && (address <= MIPS32_PRACC_PARAM_OUT + ctx->num_oparam * 4)) { offset = (address - MIPS32_PRACC_PARAM_OUT) / 4; ctx->local_oparam[offset] = data; - } - else if (address == MIPS32_PRACC_STACK) - { + } else if (address == MIPS32_PRACC_STACK) { /* save data onto our stack */ ctx->stack[ctx->stack_offset++] = data; - } - else - { + } else { LOG_ERROR("Error writing unexpected address 0x%8.8" PRIx32 "", address); return ERROR_JTAG_DEVICE_ERROR; } @@ -264,9 +245,9 @@ int mips32_pracc_exec(struct mips_ejtag *ejtag_info, int code_len, const uint32_ ctx.ejtag_info = ejtag_info; ctx.stack_offset = 0; - while (1) - { - if ((retval = wait_for_pracc_rw(ejtag_info, &ejtag_ctrl)) != ERROR_OK) + while (1) { + retval = wait_for_pracc_rw(ejtag_info, &ejtag_ctrl); + if (retval != ERROR_OK) return retval; address = data = 0; @@ -276,22 +257,19 @@ int mips32_pracc_exec(struct mips_ejtag *ejtag_info, int code_len, const uint32_ return retval; /* Check for read or write */ - if (ejtag_ctrl & EJTAG_CTRL_PRNW) - { - if ((retval = mips32_pracc_exec_write(&ctx, address)) != ERROR_OK) + if (ejtag_ctrl & EJTAG_CTRL_PRNW) { + retval = mips32_pracc_exec_write(&ctx, address); + if (retval != ERROR_OK) return retval; - } - else - { + } else { /* Check to see if its reading at the debug vector. The first pass through * the module is always read at the vector, so the first one we allow. When * the second read from the vector occurs we are done and just exit. */ if ((address == MIPS32_PRACC_TEXT) && (pass++)) - { break; - } - if ((retval = mips32_pracc_exec_read(&ctx, address)) != ERROR_OK) + retval = mips32_pracc_exec_read(&ctx, address); + if (retval != ERROR_OK) return retval; } @@ -301,26 +279,23 @@ int mips32_pracc_exec(struct mips_ejtag *ejtag_info, int code_len, const uint32_ /* stack sanity check */ if (ctx.stack_offset != 0) - { LOG_DEBUG("Pracc Stack not zero"); - } return ERROR_OK; } int mips32_pracc_read_mem(struct mips_ejtag *ejtag_info, uint32_t addr, int size, int count, void *buf) { - switch (size) - { + switch (size) { case 1: - return mips32_pracc_read_mem8(ejtag_info, addr, count, (uint8_t*)buf); + return mips32_pracc_read_mem8(ejtag_info, addr, count, (uint8_t *)buf); case 2: - return mips32_pracc_read_mem16(ejtag_info, addr, count, (uint16_t*)buf); + return mips32_pracc_read_mem16(ejtag_info, addr, count, (uint16_t *)buf); case 4: if (count == 1) - return mips32_pracc_read_u32(ejtag_info, addr, (uint32_t*)buf); + return mips32_pracc_read_u32(ejtag_info, addr, (uint32_t *)buf); else - return mips32_pracc_read_mem32(ejtag_info, addr, count, (uint32_t*)buf); + return mips32_pracc_read_mem32(ejtag_info, addr, count, (uint32_t *)buf); } return ERROR_OK; @@ -330,40 +305,40 @@ static int mips32_pracc_read_mem32(struct mips_ejtag *ejtag_info, uint32_t addr, { static const uint32_t code[] = { /* start: */ - MIPS32_MTC0(15,31,0), /* move $15 to COP0 DeSave */ - MIPS32_LUI(15,UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ - MIPS32_ORI(15,15,LOWER16(MIPS32_PRACC_STACK)), - MIPS32_SW(8,0,15), /* sw $8,($15) */ - MIPS32_SW(9,0,15), /* sw $9,($15) */ - MIPS32_SW(10,0,15), /* sw $10,($15) */ - MIPS32_SW(11,0,15), /* sw $11,($15) */ - - MIPS32_LUI(8,UPPER16(MIPS32_PRACC_PARAM_IN)), /* $8 = MIPS32_PRACC_PARAM_IN */ - MIPS32_ORI(8,8,LOWER16(MIPS32_PRACC_PARAM_IN)), - MIPS32_LW(9,0,8), /* $9 = mem[$8]; read addr */ - MIPS32_LW(10,4,8), /* $10 = mem[$8 + 4]; read count */ - MIPS32_LUI(11,UPPER16(MIPS32_PRACC_PARAM_OUT)), /* $11 = MIPS32_PRACC_PARAM_OUT */ - MIPS32_ORI(11,11,LOWER16(MIPS32_PRACC_PARAM_OUT)), + MIPS32_MTC0(15, 31, 0), /* move $15 to COP0 DeSave */ + MIPS32_LUI(15, UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ + MIPS32_ORI(15, 15, LOWER16(MIPS32_PRACC_STACK)), + MIPS32_SW(8, 0, 15), /* sw $8,($15) */ + MIPS32_SW(9, 0, 15), /* sw $9,($15) */ + MIPS32_SW(10, 0, 15), /* sw $10,($15) */ + MIPS32_SW(11, 0, 15), /* sw $11,($15) */ + + MIPS32_LUI(8, UPPER16(MIPS32_PRACC_PARAM_IN)), /* $8 = MIPS32_PRACC_PARAM_IN */ + MIPS32_ORI(8, 8, LOWER16(MIPS32_PRACC_PARAM_IN)), + MIPS32_LW(9, 0, 8), /* $9 = mem[$8]; read addr */ + MIPS32_LW(10, 4, 8), /* $10 = mem[$8 + 4]; read count */ + MIPS32_LUI(11, UPPER16(MIPS32_PRACC_PARAM_OUT)), /* $11 = MIPS32_PRACC_PARAM_OUT */ + MIPS32_ORI(11, 11, LOWER16(MIPS32_PRACC_PARAM_OUT)), /* loop: */ - MIPS32_BEQ(0,10,8), /* beq 0, $10, end */ + MIPS32_BEQ(0, 10, 8), /* beq 0, $10, end */ MIPS32_NOP, - MIPS32_LW(8,0,9), /* lw $8,0($9), Load $8 with the word @mem[$9] */ - MIPS32_SW(8,0,11), /* sw $8,0($11) */ + MIPS32_LW(8, 0, 9), /* lw $8,0($9), Load $8 with the word @mem[$9] */ + MIPS32_SW(8, 0, 11), /* sw $8,0($11) */ - MIPS32_ADDI(10,10,NEG16(1)), /* $10-- */ - MIPS32_ADDI(9,9,4), /* $1 += 4 */ - MIPS32_ADDI(11,11,4), /* $11 += 4 */ + MIPS32_ADDI(10, 10, NEG16(1)), /* $10-- */ + MIPS32_ADDI(9, 9, 4), /* $1 += 4 */ + MIPS32_ADDI(11, 11, 4), /* $11 += 4 */ MIPS32_B(NEG16(8)), /* b loop */ MIPS32_NOP, /* end: */ - MIPS32_LW(11,0,15), /* lw $11,($15) */ - MIPS32_LW(10,0,15), /* lw $10,($15) */ - MIPS32_LW(9,0,15), /* lw $9,($15) */ - MIPS32_LW(8,0,15), /* lw $8,($15) */ + MIPS32_LW(11, 0, 15), /* lw $11,($15) */ + MIPS32_LW(10, 0, 15), /* lw $10,($15) */ + MIPS32_LW(9, 0, 15), /* lw $9,($15) */ + MIPS32_LW(8, 0, 15), /* lw $8,($15) */ MIPS32_B(NEG16(27)), /* b start */ - MIPS32_MFC0(15,31,0), /* move COP0 DeSave to $15 */ + MIPS32_MFC0(15, 31, 0), /* move COP0 DeSave to $15 */ }; int retval = ERROR_OK; @@ -373,8 +348,7 @@ static int mips32_pracc_read_mem32(struct mips_ejtag *ejtag_info, uint32_t addr, bytesread = 0; - while (count > 0) - { + while (count > 0) { blocksize = count; if (count > 0x400) blocksize = 0x400; @@ -382,11 +356,10 @@ static int mips32_pracc_read_mem32(struct mips_ejtag *ejtag_info, uint32_t addr, param_in[0] = addr; param_in[1] = blocksize; - if ((retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, - ARRAY_SIZE(param_in), param_in, blocksize, &buf[bytesread], 1)) != ERROR_OK) - { + retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, + ARRAY_SIZE(param_in), param_in, blocksize, &buf[bytesread], 1); + if (retval != ERROR_OK) return retval; - } count -= blocksize; addr += blocksize; @@ -400,19 +373,19 @@ static int mips32_pracc_read_u32(struct mips_ejtag *ejtag_info, uint32_t addr, u { static const uint32_t code[] = { /* start: */ - MIPS32_MTC0(15,31,0), /* move $15 to COP0 DeSave */ - MIPS32_LUI(15,UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ - MIPS32_ORI(15,15,LOWER16(MIPS32_PRACC_STACK)), - MIPS32_SW(8,0,15), /* sw $8,($15) */ + MIPS32_MTC0(15, 31, 0), /* move $15 to COP0 DeSave */ + MIPS32_LUI(15, UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ + MIPS32_ORI(15, 15, LOWER16(MIPS32_PRACC_STACK)), + MIPS32_SW(8, 0, 15), /* sw $8,($15) */ - MIPS32_LW(8,NEG16(MIPS32_PRACC_STACK-MIPS32_PRACC_PARAM_IN),15), /* load R8 @ param_in[0] = address */ + MIPS32_LW(8, NEG16(MIPS32_PRACC_STACK-MIPS32_PRACC_PARAM_IN), 15), /* load R8 @ param_in[0] = address */ - MIPS32_LW(8,0,8), /* lw $8,0($8), Load $8 with the word @mem[$8] */ - MIPS32_SW(8,NEG16(MIPS32_PRACC_STACK-MIPS32_PRACC_PARAM_OUT),15), /* store R8 @ param_out[0] */ + MIPS32_LW(8, 0, 8), /* lw $8,0($8), Load $8 with the word @mem[$8] */ + MIPS32_SW(8, NEG16(MIPS32_PRACC_STACK - MIPS32_PRACC_PARAM_OUT), 15), /* store R8 @ param_out[0] */ - MIPS32_LW(8,0,15), /* lw $8,($15) */ + MIPS32_LW(8, 0, 15), /* lw $8,($15) */ MIPS32_B(NEG16(9)), /* b start */ - MIPS32_MFC0(15,31,0), /* move COP0 DeSave to $15 */ + MIPS32_MFC0(15, 31, 0), /* move COP0 DeSave to $15 */ }; int retval = ERROR_OK; @@ -420,11 +393,10 @@ static int mips32_pracc_read_u32(struct mips_ejtag *ejtag_info, uint32_t addr, u param_in[0] = addr; - if ((retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, - ARRAY_SIZE(param_in), param_in, 1, buf, 1)) != ERROR_OK) - { + retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, + ARRAY_SIZE(param_in), param_in, 1, buf, 1); + if (retval != ERROR_OK) return retval; - } return retval; } @@ -433,39 +405,39 @@ static int mips32_pracc_read_mem16(struct mips_ejtag *ejtag_info, uint32_t addr, { static const uint32_t code[] = { /* start: */ - MIPS32_MTC0(15,31,0), /* move $15 to COP0 DeSave */ - MIPS32_LUI(15,UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ - MIPS32_ORI(15,15,LOWER16(MIPS32_PRACC_STACK)), - MIPS32_SW(8,0,15), /* sw $8,($15) */ - MIPS32_SW(9,0,15), /* sw $9,($15) */ - MIPS32_SW(10,0,15), /* sw $10,($15) */ - MIPS32_SW(11,0,15), /* sw $11,($15) */ - - MIPS32_LUI(8,UPPER16(MIPS32_PRACC_PARAM_IN)), /* $8 = MIPS32_PRACC_PARAM_IN */ - MIPS32_ORI(8,8,LOWER16(MIPS32_PRACC_PARAM_IN)), - MIPS32_LW(9,0,8), /* $9 = mem[$8]; read addr */ - MIPS32_LW(10,4,8), /* $10 = mem[$8 + 4]; read count */ - MIPS32_LUI(11,UPPER16(MIPS32_PRACC_PARAM_OUT)), /* $11 = MIPS32_PRACC_PARAM_OUT */ - MIPS32_ORI(11,11,LOWER16(MIPS32_PRACC_PARAM_OUT)), + MIPS32_MTC0(15, 31, 0), /* move $15 to COP0 DeSave */ + MIPS32_LUI(15, UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ + MIPS32_ORI(15, 15, LOWER16(MIPS32_PRACC_STACK)), + MIPS32_SW(8, 0, 15), /* sw $8,($15) */ + MIPS32_SW(9, 0, 15), /* sw $9,($15) */ + MIPS32_SW(10, 0, 15), /* sw $10,($15) */ + MIPS32_SW(11, 0, 15), /* sw $11,($15) */ + + MIPS32_LUI(8, UPPER16(MIPS32_PRACC_PARAM_IN)), /* $8 = MIPS32_PRACC_PARAM_IN */ + MIPS32_ORI(8, 8, LOWER16(MIPS32_PRACC_PARAM_IN)), + MIPS32_LW(9, 0, 8), /* $9 = mem[$8]; read addr */ + MIPS32_LW(10, 4, 8), /* $10 = mem[$8 + 4]; read count */ + MIPS32_LUI(11, UPPER16(MIPS32_PRACC_PARAM_OUT)), /* $11 = MIPS32_PRACC_PARAM_OUT */ + MIPS32_ORI(11, 11, LOWER16(MIPS32_PRACC_PARAM_OUT)), /* loop: */ - MIPS32_BEQ(0,10,8), /* beq 0, $10, end */ + MIPS32_BEQ(0, 10, 8), /* beq 0, $10, end */ MIPS32_NOP, - MIPS32_LHU(8,0,9), /* lw $8,0($9), Load $8 with the halfword @mem[$9] */ - MIPS32_SW(8,0,11), /* sw $8,0($11) */ + MIPS32_LHU(8, 0, 9), /* lw $8,0($9), Load $8 with the halfword @mem[$9] */ + MIPS32_SW(8, 0, 11), /* sw $8,0($11) */ - MIPS32_ADDI(10,10,NEG16(1)), /* $10-- */ - MIPS32_ADDI(9,9,2), /* $9 += 2 */ - MIPS32_ADDI(11,11,4), /* $11 += 4 */ + MIPS32_ADDI(10, 10, NEG16(1)), /* $10-- */ + MIPS32_ADDI(9, 9, 2), /* $9 += 2 */ + MIPS32_ADDI(11, 11, 4), /* $11 += 4 */ MIPS32_B(NEG16(8)), /* b loop */ MIPS32_NOP, /* end: */ - MIPS32_LW(11,0,15), /* lw $11,($15) */ - MIPS32_LW(10,0,15), /* lw $10,($15) */ - MIPS32_LW(9,0,15), /* lw $9,($15) */ - MIPS32_LW(8,0,15), /* lw $8,($15) */ + MIPS32_LW(11, 0, 15), /* lw $11,($15) */ + MIPS32_LW(10, 0, 15), /* lw $10,($15) */ + MIPS32_LW(9, 0, 15), /* lw $9,($15) */ + MIPS32_LW(8, 0, 15), /* lw $8,($15) */ MIPS32_B(NEG16(27)), /* b start */ - MIPS32_MFC0(15,30,0), /* move COP0 DeSave to $15 */ + MIPS32_MFC0(15, 30, 0), /* move COP0 DeSave to $15 */ }; /* TODO remove array */ @@ -476,7 +448,7 @@ static int mips32_pracc_read_mem16(struct mips_ejtag *ejtag_info, uint32_t addr, int blocksize; uint32_t param_in[2]; - //while (count > 0) + /*while (count > 0) */ { blocksize = count; if (count > 0x400) @@ -488,14 +460,12 @@ static int mips32_pracc_read_mem16(struct mips_ejtag *ejtag_info, uint32_t addr, retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, ARRAY_SIZE(param_in), param_in, count, param_out, 1); -// count -= blocksize; -// addr += blocksize; +/* count -= blocksize; */ +/* addr += blocksize; */ } for (i = 0; i < count; i++) - { buf[i] = param_out[i]; - } free(param_out); @@ -506,39 +476,39 @@ static int mips32_pracc_read_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, { static const uint32_t code[] = { /* start: */ - MIPS32_MTC0(15,31,0), /* move $15 to COP0 DeSave */ - MIPS32_LUI(15,UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ - MIPS32_ORI(15,15,LOWER16(MIPS32_PRACC_STACK)), - MIPS32_SW(8,0,15), /* sw $8,($15) */ - MIPS32_SW(9,0,15), /* sw $9,($15) */ - MIPS32_SW(10,0,15), /* sw $10,($15) */ - MIPS32_SW(11,0,15), /* sw $11,($15) */ - - MIPS32_LUI(8,UPPER16(MIPS32_PRACC_PARAM_IN)), /* $8 = MIPS32_PRACC_PARAM_IN */ - MIPS32_ORI(8,8,LOWER16(MIPS32_PRACC_PARAM_IN)), - MIPS32_LW(9,0,8), /* $9 = mem[$8]; read addr */ - MIPS32_LW(10,4,8), /* $10 = mem[$8 + 4]; read count */ - MIPS32_LUI(11,UPPER16(MIPS32_PRACC_PARAM_OUT)), /* $11 = MIPS32_PRACC_PARAM_OUT */ - MIPS32_ORI(11,11,LOWER16(MIPS32_PRACC_PARAM_OUT)), + MIPS32_MTC0(15, 31, 0), /* move $15 to COP0 DeSave */ + MIPS32_LUI(15, UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ + MIPS32_ORI(15, 15, LOWER16(MIPS32_PRACC_STACK)), + MIPS32_SW(8, 0, 15), /* sw $8,($15) */ + MIPS32_SW(9, 0, 15), /* sw $9,($15) */ + MIPS32_SW(10, 0, 15), /* sw $10,($15) */ + MIPS32_SW(11, 0, 15), /* sw $11,($15) */ + + MIPS32_LUI(8, UPPER16(MIPS32_PRACC_PARAM_IN)), /* $8 = MIPS32_PRACC_PARAM_IN */ + MIPS32_ORI(8, 8, LOWER16(MIPS32_PRACC_PARAM_IN)), + MIPS32_LW(9, 0, 8), /* $9 = mem[$8]; read addr */ + MIPS32_LW(10, 4, 8), /* $10 = mem[$8 + 4]; read count */ + MIPS32_LUI(11, UPPER16(MIPS32_PRACC_PARAM_OUT)), /* $11 = MIPS32_PRACC_PARAM_OUT */ + MIPS32_ORI(11, 11, LOWER16(MIPS32_PRACC_PARAM_OUT)), /* loop: */ - MIPS32_BEQ(0,10,8), /* beq 0, $10, end */ + MIPS32_BEQ(0, 10, 8), /* beq 0, $10, end */ MIPS32_NOP, - MIPS32_LBU(8,0,9), /* lw $8,0($9), Load t4 with the byte @mem[t1] */ - MIPS32_SW(8,0,11), /* sw $8,0($11) */ + MIPS32_LBU(8, 0, 9), /* lw $8,0($9), Load t4 with the byte @mem[t1] */ + MIPS32_SW(8, 0, 11), /* sw $8,0($11) */ - MIPS32_ADDI(10,10,NEG16(1)), /* $10-- */ - MIPS32_ADDI(9,9,1), /* $9 += 1 */ - MIPS32_ADDI(11,11,4), /* $11 += 4 */ + MIPS32_ADDI(10, 10, NEG16(1)), /* $10-- */ + MIPS32_ADDI(9, 9, 1), /* $9 += 1 */ + MIPS32_ADDI(11, 11, 4), /* $11 += 4 */ MIPS32_B(NEG16(8)), /* b loop */ MIPS32_NOP, /* end: */ - MIPS32_LW(11,0,15), /* lw $11,($15) */ - MIPS32_LW(10,0,15), /* lw $10,($15) */ - MIPS32_LW(9,0,15), /* lw $9,($15) */ - MIPS32_LW(8,0,15), /* lw $8,($15) */ + MIPS32_LW(11, 0, 15), /* lw $11,($15) */ + MIPS32_LW(10, 0, 15), /* lw $10,($15) */ + MIPS32_LW(9, 0, 15), /* lw $9,($15) */ + MIPS32_LW(8, 0, 15), /* lw $8,($15) */ MIPS32_B(NEG16(27)), /* b start */ - MIPS32_MFC0(15,31,0), /* move COP0 DeSave to $15 */ + MIPS32_MFC0(15, 31, 0), /* move COP0 DeSave to $15 */ }; /* TODO remove array */ @@ -549,7 +519,7 @@ static int mips32_pracc_read_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, int blocksize; uint32_t param_in[2]; -// while (count > 0) +/* while (count > 0) */ { blocksize = count; if (count > 0x400) @@ -561,14 +531,12 @@ static int mips32_pracc_read_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, ARRAY_SIZE(param_in), param_in, count, param_out, 1); -// count -= blocksize; -// addr += blocksize; +/* count -= blocksize; */ +/* addr += blocksize; */ } for (i = 0; i < count; i++) - { buf[i] = param_out[i]; - } free(param_out); @@ -583,22 +551,22 @@ int mips32_cp0_read(struct mips_ejtag *ejtag_info, uint32_t *val, uint32_t cp0_r */ uint32_t code[] = { /* start: */ - MIPS32_MTC0(15,31,0), /* move $15 to COP0 DeSave */ - MIPS32_LUI(15,UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ - MIPS32_ORI(15,15,LOWER16(MIPS32_PRACC_STACK)), - MIPS32_SW(8,0,15), /* sw $8,($15) */ - MIPS32_SW(9,0,15), /* sw $9,($15) */ + MIPS32_MTC0(15, 31, 0), /* move $15 to COP0 DeSave */ + MIPS32_LUI(15, UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ + MIPS32_ORI(15, 15, LOWER16(MIPS32_PRACC_STACK)), + MIPS32_SW(8, 0, 15), /* sw $8,($15) */ + MIPS32_SW(9, 0, 15), /* sw $9,($15) */ - /* 5 */ MIPS32_MFC0(8,0,0), /* move COP0 [cp0_reg select] to $8 */ + /* 5 */ MIPS32_MFC0(8, 0, 0), /* move COP0 [cp0_reg select] to $8 */ - MIPS32_LUI(9,UPPER16(MIPS32_PRACC_PARAM_OUT)), /* $11 = MIPS32_PRACC_PARAM_OUT */ - MIPS32_ORI(9,9,LOWER16(MIPS32_PRACC_PARAM_OUT)), - MIPS32_SW(8,0,9), /* sw $8,0($9) */ + MIPS32_LUI(9, UPPER16(MIPS32_PRACC_PARAM_OUT)), /* $11 = MIPS32_PRACC_PARAM_OUT */ + MIPS32_ORI(9, 9, LOWER16(MIPS32_PRACC_PARAM_OUT)), + MIPS32_SW(8, 0, 9), /* sw $8,0($9) */ - MIPS32_LW(9,0,15), /* lw $9,($15) */ - MIPS32_LW(8,0,15), /* lw $8,($15) */ + MIPS32_LW(9, 0, 15), /* lw $9,($15) */ + MIPS32_LW(8, 0, 15), /* lw $8,($15) */ MIPS32_B(NEG16(12)), /* b start */ - MIPS32_MFC0(15,31,0), /* move COP0 DeSave to $15 */ + MIPS32_MFC0(15, 31, 0), /* move COP0 DeSave to $15 */ }; /** @@ -627,26 +595,26 @@ int mips32_cp0_read(struct mips_ejtag *ejtag_info, uint32_t *val, uint32_t cp0_r } int mips32_cp0_write(struct mips_ejtag *ejtag_info, - uint32_t val, uint32_t cp0_reg, uint32_t cp0_sel) + uint32_t val, uint32_t cp0_reg, uint32_t cp0_sel) { uint32_t code[] = { /* start: */ - MIPS32_MTC0(15,31,0), /* move $15 to COP0 DeSave */ - MIPS32_LUI(15,UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ - MIPS32_ORI(15,15,LOWER16(MIPS32_PRACC_STACK)), - MIPS32_SW(8,0,15), /* sw $8,($15) */ - MIPS32_SW(9,0,15), /* sw $9,($15) */ + MIPS32_MTC0(15, 31, 0), /* move $15 to COP0 DeSave */ + MIPS32_LUI(15, UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ + MIPS32_ORI(15, 15, LOWER16(MIPS32_PRACC_STACK)), + MIPS32_SW(8, 0, 15), /* sw $8,($15) */ + MIPS32_SW(9, 0, 15), /* sw $9,($15) */ - MIPS32_LUI(8,UPPER16(MIPS32_PRACC_PARAM_IN)), /* $8 = MIPS32_PRACC_PARAM_IN */ - MIPS32_ORI(8,8,LOWER16(MIPS32_PRACC_PARAM_IN)), - MIPS32_LW(9,0,8), /* Load write val to $9 */ + MIPS32_LUI(8, UPPER16(MIPS32_PRACC_PARAM_IN)), /* $8 = MIPS32_PRACC_PARAM_IN */ + MIPS32_ORI(8, 8, LOWER16(MIPS32_PRACC_PARAM_IN)), + MIPS32_LW(9, 0, 8), /* Load write val to $9 */ - /* 8 */ MIPS32_MTC0(9,0,0), /* move $9 to COP0 [cp0_reg select] */ + /* 8 */ MIPS32_MTC0(9, 0, 0), /* move $9 to COP0 [cp0_reg select] */ - MIPS32_LW(9,0,15), /* lw $9,($15) */ - MIPS32_LW(8,0,15), /* lw $8,($15) */ + MIPS32_LW(9, 0, 15), /* lw $9,($15) */ + MIPS32_LW(8, 0, 15), /* lw $8,($15) */ MIPS32_B(NEG16(12)), /* b start */ - MIPS32_MFC0(15,31,0), /* move COP0 DeSave to $15 */ + MIPS32_MFC0(15, 31, 0), /* move COP0 DeSave to $15 */ }; /** @@ -697,39 +665,39 @@ int mips32_cp0_write(struct mips_ejtag *ejtag_info, * from one of the standard “hardware registers”. */ static int mips32_pracc_sync_cache(struct mips_ejtag *ejtag_info, - uint32_t start_addr, uint32_t end_addr) + uint32_t start_addr, uint32_t end_addr) { static const uint32_t code[] = { /* start: */ - MIPS32_MTC0(15,31,0), /* move $15 to COP0 DeSave */ - MIPS32_LUI(15,UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ - MIPS32_ORI(15,15,LOWER16(MIPS32_PRACC_STACK)), - MIPS32_SW(8,0,15), /* sw $8,($15) */ - MIPS32_SW(9,0,15), /* sw $9,($15) */ - MIPS32_SW(10,0,15), /* sw $10,($15) */ - MIPS32_SW(11,0,15), /* sw $11,($15) */ - - MIPS32_LUI(8,UPPER16(MIPS32_PRACC_PARAM_IN)), /* $8 = MIPS32_PRACC_PARAM_IN */ - MIPS32_ORI(8,8,LOWER16(MIPS32_PRACC_PARAM_IN)), - MIPS32_LW(9,0,8), /* Load write start_addr to $9 */ - MIPS32_LW(10,4,8), /* Load write end_addr to $10 */ + MIPS32_MTC0(15, 31, 0), /* move $15 to COP0 DeSave */ + MIPS32_LUI(15, UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ + MIPS32_ORI(15, 15, LOWER16(MIPS32_PRACC_STACK)), + MIPS32_SW(8, 0, 15), /* sw $8,($15) */ + MIPS32_SW(9, 0, 15), /* sw $9,($15) */ + MIPS32_SW(10, 0, 15), /* sw $10,($15) */ + MIPS32_SW(11, 0, 15), /* sw $11,($15) */ + + MIPS32_LUI(8, UPPER16(MIPS32_PRACC_PARAM_IN)), /* $8 = MIPS32_PRACC_PARAM_IN */ + MIPS32_ORI(8, 8, LOWER16(MIPS32_PRACC_PARAM_IN)), + MIPS32_LW(9, 0, 8), /* Load write start_addr to $9 */ + MIPS32_LW(10, 4, 8), /* Load write end_addr to $10 */ MIPS32_RDHWR(11, MIPS32_SYNCI_STEP), /* $11 = MIPS32_SYNCI_STEP */ - MIPS32_BEQ(11,0,6), /* beq $11, $0, end */ + MIPS32_BEQ(11, 0, 6), /* beq $11, $0, end */ MIPS32_NOP, /* synci_loop : */ - MIPS32_SYNCI(0,9), /* synci 0($9) */ - MIPS32_SLTU(8,10,9), /* sltu $8, $10, $9 # $8 = $10 < $9 ? 1 : 0 */ - MIPS32_BNE(8,0,NEG16(3)), /* bne $8, $0, synci_loop */ + MIPS32_SYNCI(0, 9), /* synci 0($9) */ + MIPS32_SLTU(8, 10, 9), /* sltu $8, $10, $9 # $8 = $10 < $9 ? 1 : 0 */ + MIPS32_BNE(8, 0, NEG16(3)), /* bne $8, $0, synci_loop */ MIPS32_ADDU(9, 9, 11), /* $9 += MIPS32_SYNCI_STEP */ MIPS32_SYNC, /* end: */ - MIPS32_LW(11,0,15), /* lw $11,($15) */ - MIPS32_LW(10,0,15), /* lw $10,($15) */ - MIPS32_LW(9,0,15), /* lw $9,($15) */ - MIPS32_LW(8,0,15), /* lw $8,($15) */ + MIPS32_LW(11, 0, 15), /* lw $11,($15) */ + MIPS32_LW(10, 0, 15), /* lw $10,($15) */ + MIPS32_LW(9, 0, 15), /* lw $9,($15) */ + MIPS32_LW(8, 0, 15), /* lw $8,($15) */ MIPS32_B(NEG16(24)), /* b start */ - MIPS32_MFC0(15,31,0), /* move COP0 DeSave to $15 */ + MIPS32_MFC0(15, 31, 0), /* move COP0 DeSave to $15 */ }; /* TODO remove array */ @@ -756,39 +724,39 @@ static int mips32_pracc_clean_invalidate_cache(struct mips_ejtag *ejtag_info, { static const uint32_t code[] = { /* start: */ - MIPS32_MTC0(15,31,0), /* move $15 to COP0 DeSave */ - MIPS32_LUI(15,UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ - MIPS32_ORI(15,15,LOWER16(MIPS32_PRACC_STACK)), - MIPS32_SW(8,0,15), /* sw $8,($15) */ - MIPS32_SW(9,0,15), /* sw $9,($15) */ - MIPS32_SW(10,0,15), /* sw $10,($15) */ - MIPS32_SW(11,0,15), /* sw $11,($15) */ - - MIPS32_LUI(8,UPPER16(MIPS32_PRACC_PARAM_IN)), /* $8 = MIPS32_PRACC_PARAM_IN */ - MIPS32_ORI(8,8,LOWER16(MIPS32_PRACC_PARAM_IN)), - MIPS32_LW(9,0,8), /* Load write start_addr to $9 */ - MIPS32_LW(10,4,8), /* Load write end_addr to $10 */ - MIPS32_LW(11,8,8), /* Load write clsiz to $11 */ + MIPS32_MTC0(15, 31, 0), /* move $15 to COP0 DeSave */ + MIPS32_LUI(15, UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ + MIPS32_ORI(15, 15, LOWER16(MIPS32_PRACC_STACK)), + MIPS32_SW(8, 0, 15), /* sw $8,($15) */ + MIPS32_SW(9, 0, 15), /* sw $9,($15) */ + MIPS32_SW(10, 0, 15), /* sw $10,($15) */ + MIPS32_SW(11, 0, 15), /* sw $11,($15) */ + + MIPS32_LUI(8, UPPER16(MIPS32_PRACC_PARAM_IN)), /* $8 = MIPS32_PRACC_PARAM_IN */ + MIPS32_ORI(8, 8, LOWER16(MIPS32_PRACC_PARAM_IN)), + MIPS32_LW(9, 0, 8), /* Load write start_addr to $9 */ + MIPS32_LW(10, 4, 8), /* Load write end_addr to $10 */ + MIPS32_LW(11, 8, 8), /* Load write clsiz to $11 */ /* cache_loop: */ - MIPS32_SLTU(8,10,9), /* sltu $8, $10, $9 : $8 <- $10 < $9 ? */ - MIPS32_BGTZ(8,6), /* bgtz $8, end */ + MIPS32_SLTU(8, 10, 9), /* sltu $8, $10, $9 : $8 <- $10 < $9 ? */ + MIPS32_BGTZ(8, 6), /* bgtz $8, end */ MIPS32_NOP, - MIPS32_CACHE(MIPS32_CACHE_D_HIT_WRITEBACK,0,9), /* cache Hit_Writeback_D, 0($9) */ - MIPS32_CACHE(MIPS32_CACHE_I_HIT_INVALIDATE,0,9), /* cache Hit_Invalidate_I, 0($9) */ + MIPS32_CACHE(MIPS32_CACHE_D_HIT_WRITEBACK, 0, 9), /* cache Hit_Writeback_D, 0($9) */ + MIPS32_CACHE(MIPS32_CACHE_I_HIT_INVALIDATE, 0, 9), /* cache Hit_Invalidate_I, 0($9) */ - MIPS32_ADDU(9,9,11), /* $9 += $11 */ + MIPS32_ADDU(9, 9, 11), /* $9 += $11 */ MIPS32_B(NEG16(7)), /* b cache_loop */ MIPS32_NOP, /* end: */ - MIPS32_LW(11,0,15), /* lw $11,($15) */ - MIPS32_LW(10,0,15), /* lw $10,($15) */ - MIPS32_LW(9,0,15), /* lw $9,($15) */ - MIPS32_LW(8,0,15), /* lw $8,($15) */ + MIPS32_LW(11, 0, 15), /* lw $11,($15) */ + MIPS32_LW(10, 0, 15), /* lw $10,($15) */ + MIPS32_LW(9, 0, 15), /* lw $9,($15) */ + MIPS32_LW(8, 0, 15), /* lw $8,($15) */ MIPS32_B(NEG16(25)), /* b start */ - MIPS32_MFC0(15,31,0), /* move COP0 DeSave to $15 */ + MIPS32_MFC0(15, 31, 0), /* move COP0 DeSave to $15 */ }; /** @@ -822,23 +790,18 @@ int mips32_pracc_write_mem(struct mips_ejtag *ejtag_info, uint32_t addr, int siz { int retval; - switch (size) - { + switch (size) { case 1: - retval = mips32_pracc_write_mem8(ejtag_info, addr, count, (uint8_t*)buf); + retval = mips32_pracc_write_mem8(ejtag_info, addr, count, (uint8_t *)buf); break; case 2: - retval = mips32_pracc_write_mem16(ejtag_info, addr, count,(uint16_t*)buf); + retval = mips32_pracc_write_mem16(ejtag_info, addr, count, (uint16_t *)buf); break; case 4: if (count == 1) - { - retval = mips32_pracc_write_u32(ejtag_info, addr, (uint32_t*)buf); - } + retval = mips32_pracc_write_u32(ejtag_info, addr, (uint32_t *)buf); else - { - retval = mips32_pracc_write_mem32(ejtag_info, addr, count, (uint32_t*)buf); - } + retval = mips32_pracc_write_mem32(ejtag_info, addr, count, (uint32_t *)buf); break; default: retval = ERROR_FAIL; @@ -855,12 +818,11 @@ int mips32_pracc_write_mem(struct mips_ejtag *ejtag_info, uint32_t addr, int siz mips32_cp0_read(ejtag_info, &conf, 16, 0); - switch (KSEGX(addr)) - { + switch (KSEGX(addr)) { case KUSEG: cached = (conf & MIPS32_CONFIG0_KU_MASK) >> MIPS32_CONFIG0_KU_SHIFT; break; - case KSEG0 : + case KSEG0: cached = (conf & MIPS32_CONFIG0_K0_MASK) >> MIPS32_CONFIG0_K0_SHIFT; break; case KSEG1: @@ -880,8 +842,7 @@ int mips32_pracc_write_mem(struct mips_ejtag *ejtag_info, uint32_t addr, int siz * is the region cacheable or uncached. * If cacheable we have to synchronize the cache */ - if (cached == 0x3) - { + if (cached == 0x3) { uint32_t start_addr, end_addr; uint32_t rel; @@ -890,17 +851,16 @@ int mips32_pracc_write_mem(struct mips_ejtag *ejtag_info, uint32_t addr, int siz /** select cache synchronisation mechanism based on Architecture Release */ rel = (conf & MIPS32_CONFIG0_AR_MASK) >> MIPS32_CONFIG0_AR_SHIFT; - switch (rel) - { - case MIPS32_ARCH_REL1 : + switch (rel) { + case MIPS32_ARCH_REL1: /* MIPS32/64 Release 1 - we must use cache instruction */ mips32_pracc_clean_invalidate_cache(ejtag_info, start_addr, end_addr); break; - case MIPS32_ARCH_REL2 : + case MIPS32_ARCH_REL2: /* MIPS32/64 Release 2 - we can use synci instruction */ mips32_pracc_sync_cache(ejtag_info, start_addr, end_addr); break; - default : + default: /* what ? */ break; } @@ -913,34 +873,34 @@ static int mips32_pracc_write_mem32(struct mips_ejtag *ejtag_info, uint32_t addr { static const uint32_t code[] = { /* start: */ - MIPS32_MTC0(15,31,0), /* move $15 to COP0 DeSave */ - MIPS32_LUI(15,UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ - MIPS32_ORI(15,15,LOWER16(MIPS32_PRACC_STACK)), - MIPS32_SW(8,0,15), /* sw $8,($15) */ - MIPS32_SW(9,0,15), /* sw $9,($15) */ - MIPS32_SW(10,0,15), /* sw $10,($15) */ - MIPS32_SW(11,0,15), /* sw $11,($15) */ - - MIPS32_ADDI(8,15,NEG16(MIPS32_PRACC_STACK-MIPS32_PRACC_PARAM_IN)), /* $8= MIPS32_PRACC_PARAM_IN */ - MIPS32_LW(9,0,8), /* Load write addr to $9 */ - MIPS32_LW(10,4,8), /* Load write count to $10 */ - MIPS32_ADDI(8,8,8), /* $8 += 8 beginning of data */ + MIPS32_MTC0(15, 31, 0), /* move $15 to COP0 DeSave */ + MIPS32_LUI(15, UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ + MIPS32_ORI(15, 15, LOWER16(MIPS32_PRACC_STACK)), + MIPS32_SW(8, 0, 15), /* sw $8,($15) */ + MIPS32_SW(9, 0, 15), /* sw $9,($15) */ + MIPS32_SW(10, 0, 15), /* sw $10,($15) */ + MIPS32_SW(11, 0, 15), /* sw $11,($15) */ + + MIPS32_ADDI(8, 15, NEG16(MIPS32_PRACC_STACK-MIPS32_PRACC_PARAM_IN)), /* $8= MIPS32_PRACC_PARAM_IN */ + MIPS32_LW(9, 0, 8), /* Load write addr to $9 */ + MIPS32_LW(10, 4, 8), /* Load write count to $10 */ + MIPS32_ADDI(8, 8, 8), /* $8 += 8 beginning of data */ /* loop: */ - MIPS32_LW(11,0,8), /* lw $11,0($8), Load $11 with the word @mem[$8] */ - MIPS32_SW(11,0,9), /* sw $11,0($9) */ + MIPS32_LW(11, 0, 8), /* lw $11,0($8), Load $11 with the word @mem[$8] */ + MIPS32_SW(11, 0, 9), /* sw $11,0($9) */ - MIPS32_ADDI(9,9,4), /* $9 += 4 */ - MIPS32_BNE(10,9,NEG16(4)), /* bne $10, $9, loop */ - MIPS32_ADDI(8,8,4), /* $8 += 4 */ + MIPS32_ADDI(9, 9, 4), /* $9 += 4 */ + MIPS32_BNE(10, 9, NEG16(4)), /* bne $10, $9, loop */ + MIPS32_ADDI(8, 8, 4), /* $8 += 4 */ /* end: */ - MIPS32_LW(11,0,15), /* lw $11,($15) */ - MIPS32_LW(10,0,15), /* lw $10,($15) */ - MIPS32_LW(9,0,15), /* lw $9,($15) */ - MIPS32_LW(8,0,15), /* lw $8,($15) */ + MIPS32_LW(11, 0, 15), /* lw $11,($15) */ + MIPS32_LW(10, 0, 15), /* lw $10,($15) */ + MIPS32_LW(9, 0, 15), /* lw $9,($15) */ + MIPS32_LW(8, 0, 15), /* lw $8,($15) */ MIPS32_B(NEG16(21)), /* b start */ - MIPS32_MFC0(15,31,0), /* move COP0 DeSave to $15 */ + MIPS32_MFC0(15, 31, 0), /* move COP0 DeSave to $15 */ }; /* TODO remove array */ @@ -963,21 +923,21 @@ static int mips32_pracc_write_u32(struct mips_ejtag *ejtag_info, uint32_t addr, { static const uint32_t code[] = { /* start: */ - MIPS32_MTC0(15,31,0), /* move $15 to COP0 DeSave */ - MIPS32_LUI(15,UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ - MIPS32_ORI(15,15,LOWER16(MIPS32_PRACC_STACK)), - MIPS32_SW(8,0,15), /* sw $8,($15) */ - MIPS32_SW(9,0,15), /* sw $9,($15) */ + MIPS32_MTC0(15, 31, 0), /* move $15 to COP0 DeSave */ + MIPS32_LUI(15, UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ + MIPS32_ORI(15, 15, LOWER16(MIPS32_PRACC_STACK)), + MIPS32_SW(8, 0, 15), /* sw $8,($15) */ + MIPS32_SW(9, 0, 15), /* sw $9,($15) */ - MIPS32_LW(8,NEG16((MIPS32_PRACC_STACK-MIPS32_PRACC_PARAM_IN)-4), 15), /* load R8 @ param_in[1] = data */ - MIPS32_LW(9,NEG16(MIPS32_PRACC_STACK-MIPS32_PRACC_PARAM_IN), 15), /* load R9 @ param_in[0] = address */ + MIPS32_LW(8, NEG16((MIPS32_PRACC_STACK-MIPS32_PRACC_PARAM_IN)-4), 15), /* load R8 @ param_in[1] = data */ + MIPS32_LW(9, NEG16(MIPS32_PRACC_STACK-MIPS32_PRACC_PARAM_IN), 15), /* load R9 @ param_in[0] = address */ - MIPS32_SW(8,0,9), /* sw $8,0($9) */ + MIPS32_SW(8, 0, 9), /* sw $8,0($9) */ - MIPS32_LW(9,0,15), /* lw $9,($15) */ - MIPS32_LW(8,0,15), /* lw $8,($15) */ + MIPS32_LW(9, 0, 15), /* lw $9,($15) */ + MIPS32_LW(8, 0, 15), /* lw $8,($15) */ MIPS32_B(NEG16(11)), /* b start */ - MIPS32_MFC0(15,31,0), /* move COP0 DeSave to $15 */ + MIPS32_MFC0(15, 31, 0), /* move COP0 DeSave to $15 */ }; /* TODO remove array */ @@ -993,39 +953,39 @@ static int mips32_pracc_write_mem16(struct mips_ejtag *ejtag_info, uint32_t addr { static const uint32_t code[] = { /* start: */ - MIPS32_MTC0(15,31,0), /* move $15 to COP0 DeSave */ - MIPS32_LUI(15,UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ - MIPS32_ORI(15,15,LOWER16(MIPS32_PRACC_STACK)), - MIPS32_SW(8,0,15), /* sw $8,($15) */ - MIPS32_SW(9,0,15), /* sw $9,($15) */ - MIPS32_SW(10,0,15), /* sw $10,($15) */ - MIPS32_SW(11,0,15), /* sw $11,($15) */ - - MIPS32_LUI(8,UPPER16(MIPS32_PRACC_PARAM_IN)), /* $8 = MIPS32_PRACC_PARAM_IN */ - MIPS32_ORI(8,8,LOWER16(MIPS32_PRACC_PARAM_IN)), - MIPS32_LW(9,0,8), /* Load write addr to $9 */ - MIPS32_LW(10,4,8), /* Load write count to $10 */ - MIPS32_ADDI(8,8,8), /* $8 += 8 */ + MIPS32_MTC0(15, 31, 0), /* move $15 to COP0 DeSave */ + MIPS32_LUI(15, UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ + MIPS32_ORI(15, 15, LOWER16(MIPS32_PRACC_STACK)), + MIPS32_SW(8, 0, 15), /* sw $8,($15) */ + MIPS32_SW(9, 0, 15), /* sw $9,($15) */ + MIPS32_SW(10, 0, 15), /* sw $10,($15) */ + MIPS32_SW(11, 0, 15), /* sw $11,($15) */ + + MIPS32_LUI(8, UPPER16(MIPS32_PRACC_PARAM_IN)), /* $8 = MIPS32_PRACC_PARAM_IN */ + MIPS32_ORI(8, 8, LOWER16(MIPS32_PRACC_PARAM_IN)), + MIPS32_LW(9, 0, 8), /* Load write addr to $9 */ + MIPS32_LW(10, 4, 8), /* Load write count to $10 */ + MIPS32_ADDI(8, 8, 8), /* $8 += 8 */ /* loop: */ - MIPS32_BEQ(0,10,8), /* beq $0, $10, end */ + MIPS32_BEQ(0, 10, 8), /* beq $0, $10, end */ MIPS32_NOP, - MIPS32_LW(11,0,8), /* lw $11,0($8), Load $11 with the word @mem[$8] */ - MIPS32_SH(11,0,9), /* sh $11,0($9) */ + MIPS32_LW(11, 0, 8), /* lw $11,0($8), Load $11 with the word @mem[$8] */ + MIPS32_SH(11, 0, 9), /* sh $11,0($9) */ - MIPS32_ADDI(10,10,NEG16(1)), /* $10-- */ - MIPS32_ADDI(9,9,2), /* $9 += 2 */ - MIPS32_ADDI(8,8,4), /* $8 += 4 */ + MIPS32_ADDI(10, 10, NEG16(1)), /* $10-- */ + MIPS32_ADDI(9, 9, 2), /* $9 += 2 */ + MIPS32_ADDI(8, 8, 4), /* $8 += 4 */ MIPS32_B(NEG16(8)), /* b loop */ MIPS32_NOP, /* end: */ - MIPS32_LW(11,0,15), /* lw $11,($15) */ - MIPS32_LW(10,0,15), /* lw $10,($15) */ - MIPS32_LW(9,0,15), /* lw $9,($15) */ - MIPS32_LW(8,0,15), /* lw $8,($15) */ + MIPS32_LW(11, 0, 15), /* lw $11,($15) */ + MIPS32_LW(10, 0, 15), /* lw $10,($15) */ + MIPS32_LW(9, 0, 15), /* lw $9,($15) */ + MIPS32_LW(8, 0, 15), /* lw $8,($15) */ MIPS32_B(NEG16(26)), /* b start */ - MIPS32_MFC0(15,31,0), /* move COP0 DeSave to $15 */ + MIPS32_MFC0(15, 31, 0), /* move COP0 DeSave to $15 */ }; /* TODO remove array */ @@ -1035,9 +995,7 @@ static int mips32_pracc_write_mem16(struct mips_ejtag *ejtag_info, uint32_t addr param_in[1] = count; for (i = 0; i < count; i++) - { param_in[i + 2] = buf[i]; - } int retval; retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, @@ -1052,39 +1010,39 @@ static int mips32_pracc_write_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, { static const uint32_t code[] = { /* start: */ - MIPS32_MTC0(15,31,0), /* move $15 to COP0 DeSave */ - MIPS32_LUI(15,UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ - MIPS32_ORI(15,15,LOWER16(MIPS32_PRACC_STACK)), - MIPS32_SW(8,0,15), /* sw $8,($15) */ - MIPS32_SW(9,0,15), /* sw $9,($15) */ - MIPS32_SW(10,0,15), /* sw $10,($15) */ - MIPS32_SW(11,0,15), /* sw $11,($15) */ - - MIPS32_LUI(8,UPPER16(MIPS32_PRACC_PARAM_IN)), /* $8 = MIPS32_PRACC_PARAM_IN */ - MIPS32_ORI(8,8,LOWER16(MIPS32_PRACC_PARAM_IN)), - MIPS32_LW(9,0,8), /* Load write addr to $9 */ - MIPS32_LW(10,4,8), /* Load write count to $10 */ - MIPS32_ADDI(8,8,8), /* $8 += 8 */ + MIPS32_MTC0(15, 31, 0), /* move $15 to COP0 DeSave */ + MIPS32_LUI(15, UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ + MIPS32_ORI(15, 15, LOWER16(MIPS32_PRACC_STACK)), + MIPS32_SW(8, 0, 15), /* sw $8,($15) */ + MIPS32_SW(9, 0, 15), /* sw $9,($15) */ + MIPS32_SW(10, 0, 15), /* sw $10,($15) */ + MIPS32_SW(11, 0, 15), /* sw $11,($15) */ + + MIPS32_LUI(8, UPPER16(MIPS32_PRACC_PARAM_IN)), /* $8 = MIPS32_PRACC_PARAM_IN */ + MIPS32_ORI(8, 8, LOWER16(MIPS32_PRACC_PARAM_IN)), + MIPS32_LW(9, 0, 8), /* Load write addr to $9 */ + MIPS32_LW(10, 4, 8), /* Load write count to $10 */ + MIPS32_ADDI(8, 8, 8), /* $8 += 8 */ /* loop: */ - MIPS32_BEQ(0,10,8), /* beq $0, $10, end */ + MIPS32_BEQ(0, 10, 8), /* beq $0, $10, end */ MIPS32_NOP, - MIPS32_LW(11,0,8), /* lw $11,0($8), Load $11 with the word @mem[$8] */ - MIPS32_SB(11,0,9), /* sb $11,0($9) */ + MIPS32_LW(11, 0, 8), /* lw $11,0($8), Load $11 with the word @mem[$8] */ + MIPS32_SB(11, 0, 9), /* sb $11,0($9) */ - MIPS32_ADDI(10,10,NEG16(1)), /* $10-- */ - MIPS32_ADDI(9,9,1), /* $9 += 1 */ - MIPS32_ADDI(8,8,4), /* $8 += 4 */ + MIPS32_ADDI(10, 10, NEG16(1)), /* $10-- */ + MIPS32_ADDI(9, 9, 1), /* $9 += 1 */ + MIPS32_ADDI(8, 8, 4), /* $8 += 4 */ MIPS32_B(NEG16(8)), /* b loop */ MIPS32_NOP, /* end: */ - MIPS32_LW(11,0,15), /* lw $11,($15) */ - MIPS32_LW(10,0,15), /* lw $10,($15) */ - MIPS32_LW(9,0,15), /* lw $9,($15) */ - MIPS32_LW(8,0,15), /* lw $8,($15) */ + MIPS32_LW(11, 0, 15), /* lw $11,($15) */ + MIPS32_LW(10, 0, 15), /* lw $10,($15) */ + MIPS32_LW(9, 0, 15), /* lw $9,($15) */ + MIPS32_LW(8, 0, 15), /* lw $8,($15) */ MIPS32_B(NEG16(26)), /* b start */ - MIPS32_MFC0(15,31,0), /* move COP0 DeSave to $15 */ + MIPS32_MFC0(15, 31, 0), /* move COP0 DeSave to $15 */ }; /* TODO remove array */ @@ -1095,9 +1053,7 @@ static int mips32_pracc_write_mem8(struct mips_ejtag *ejtag_info, uint32_t addr, param_in[1] = count; for (i = 0; i < count; i++) - { param_in[i + 2] = buf[i]; - } retval = mips32_pracc_exec(ejtag_info, ARRAY_SIZE(code), code, count + 2, param_in, 0, NULL, 1); @@ -1111,62 +1067,62 @@ int mips32_pracc_write_regs(struct mips_ejtag *ejtag_info, uint32_t *regs) { static const uint32_t code[] = { /* start: */ - MIPS32_LUI(2,UPPER16(MIPS32_PRACC_PARAM_IN)), /* $2 = MIPS32_PRACC_PARAM_IN */ - MIPS32_ORI(2,2,LOWER16(MIPS32_PRACC_PARAM_IN)), - MIPS32_LW(1,1*4,2), /* lw $1,1*4($2) */ - MIPS32_LW(15,15*4,2), /* lw $15,15*4($2) */ - MIPS32_MTC0(15,31,0), /* move $15 to COP0 DeSave */ - MIPS32_LUI(15,UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ - MIPS32_ORI(15,15,LOWER16(MIPS32_PRACC_STACK)), - MIPS32_SW(1,0,15), /* sw $1,($15) */ - MIPS32_LUI(1,UPPER16(MIPS32_PRACC_PARAM_IN)), /* $1 = MIPS32_PRACC_PARAM_IN */ - MIPS32_ORI(1,1,LOWER16(MIPS32_PRACC_PARAM_IN)), - MIPS32_LW(3,3*4,1), /* lw $3,3*4($1) */ - MIPS32_LW(4,4*4,1), /* lw $4,4*4($1) */ - MIPS32_LW(5,5*4,1), /* lw $5,5*4($1) */ - MIPS32_LW(6,6*4,1), /* lw $6,6*4($1) */ - MIPS32_LW(7,7*4,1), /* lw $7,7*4($1) */ - MIPS32_LW(8,8*4,1), /* lw $8,8*4($1) */ - MIPS32_LW(9,9*4,1), /* lw $9,9*4($1) */ - MIPS32_LW(10,10*4,1), /* lw $10,10*4($1) */ - MIPS32_LW(11,11*4,1), /* lw $11,11*4($1) */ - MIPS32_LW(12,12*4,1), /* lw $12,12*4($1) */ - MIPS32_LW(13,13*4,1), /* lw $13,13*4($1) */ - MIPS32_LW(14,14*4,1), /* lw $14,14*4($1) */ - MIPS32_LW(16,16*4,1), /* lw $16,16*4($1) */ - MIPS32_LW(17,17*4,1), /* lw $17,17*4($1) */ - MIPS32_LW(18,18*4,1), /* lw $18,18*4($1) */ - MIPS32_LW(19,19*4,1), /* lw $19,19*4($1) */ - MIPS32_LW(20,20*4,1), /* lw $20,20*4($1) */ - MIPS32_LW(21,21*4,1), /* lw $21,21*4($1) */ - MIPS32_LW(22,22*4,1), /* lw $22,22*4($1) */ - MIPS32_LW(23,23*4,1), /* lw $23,23*4($1) */ - MIPS32_LW(24,24*4,1), /* lw $24,24*4($1) */ - MIPS32_LW(25,25*4,1), /* lw $25,25*4($1) */ - MIPS32_LW(26,26*4,1), /* lw $26,26*4($1) */ - MIPS32_LW(27,27*4,1), /* lw $27,27*4($1) */ - MIPS32_LW(28,28*4,1), /* lw $28,28*4($1) */ - MIPS32_LW(29,29*4,1), /* lw $29,29*4($1) */ - MIPS32_LW(30,30*4,1), /* lw $30,30*4($1) */ - MIPS32_LW(31,31*4,1), /* lw $31,31*4($1) */ - - MIPS32_LW(2,32*4,1), /* lw $2,32*4($1) */ - MIPS32_MTC0(2,12,0), /* move $2 to status */ - MIPS32_LW(2,33*4,1), /* lw $2,33*4($1) */ + MIPS32_LUI(2, UPPER16(MIPS32_PRACC_PARAM_IN)), /* $2 = MIPS32_PRACC_PARAM_IN */ + MIPS32_ORI(2, 2, LOWER16(MIPS32_PRACC_PARAM_IN)), + MIPS32_LW(1, 1*4, 2), /* lw $1,1*4($2) */ + MIPS32_LW(15, 15*4, 2), /* lw $15,15*4($2) */ + MIPS32_MTC0(15, 31, 0), /* move $15 to COP0 DeSave */ + MIPS32_LUI(15, UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ + MIPS32_ORI(15, 15, LOWER16(MIPS32_PRACC_STACK)), + MIPS32_SW(1, 0, 15), /* sw $1,($15) */ + MIPS32_LUI(1, UPPER16(MIPS32_PRACC_PARAM_IN)), /* $1 = MIPS32_PRACC_PARAM_IN */ + MIPS32_ORI(1, 1, LOWER16(MIPS32_PRACC_PARAM_IN)), + MIPS32_LW(3, 3*4, 1), /* lw $3,3*4($1) */ + MIPS32_LW(4, 4*4, 1), /* lw $4,4*4($1) */ + MIPS32_LW(5, 5*4, 1), /* lw $5,5*4($1) */ + MIPS32_LW(6, 6*4, 1), /* lw $6,6*4($1) */ + MIPS32_LW(7, 7*4, 1), /* lw $7,7*4($1) */ + MIPS32_LW(8, 8*4, 1), /* lw $8,8*4($1) */ + MIPS32_LW(9, 9*4, 1), /* lw $9,9*4($1) */ + MIPS32_LW(10, 10*4, 1), /* lw $10,10*4($1) */ + MIPS32_LW(11, 11*4, 1), /* lw $11,11*4($1) */ + MIPS32_LW(12, 12*4, 1), /* lw $12,12*4($1) */ + MIPS32_LW(13, 13*4, 1), /* lw $13,13*4($1) */ + MIPS32_LW(14, 14*4, 1), /* lw $14,14*4($1) */ + MIPS32_LW(16, 16*4, 1), /* lw $16,16*4($1) */ + MIPS32_LW(17, 17*4, 1), /* lw $17,17*4($1) */ + MIPS32_LW(18, 18*4, 1), /* lw $18,18*4($1) */ + MIPS32_LW(19, 19*4, 1), /* lw $19,19*4($1) */ + MIPS32_LW(20, 20*4, 1), /* lw $20,20*4($1) */ + MIPS32_LW(21, 21*4, 1), /* lw $21,21*4($1) */ + MIPS32_LW(22, 22*4, 1), /* lw $22,22*4($1) */ + MIPS32_LW(23, 23*4, 1), /* lw $23,23*4($1) */ + MIPS32_LW(24, 24*4, 1), /* lw $24,24*4($1) */ + MIPS32_LW(25, 25*4, 1), /* lw $25,25*4($1) */ + MIPS32_LW(26, 26*4, 1), /* lw $26,26*4($1) */ + MIPS32_LW(27, 27*4, 1), /* lw $27,27*4($1) */ + MIPS32_LW(28, 28*4, 1), /* lw $28,28*4($1) */ + MIPS32_LW(29, 29*4, 1), /* lw $29,29*4($1) */ + MIPS32_LW(30, 30*4, 1), /* lw $30,30*4($1) */ + MIPS32_LW(31, 31*4, 1), /* lw $31,31*4($1) */ + + MIPS32_LW(2, 32*4, 1), /* lw $2,32*4($1) */ + MIPS32_MTC0(2, 12, 0), /* move $2 to status */ + MIPS32_LW(2, 33*4, 1), /* lw $2,33*4($1) */ MIPS32_MTLO(2), /* move $2 to lo */ - MIPS32_LW(2,34*4,1), /* lw $2,34*4($1) */ + MIPS32_LW(2, 34*4, 1), /* lw $2,34*4($1) */ MIPS32_MTHI(2), /* move $2 to hi */ - MIPS32_LW(2,35*4,1), /* lw $2,35*4($1) */ - MIPS32_MTC0(2,8,0), /* move $2 to badvaddr */ - MIPS32_LW(2,36*4,1), /* lw $2,36*4($1) */ - MIPS32_MTC0(2,13,0), /* move $2 to cause*/ - MIPS32_LW(2,37*4,1), /* lw $2,37*4($1) */ - MIPS32_MTC0(2,24,0), /* move $2 to depc (pc) */ - - MIPS32_LW(2,2*4,1), /* lw $2,2*4($1) */ - MIPS32_LW(1,0,15), /* lw $1,($15) */ + MIPS32_LW(2, 35*4, 1), /* lw $2,35*4($1) */ + MIPS32_MTC0(2, 8, 0), /* move $2 to badvaddr */ + MIPS32_LW(2, 36*4, 1), /* lw $2,36*4($1) */ + MIPS32_MTC0(2, 13, 0), /* move $2 to cause*/ + MIPS32_LW(2, 37*4, 1), /* lw $2,37*4($1) */ + MIPS32_MTC0(2, 24, 0), /* move $2 to depc (pc) */ + + MIPS32_LW(2, 2*4, 1), /* lw $2,2*4($1) */ + MIPS32_LW(1, 0, 15), /* lw $1,($15) */ MIPS32_B(NEG16(53)), /* b start */ - MIPS32_MFC0(15,31,0), /* move COP0 DeSave to $15 */ + MIPS32_MFC0(15, 31, 0), /* move COP0 DeSave to $15 */ }; int retval; @@ -1181,67 +1137,67 @@ int mips32_pracc_read_regs(struct mips_ejtag *ejtag_info, uint32_t *regs) { static const uint32_t code[] = { /* start: */ - MIPS32_MTC0(2,31,0), /* move $2 to COP0 DeSave */ - MIPS32_LUI(2,UPPER16(MIPS32_PRACC_PARAM_OUT)), /* $2 = MIPS32_PRACC_PARAM_OUT */ - MIPS32_ORI(2,2,LOWER16(MIPS32_PRACC_PARAM_OUT)), - MIPS32_SW(0,0*4,2), /* sw $0,0*4($2) */ - MIPS32_SW(1,1*4,2), /* sw $1,1*4($2) */ - MIPS32_SW(15,15*4,2), /* sw $15,15*4($2) */ - MIPS32_MFC0(2,31,0), /* move COP0 DeSave to $2 */ - MIPS32_MTC0(15,31,0), /* move $15 to COP0 DeSave */ - MIPS32_LUI(15,UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ - MIPS32_ORI(15,15,LOWER16(MIPS32_PRACC_STACK)), - MIPS32_SW(1,0,15), /* sw $1,($15) */ - MIPS32_SW(2,0,15), /* sw $2,($15) */ - MIPS32_LUI(1,UPPER16(MIPS32_PRACC_PARAM_OUT)), /* $1 = MIPS32_PRACC_PARAM_OUT */ - MIPS32_ORI(1,1,LOWER16(MIPS32_PRACC_PARAM_OUT)), - MIPS32_SW(2,2*4,1), /* sw $2,2*4($1) */ - MIPS32_SW(3,3*4,1), /* sw $3,3*4($1) */ - MIPS32_SW(4,4*4,1), /* sw $4,4*4($1) */ - MIPS32_SW(5,5*4,1), /* sw $5,5*4($1) */ - MIPS32_SW(6,6*4,1), /* sw $6,6*4($1) */ - MIPS32_SW(7,7*4,1), /* sw $7,7*4($1) */ - MIPS32_SW(8,8*4,1), /* sw $8,8*4($1) */ - MIPS32_SW(9,9*4,1), /* sw $9,9*4($1) */ - MIPS32_SW(10,10*4,1), /* sw $10,10*4($1) */ - MIPS32_SW(11,11*4,1), /* sw $11,11*4($1) */ - MIPS32_SW(12,12*4,1), /* sw $12,12*4($1) */ - MIPS32_SW(13,13*4,1), /* sw $13,13*4($1) */ - MIPS32_SW(14,14*4,1), /* sw $14,14*4($1) */ - MIPS32_SW(16,16*4,1), /* sw $16,16*4($1) */ - MIPS32_SW(17,17*4,1), /* sw $17,17*4($1) */ - MIPS32_SW(18,18*4,1), /* sw $18,18*4($1) */ - MIPS32_SW(19,19*4,1), /* sw $19,19*4($1) */ - MIPS32_SW(20,20*4,1), /* sw $20,20*4($1) */ - MIPS32_SW(21,21*4,1), /* sw $21,21*4($1) */ - MIPS32_SW(22,22*4,1), /* sw $22,22*4($1) */ - MIPS32_SW(23,23*4,1), /* sw $23,23*4($1) */ - MIPS32_SW(24,24*4,1), /* sw $24,24*4($1) */ - MIPS32_SW(25,25*4,1), /* sw $25,25*4($1) */ - MIPS32_SW(26,26*4,1), /* sw $26,26*4($1) */ - MIPS32_SW(27,27*4,1), /* sw $27,27*4($1) */ - MIPS32_SW(28,28*4,1), /* sw $28,28*4($1) */ - MIPS32_SW(29,29*4,1), /* sw $29,29*4($1) */ - MIPS32_SW(30,30*4,1), /* sw $30,30*4($1) */ - MIPS32_SW(31,31*4,1), /* sw $31,31*4($1) */ - - MIPS32_MFC0(2,12,0), /* move status to $2 */ - MIPS32_SW(2,32*4,1), /* sw $2,32*4($1) */ + MIPS32_MTC0(2, 31, 0), /* move $2 to COP0 DeSave */ + MIPS32_LUI(2, UPPER16(MIPS32_PRACC_PARAM_OUT)), /* $2 = MIPS32_PRACC_PARAM_OUT */ + MIPS32_ORI(2, 2, LOWER16(MIPS32_PRACC_PARAM_OUT)), + MIPS32_SW(0, 0*4, 2), /* sw $0,0*4($2) */ + MIPS32_SW(1, 1*4, 2), /* sw $1,1*4($2) */ + MIPS32_SW(15, 15*4, 2), /* sw $15,15*4($2) */ + MIPS32_MFC0(2, 31, 0), /* move COP0 DeSave to $2 */ + MIPS32_MTC0(15, 31, 0), /* move $15 to COP0 DeSave */ + MIPS32_LUI(15, UPPER16(MIPS32_PRACC_STACK)), /* $15 = MIPS32_PRACC_STACK */ + MIPS32_ORI(15, 15, LOWER16(MIPS32_PRACC_STACK)), + MIPS32_SW(1, 0, 15), /* sw $1,($15) */ + MIPS32_SW(2, 0, 15), /* sw $2,($15) */ + MIPS32_LUI(1, UPPER16(MIPS32_PRACC_PARAM_OUT)), /* $1 = MIPS32_PRACC_PARAM_OUT */ + MIPS32_ORI(1, 1, LOWER16(MIPS32_PRACC_PARAM_OUT)), + MIPS32_SW(2, 2*4, 1), /* sw $2,2*4($1) */ + MIPS32_SW(3, 3*4, 1), /* sw $3,3*4($1) */ + MIPS32_SW(4, 4*4, 1), /* sw $4,4*4($1) */ + MIPS32_SW(5, 5*4, 1), /* sw $5,5*4($1) */ + MIPS32_SW(6, 6*4, 1), /* sw $6,6*4($1) */ + MIPS32_SW(7, 7*4, 1), /* sw $7,7*4($1) */ + MIPS32_SW(8, 8*4, 1), /* sw $8,8*4($1) */ + MIPS32_SW(9, 9*4, 1), /* sw $9,9*4($1) */ + MIPS32_SW(10, 10*4, 1), /* sw $10,10*4($1) */ + MIPS32_SW(11, 11*4, 1), /* sw $11,11*4($1) */ + MIPS32_SW(12, 12*4, 1), /* sw $12,12*4($1) */ + MIPS32_SW(13, 13*4, 1), /* sw $13,13*4($1) */ + MIPS32_SW(14, 14*4, 1), /* sw $14,14*4($1) */ + MIPS32_SW(16, 16*4, 1), /* sw $16,16*4($1) */ + MIPS32_SW(17, 17*4, 1), /* sw $17,17*4($1) */ + MIPS32_SW(18, 18*4, 1), /* sw $18,18*4($1) */ + MIPS32_SW(19, 19*4, 1), /* sw $19,19*4($1) */ + MIPS32_SW(20, 20*4, 1), /* sw $20,20*4($1) */ + MIPS32_SW(21, 21*4, 1), /* sw $21,21*4($1) */ + MIPS32_SW(22, 22*4, 1), /* sw $22,22*4($1) */ + MIPS32_SW(23, 23*4, 1), /* sw $23,23*4($1) */ + MIPS32_SW(24, 24*4, 1), /* sw $24,24*4($1) */ + MIPS32_SW(25, 25*4, 1), /* sw $25,25*4($1) */ + MIPS32_SW(26, 26*4, 1), /* sw $26,26*4($1) */ + MIPS32_SW(27, 27*4, 1), /* sw $27,27*4($1) */ + MIPS32_SW(28, 28*4, 1), /* sw $28,28*4($1) */ + MIPS32_SW(29, 29*4, 1), /* sw $29,29*4($1) */ + MIPS32_SW(30, 30*4, 1), /* sw $30,30*4($1) */ + MIPS32_SW(31, 31*4, 1), /* sw $31,31*4($1) */ + + MIPS32_MFC0(2, 12, 0), /* move status to $2 */ + MIPS32_SW(2, 32*4, 1), /* sw $2,32*4($1) */ MIPS32_MFLO(2), /* move lo to $2 */ - MIPS32_SW(2,33*4,1), /* sw $2,33*4($1) */ + MIPS32_SW(2, 33*4, 1), /* sw $2,33*4($1) */ MIPS32_MFHI(2), /* move hi to $2 */ - MIPS32_SW(2,34*4,1), /* sw $2,34*4($1) */ - MIPS32_MFC0(2,8,0), /* move badvaddr to $2 */ - MIPS32_SW(2,35*4,1), /* sw $2,35*4($1) */ - MIPS32_MFC0(2,13,0), /* move cause to $2 */ - MIPS32_SW(2,36*4,1), /* sw $2,36*4($1) */ - MIPS32_MFC0(2,24,0), /* move depc (pc) to $2 */ - MIPS32_SW(2,37*4,1), /* sw $2,37*4($1) */ - - MIPS32_LW(2,0,15), /* lw $2,($15) */ - MIPS32_LW(1,0,15), /* lw $1,($15) */ + MIPS32_SW(2, 34*4, 1), /* sw $2,34*4($1) */ + MIPS32_MFC0(2, 8, 0), /* move badvaddr to $2 */ + MIPS32_SW(2, 35*4, 1), /* sw $2,35*4($1) */ + MIPS32_MFC0(2, 13, 0), /* move cause to $2 */ + MIPS32_SW(2, 36*4, 1), /* sw $2,36*4($1) */ + MIPS32_MFC0(2, 24, 0), /* move depc (pc) to $2 */ + MIPS32_SW(2, 37*4, 1), /* sw $2,37*4($1) */ + + MIPS32_LW(2, 0, 15), /* lw $2,($15) */ + MIPS32_LW(1, 0, 15), /* lw $1,($15) */ MIPS32_B(NEG16(58)), /* b start */ - MIPS32_MFC0(15,31,0), /* move COP0 DeSave to $15 */ + MIPS32_MFC0(15, 31, 0), /* move COP0 DeSave to $15 */ }; int retval; @@ -1260,41 +1216,41 @@ int mips32_pracc_read_regs(struct mips_ejtag *ejtag_info, uint32_t *regs) * 3. data ... */ int mips32_pracc_fastdata_xfer(struct mips_ejtag *ejtag_info, struct working_area *source, - int write_t, uint32_t addr, int count, uint32_t *buf) + int write_t, uint32_t addr, int count, uint32_t *buf) { uint32_t handler_code[] = { /* caution when editing, table is modified below */ /* r15 points to the start of this code */ - MIPS32_SW(8,MIPS32_FASTDATA_HANDLER_SIZE - 4,15), - MIPS32_SW(9,MIPS32_FASTDATA_HANDLER_SIZE - 8,15), - MIPS32_SW(10,MIPS32_FASTDATA_HANDLER_SIZE - 12,15), - MIPS32_SW(11,MIPS32_FASTDATA_HANDLER_SIZE - 16,15), + MIPS32_SW(8, MIPS32_FASTDATA_HANDLER_SIZE - 4, 15), + MIPS32_SW(9, MIPS32_FASTDATA_HANDLER_SIZE - 8, 15), + MIPS32_SW(10, MIPS32_FASTDATA_HANDLER_SIZE - 12, 15), + MIPS32_SW(11, MIPS32_FASTDATA_HANDLER_SIZE - 16, 15), /* start of fastdata area in t0 */ - MIPS32_LUI(8,UPPER16(MIPS32_PRACC_FASTDATA_AREA)), - MIPS32_ORI(8,8,LOWER16(MIPS32_PRACC_FASTDATA_AREA)), - MIPS32_LW(9,0,8), /* start addr in t1 */ - MIPS32_LW(10,0,8), /* end addr to t2 */ + MIPS32_LUI(8, UPPER16(MIPS32_PRACC_FASTDATA_AREA)), + MIPS32_ORI(8, 8, LOWER16(MIPS32_PRACC_FASTDATA_AREA)), + MIPS32_LW(9, 0, 8), /* start addr in t1 */ + MIPS32_LW(10, 0, 8), /* end addr to t2 */ /* loop: */ - /* 8 */ MIPS32_LW(11,0,0), /* lw t3,[t8 | r9] */ - /* 9 */ MIPS32_SW(11,0,0), /* sw t3,[r9 | r8] */ - MIPS32_BNE(10,9,NEG16(3)), /* bne $t2,t1,loop */ - MIPS32_ADDI(9,9,4), /* addi t1,t1,4 */ - - MIPS32_LW(8,MIPS32_FASTDATA_HANDLER_SIZE - 4,15), - MIPS32_LW(9,MIPS32_FASTDATA_HANDLER_SIZE - 8,15), - MIPS32_LW(10,MIPS32_FASTDATA_HANDLER_SIZE - 12,15), - MIPS32_LW(11,MIPS32_FASTDATA_HANDLER_SIZE - 16,15), - - MIPS32_LUI(15,UPPER16(MIPS32_PRACC_TEXT)), - MIPS32_ORI(15,15,LOWER16(MIPS32_PRACC_TEXT)), - MIPS32_JR(15), /* jr start */ - MIPS32_MFC0(15,31,0), /* move COP0 DeSave to $15 */ + /* 8 */ MIPS32_LW(11, 0, 0), /* lw t3,[t8 | r9] */ + /* 9 */ MIPS32_SW(11, 0, 0), /* sw t3,[r9 | r8] */ + MIPS32_BNE(10, 9, NEG16(3)), /* bne $t2,t1,loop */ + MIPS32_ADDI(9, 9, 4), /* addi t1,t1,4 */ + + MIPS32_LW(8, MIPS32_FASTDATA_HANDLER_SIZE - 4, 15), + MIPS32_LW(9, MIPS32_FASTDATA_HANDLER_SIZE - 8, 15), + MIPS32_LW(10, MIPS32_FASTDATA_HANDLER_SIZE - 12, 15), + MIPS32_LW(11, MIPS32_FASTDATA_HANDLER_SIZE - 16, 15), + + MIPS32_LUI(15, UPPER16(MIPS32_PRACC_TEXT)), + MIPS32_ORI(15, 15, LOWER16(MIPS32_PRACC_TEXT)), + MIPS32_JR(15), /* jr start */ + MIPS32_MFC0(15, 31, 0), /* move COP0 DeSave to $15 */ }; uint32_t jmp_code[] = { - MIPS32_MTC0(15,31,0), /* move $15 to COP0 DeSave */ - /* 1 */ MIPS32_LUI(15,0), /* addr of working area added below */ - /* 2 */ MIPS32_ORI(15,15,0), /* addr of working area added below */ + MIPS32_MTC0(15, 31, 0), /* move $15 to COP0 DeSave */ + /* 1 */ MIPS32_LUI(15, 0), /* addr of working area added below */ + /* 2 */ MIPS32_ORI(15, 15, 0), /* addr of working area added below */ MIPS32_JR(15), /* jump to ram program */ MIPS32_NOP, }; @@ -1305,20 +1261,16 @@ int mips32_pracc_fastdata_xfer(struct mips_ejtag *ejtag_info, struct working_are if (source->size < MIPS32_FASTDATA_HANDLER_SIZE) return ERROR_TARGET_RESOURCE_NOT_AVAILABLE; - if (write_t) - { - handler_code[8] = MIPS32_LW(11,0,8); /* load data from probe at fastdata area */ - handler_code[9] = MIPS32_SW(11,0,9); /* store data to RAM @ r9 */ - } - else - { - handler_code[8] = MIPS32_LW(11,0,9); /* load data from RAM @ r9 */ - handler_code[9] = MIPS32_SW(11,0,8); /* store data to probe at fastdata area */ + if (write_t) { + handler_code[8] = MIPS32_LW(11, 0, 8); /* load data from probe at fastdata area */ + handler_code[9] = MIPS32_SW(11, 0, 9); /* store data to RAM @ r9 */ + } else { + handler_code[8] = MIPS32_LW(11, 0, 9); /* load data from RAM @ r9 */ + handler_code[9] = MIPS32_SW(11, 0, 8); /* store data to probe at fastdata area */ } /* write program into RAM */ - if (write_t != ejtag_info->fast_access_save) - { + if (write_t != ejtag_info->fast_access_save) { mips32_pracc_write_mem32(ejtag_info, source->address, ARRAY_SIZE(handler_code), handler_code); /* save previous operation to speed to any consecutive read/writes */ ejtag_info->fast_access_save = write_t; @@ -1329,9 +1281,9 @@ int mips32_pracc_fastdata_xfer(struct mips_ejtag *ejtag_info, struct working_are jmp_code[1] |= UPPER16(source->address); jmp_code[2] |= LOWER16(source->address); - for (i = 0; i < (int) ARRAY_SIZE(jmp_code); i++) - { - if ((retval = wait_for_pracc_rw(ejtag_info, &ejtag_ctrl)) != ERROR_OK) + for (i = 0; i < (int) ARRAY_SIZE(jmp_code); i++) { + retval = wait_for_pracc_rw(ejtag_info, &ejtag_ctrl); + if (retval != ERROR_OK) return retval; mips_ejtag_set_instr(ejtag_info, EJTAG_INST_DATA); @@ -1343,7 +1295,8 @@ int mips32_pracc_fastdata_xfer(struct mips_ejtag *ejtag_info, struct working_are mips_ejtag_drscan_32_out(ejtag_info, ejtag_ctrl); } - if ((retval = wait_for_pracc_rw(ejtag_info, &ejtag_ctrl)) != ERROR_OK) + retval = wait_for_pracc_rw(ejtag_info, &ejtag_ctrl); + if (retval != ERROR_OK) return retval; /* next fetch to dmseg should be in FASTDATA_AREA, check */ @@ -1357,7 +1310,8 @@ int mips32_pracc_fastdata_xfer(struct mips_ejtag *ejtag_info, struct working_are return ERROR_FAIL; /* wait PrAcc pending bit for FASTDATA write */ - if ((retval = wait_for_pracc_rw(ejtag_info, &ejtag_ctrl)) != ERROR_OK) + retval = wait_for_pracc_rw(ejtag_info, &ejtag_ctrl); + if (retval != ERROR_OK) return retval; /* Send the load start address */ @@ -1369,19 +1323,20 @@ int mips32_pracc_fastdata_xfer(struct mips_ejtag *ejtag_info, struct working_are val = addr + (count - 1) * 4; mips_ejtag_fastdata_scan(ejtag_info, 1, &val); - for (i = 0; i < count; i++) - { - if ((retval = mips_ejtag_fastdata_scan(ejtag_info, write_t, buf++)) != ERROR_OK) + for (i = 0; i < count; i++) { + retval = mips_ejtag_fastdata_scan(ejtag_info, write_t, buf++); + if (retval != ERROR_OK) return retval; } - if ((retval = jtag_execute_queue()) != ERROR_OK) - { + retval = jtag_execute_queue(); + if (retval != ERROR_OK) { LOG_ERROR("fastdata load failed"); return retval; } - if ((retval = wait_for_pracc_rw(ejtag_info, &ejtag_ctrl)) != ERROR_OK) + retval = wait_for_pracc_rw(ejtag_info, &ejtag_ctrl); + if (retval != ERROR_OK) return retval; address = 0; |