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

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_47/] [or1ksim/] [debug/] [debug_unit.c] - Diff between revs 884 and 997

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

Rev 884 Rev 997
Line 208... Line 208...
 
 
int DebugGetRegister(unsigned int address, unsigned long* data)
int DebugGetRegister(unsigned int address, unsigned long* data)
{
{
  int err;
  int err;
#ifdef DEBUG_JTAG
#ifdef DEBUG_JTAG
  printf("Debug get register %x\n",address);
  PRINTF("Debug get register %x\n",address);
  fflush(stdout);
  fflush(stdout);
#endif
#endif
  switch(current_scan_chain)
  switch(current_scan_chain)
    {
    {
    case JTAG_CHAIN_DEBUG_UNIT:
    case JTAG_CHAIN_DEBUG_UNIT:
Line 232... Line 232...
    case JTAG_CHAIN_WISHBONE:
    case JTAG_CHAIN_WISHBONE:
      err = GetWishboneMemory(address,data);
      err = GetWishboneMemory(address,data);
      break;
      break;
    }
    }
#ifdef DEBUG_JTAG
#ifdef DEBUG_JTAG
  printf("!get reg %x\n", *data);
  PRINTF("!get reg %x\n", *data);
  fflush(stdout);
  fflush(stdout);
#endif
#endif
  return err;
  return err;
}
}
 
 
int DebugSetRegister(unsigned int address,unsigned long data)
int DebugSetRegister(unsigned int address,unsigned long data)
{
{
  int err;
  int err;
#ifdef DEBUG_JTAG
#ifdef DEBUG_JTAG
  printf("Debug set register %x <- %x\n", address, data);
  PRINTF("Debug set register %x <- %x\n", address, data);
  fflush(stdout);
  fflush(stdout);
#endif
#endif
  switch(current_scan_chain)
  switch(current_scan_chain)
    {
    {
    case JTAG_CHAIN_DEBUG_UNIT:
    case JTAG_CHAIN_DEBUG_UNIT:
Line 265... Line 265...
    case JTAG_CHAIN_WISHBONE:
    case JTAG_CHAIN_WISHBONE:
      err = debug_set_mem (address, data);
      err = debug_set_mem (address, data);
      break;
      break;
    }
    }
#ifdef DEBUG_JTAG
#ifdef DEBUG_JTAG
  printf("!set reg\n");
  PRINTF("!set reg\n");
  fflush(stdout);
  fflush(stdout);
#endif
#endif
  return err;
  return err;
}
}
 
 
int DebugSetChain(int chain)
int DebugSetChain(int chain)
{
{
#ifdef DEBUG_JTAG
#ifdef DEBUG_JTAG
  printf("Debug set chain %x\n",chain);
  PRINTF("Debug set chain %x\n",chain);
  fflush(stdout);
  fflush(stdout);
#endif
#endif
  switch(chain)
  switch(chain)
    {
    {
    case JTAG_CHAIN_DEBUG_UNIT:
    case JTAG_CHAIN_DEBUG_UNIT:
Line 290... Line 290...
    default: /* All other chains not implemented */
    default: /* All other chains not implemented */
      return JTAG_PROXY_INVALID_CHAIN;
      return JTAG_PROXY_INVALID_CHAIN;
    }
    }
 
 
#ifdef DEBUG_JTAG
#ifdef DEBUG_JTAG
  printf("!set chain\n");
  PRINTF("!set chain\n");
  fflush(stdout);
  fflush(stdout);
#endif
#endif
  return 0;
  return 0;
}
}
 
 
Line 336... Line 336...
    default:
    default:
      err = JTAG_PROXY_INVALID_ADDRESS;
      err = JTAG_PROXY_INVALID_ADDRESS;
      break;
      break;
    }
    }
#ifdef DEBUG_JTAG
#ifdef DEBUG_JTAG
  printf("set_devint_reg %08x = %08x\n", address, data);
  PRINTF("set_devint_reg %08x = %08x\n", address, data);
  fflush(stdout);
  fflush(stdout);
#endif
#endif
  return err;
  return err;
}
}
 
 
Line 369... Line 369...
    case DEVELOPINT_RECBP0:   value = development.recbp; break;
    case DEVELOPINT_RECBP0:   value = development.recbp; break;
    default:                  err = JTAG_PROXY_INVALID_ADDRESS; break;
    default:                  err = JTAG_PROXY_INVALID_ADDRESS; break;
  }
  }
 
 
#ifdef DEBUG_JTAG
#ifdef DEBUG_JTAG
  printf("get_devint_reg %08x = %08x\n", address, value);
  PRINTF("get_devint_reg %08x = %08x\n", address, value);
  fflush(stdout);
  fflush(stdout);
#endif
#endif
  *data = value;
  *data = value;
  return err;
  return err;
}
}
Line 433... Line 433...
  unsigned long drr = mfspr (SPR_DRR);
  unsigned long drr = mfspr (SPR_DRR);
 
 
  &debug_ignore_exception;
  &debug_ignore_exception;
 
 
#if DEBUG_JTAG
#if DEBUG_JTAG
  printf ("dsr 0x%08x drr 0x%08x \n", dsr, drr);
  PRINTF ("dsr 0x%08x drr 0x%08x \n", dsr, drr);
#endif
#endif
 
 
  switch(except) {
  switch(except) {
    case EXCEPT_RESET:     drr |= result = dsr & SPR_DSR_RSTE; break;
    case EXCEPT_RESET:     drr |= result = dsr & SPR_DSR_RSTE; break;
    case EXCEPT_BUSERR:    drr |= result = dsr & SPR_DSR_BUSEE; break;
    case EXCEPT_BUSERR:    drr |= result = dsr & SPR_DSR_BUSEE; break;
Line 454... Line 454...
    case EXCEPT_TRAP:      drr |= result = dsr & SPR_DSR_TE; break;
    case EXCEPT_TRAP:      drr |= result = dsr & SPR_DSR_TE; break;
    default:
    default:
      break;
      break;
  }
  }
#if DEBUG_JTAG
#if DEBUG_JTAG
  printf ("dsr 0x%08x drr 0x%08x result %i\n", dsr, drr, result);
  PRINTF ("dsr 0x%08x drr 0x%08x result %i\n", dsr, drr, result);
#endif
#endif
 
 
  mtspr (SPR_DRR, drr);
  mtspr (SPR_DRR, drr);
  set_stall_state (result != 0);
  set_stall_state (result != 0);
  return (result != 0);
  return (result != 0);

powered by: WebSVN 2.1.0

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