示例#1
0
/** write 32 bit data value */
static void FASTCALL
gdb_write32( void *data, uint32_t adr, uint32_t val) {
  struct gdb_stub_state *stub = (struct gdb_stub_state *)data;
  int breakpoint;

  /* pass down to the CPU's memory interface */
  stub->cpu_memio->write32( stub->cpu_memio->data, adr, val);

  breakpoint = check_breaks_gdb( stub, stub->write_breakpoints, adr, 4,
                                 STOP_WATCHPOINT);
  if ( !breakpoint)
    check_breaks_gdb( stub, stub->access_breakpoints, adr, 4,
                      STOP_AWATCHPOINT);
}
示例#2
0
/** read 32 bit data value */
static uint32_t FASTCALL
gdb_read32( void *data, uint32_t adr) {
  struct gdb_stub_state *stub = (struct gdb_stub_state *)data;
  uint32_t value;
  int breakpoint;

  /* pass down to the CPU's memory interface */
  value = stub->cpu_memio->read32( stub->cpu_memio->data, adr);

  breakpoint = check_breaks_gdb( stub, stub->read_breakpoints, adr, 4,
                                 STOP_RWATCHPOINT);
  if ( !breakpoint)
    check_breaks_gdb( stub, stub->access_breakpoints, adr, 4,
                      STOP_AWATCHPOINT);

  return value;
}
示例#3
0
static uint16_t FASTCALL gdb_prefetch16( void *data, uint32_t adr) {
  struct gdb_stub_state *stub = (struct gdb_stub_state *)data;
  int breakpoint;

  breakpoint = check_breaks_gdb( stub, stub->instr_breakpoints, adr, 2,
                                 STOP_BREAKPOINT);

    //return stub->real_cpu_memio->prefetch16( stub->real_cpu_memio->data, adr);
  return 0;
}
示例#4
0
static uint16_t FASTCALL
gdb_prefetch16( void *data, uint32_t adr) {
  struct gdb_stub_state *stub = (struct gdb_stub_state *)data;
  uint16_t value = 0;
  int breakpoint;

  breakpoint = check_breaks_gdb( stub, stub->instr_breakpoints, adr, 2,
                                 STOP_BREAKPOINT);

  if ( !breakpoint) {
    /* pass down to the real memory interace */
    value = stub->real_cpu_memio->prefetch16( stub->real_cpu_memio->data,
                                              adr);
  }

  return value;
}