OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [stable_0_2_0_rc3/] [or1ksim/] [debug/] [debug_unit.c] - Diff between revs 1550 and 1557

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 1550 Rev 1557
Line 219... Line 219...
  return breakpoint;
  return breakpoint;
}
}
 
 
static DebugScanChainIDs current_scan_chain = JTAG_CHAIN_GLOBAL;
static DebugScanChainIDs current_scan_chain = JTAG_CHAIN_GLOBAL;
 
 
int DebugGetRegister(unsigned int address, unsigned long* data)
int DebugGetRegister(oraddr_t address, uorreg_t* data)
{
{
  int err=0;
  int err=0;
  TRACE_(jtag)("Debug get register %x\n",address);
  TRACE_(jtag)("Debug get register %x\n",address);
  switch(current_scan_chain)
  switch(current_scan_chain)
    {
    {
    case JTAG_CHAIN_DEBUG_UNIT:
    case JTAG_CHAIN_DEBUG_UNIT:
      *data = mfspr(address);
      *data = mfspr(address);
      TRACE_(jtag)("READ  (%08lx) = %08lx\n", address, *data);
      TRACE_(jtag)("READ  (%"PRIxADDR") = %"PRIxREG"\n", address, *data);
      break;
      break;
    case JTAG_CHAIN_TRACE:
    case JTAG_CHAIN_TRACE:
      *data = 0;  /* Scan chain not yet implemented */
      *data = 0;  /* Scan chain not yet implemented */
      break;
      break;
    case JTAG_CHAIN_DEVELOPMENT:
    case JTAG_CHAIN_DEVELOPMENT:
      err = get_devint_reg(address,data);
      err = get_devint_reg(address,data);
      break;
      break;
    case JTAG_CHAIN_WISHBONE:
    case JTAG_CHAIN_WISHBONE:
      err = debug_get_mem(address,data);
      err = debug_get_mem(address,data);
      break;
      break;
 
    default:
 
      err = JTAG_PROXY_INVALID_CHAIN;
    }
    }
  TRACE_(jtag)("!get reg %lx\n", *data);
  TRACE_(jtag)("!get reg %"PRIxREG"\n", *data);
  return err;
  return err;
}
}
 
 
int DebugSetRegister(unsigned int address,unsigned long data)
int DebugSetRegister(oraddr_t address, uorreg_t data)
{
{
  int err=0;
  int err=0;
  TRACE_(jtag)("Debug set register %x <- %lx\n", address, data);
  TRACE_(jtag)("Debug set register %"PRIxADDR" <- %"PRIxREG"\n", address, data);
  switch(current_scan_chain)
  switch(current_scan_chain)
    {
    {
    case JTAG_CHAIN_DEBUG_UNIT:
    case JTAG_CHAIN_DEBUG_UNIT:
      TRACE_(jtag)("WRITE (%08x) = %08lx\n", address, data);
      TRACE_(jtag)("WRITE (%"PRIxADDR") = %"PRIxREG"\n", address, data);
      mtspr(address, data);
      mtspr(address, data);
      break;
      break;
    case JTAG_CHAIN_TRACE:
    case JTAG_CHAIN_TRACE:
      err = JTAG_PROXY_ACCESS_EXCEPTION;
      err = JTAG_PROXY_ACCESS_EXCEPTION;
      break;
      break;
Line 262... Line 264...
      err = set_devint_reg (address, data);
      err = set_devint_reg (address, data);
      break;
      break;
    case JTAG_CHAIN_WISHBONE:
    case JTAG_CHAIN_WISHBONE:
      err = debug_set_mem (address, data);
      err = debug_set_mem (address, data);
      break;
      break;
 
    default:
 
      err = JTAG_PROXY_INVALID_CHAIN;
    }
    }
  TRACE_(jtag)("!set reg\n");
  TRACE_(jtag)("!set reg\n");
  return err;
  return err;
}
}
 
 
Line 288... Line 292...
}
}
 
 
void sim_reset ();
void sim_reset ();
 
 
/* Sets development interface register */
/* Sets development interface register */
int set_devint_reg(unsigned int address, unsigned long data)
int set_devint_reg(unsigned int address, uint32_t data)
{
{
  int err = 0;
  int err = 0;
  unsigned long value = data;
  unsigned long value = data;
  int old_value;
  int old_value;
 
 
Line 324... Line 328...
    case DEVELOPINT_RECBP0:  development.recbp = value; break;
    case DEVELOPINT_RECBP0:  development.recbp = value; break;
    default:
    default:
      err = JTAG_PROXY_INVALID_ADDRESS;
      err = JTAG_PROXY_INVALID_ADDRESS;
      break;
      break;
    }
    }
  TRACE_(jtag)("set_devint_reg %08x = %08lx\n", address, data);
  TRACE_(jtag)("set_devint_reg %08x = %"PRIx32"\n", address, data);
  return err;
  return err;
}
}
 
 
/* Gets development interface register */
/* Gets development interface register */
int get_devint_reg(unsigned int address,unsigned long *data)
int get_devint_reg(unsigned int address, uint32_t *data)
{
{
  int err = 0;
  int err = 0;
  unsigned long value = 0;
  unsigned long value = 0;
 
 
  switch(address) {
  switch(address) {
Line 361... Line 365...
  *data = value;
  *data = value;
  return err;
  return err;
}
}
 
 
/* Writes to bus address */
/* Writes to bus address */
int debug_set_mem (unsigned int address,unsigned long data)
int debug_set_mem (oraddr_t address, uint32_t data)
{
{
  int err = 0;
  int err = 0;
  TRACE_(jtag)("MEMWRITE (%08x) = %08lx\n", address, data);
  TRACE_(jtag)("MEMWRITE (%"PRIxADDR") = %"PRIx32"\n", address, data);
 
 
 
 
  if(!verify_memoryarea(address))
  if(!verify_memoryarea(address))
    err = JTAG_PROXY_INVALID_ADDRESS;
    err = JTAG_PROXY_INVALID_ADDRESS;
  else {
  else {
Line 378... Line 382...
  }
  }
  return err;
  return err;
}
}
 
 
/* Reads from bus address */
/* Reads from bus address */
int debug_get_mem(unsigned int address,unsigned long *data)
int debug_get_mem(oraddr_t address, uorreg_t *data)
{
{
  int err = 0;
  int err = 0;
  if(!verify_memoryarea(address))
  if(!verify_memoryarea(address))
    err = JTAG_PROXY_INVALID_ADDRESS;
    err = JTAG_PROXY_INVALID_ADDRESS;
  else
  else
  {
  {
          *data=eval_direct32(address, 0, 0);
          *data=eval_direct32(address, 0, 0);
  }
  }
  TRACE_(jtag)("MEMREAD  (%08x) = %08lx\n", address, *data);
  TRACE_(jtag)("MEMREAD  (%"PRIxADDR") = %"PRIxADDR"\n", address, *data);
  return err;
  return err;
}
}
 
 
/* debug_ignore_exception returns 1 if the exception should be ignored. */
/* debug_ignore_exception returns 1 if the exception should be ignored. */
int debug_ignore_exception (unsigned long except)
int debug_ignore_exception (unsigned long except)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.