Browse Source

- correctly mask out bits that aren't part of a copied buffer

- fixed arm926ej-s CP15 register access handling
- correctly identify SYSCLK source in LPC3180 NAND flash controller driver


git-svn-id: svn://svn.berlios.de/openocd/trunk@139 b42882b7-edfa-0310-969c-e2dbd0fdcd60
tags/v0.1.0
drath 17 years ago
parent
commit
999f86b92b
3 changed files with 9 additions and 3 deletions
  1. +1
    -1
      src/flash/lpc3180_nand_controller.c
  2. +6
    -0
      src/helper/binarybuffer.c
  3. +2
    -2
      src/target/arm926ejs.c

+ 1
- 1
src/flash/lpc3180_nand_controller.c View File

@@ -150,7 +150,7 @@ float lpc3180_cycle_time(lpc3180_nand_controller_t *lpc3180_info)
/* determine current SYSCLK (13'MHz or main oscillator) */
target_read_u32(target, 0x40004050, &sysclk_ctrl);
if (sysclk_ctrl & 1)
if ((sysclk_ctrl & 1) == 0)
sysclk = lpc3180_info->osc_freq;
else
sysclk = 13000;


+ 6
- 0
src/helper/binarybuffer.c View File

@@ -101,6 +101,12 @@ u8* buf_cpy(u8 *from, u8 *to, int size)

for (i = 0; i < num_bytes; i++)
to[i] = from[i];
/* mask out bits that don't belong to the buffer */
if (size % 8)
{
to[size / 8] &= (0xff >> (8 - (size % 8)));
}

return to;
}


+ 2
- 2
src/target/arm926ejs.c View File

@@ -158,7 +158,7 @@ int arm926ejs_read_cp15(target_t *target, u32 address, u32 *value)
{
jtag_add_dr_scan(4, fields, -1);
jtag_execute_queue();
} while ((access & 1) != 1);
} while (buf_get_u32(&access, 0, 1) != 1);

#ifdef _DEBUG_INSTRUCTION_EXECUTION_
DEBUG("addr: 0x%x value: %8.8x", address, *value);
@@ -234,7 +234,7 @@ int arm926ejs_write_cp15(target_t *target, u32 address, u32 value)
{
jtag_add_dr_scan(4, fields, -1);
jtag_execute_queue();
} while (access != 1);
} while (buf_get_u32(&access, 0, 1) != 1);

#ifdef _DEBUG_INSTRUCTION_EXECUTION_
DEBUG("addr: 0x%x value: %8.8x", address, value);


Loading…
Cancel
Save