usrBreakpoint.c
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:1k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* usrBreakpoint.c - user configurable breakpoint management */
  2. /* Copyright 1998 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01a,13jan98,dbt  written.
  7. */
  8. /*
  9. DESCRIPTION
  10. This file contains user configurable breakpoint management routines used 
  11. by target shell debugger and WDB debugger.
  12. This file is included by usrConfig.c.
  13. SEE ALSO: usrExtra.c
  14. NOMANUAL
  15. */
  16. #ifndef  __INCusrBreakpointc
  17. #define  __INCusrBreakpointc
  18. /* includes */
  19. #include "vxWorks.h"
  20. #include "vxLib.h"
  21. #include "cacheLib.h"
  22. /******************************************************************************
  23. *
  24. * usrBreakpointSet - set a text breakpoint.
  25. *
  26. * This routine is used by both target shell and WDB debuggers to set a 
  27. * text breakpoint in memory.
  28. * This routine can be modified by the user to set a breakpoint differently
  29. * (for example to set a text breakpoint in a ROM emulator).
  30. *
  31. * RETURNS : NA
  32. *
  33. * NOMANUAL
  34. */ 
  35. void usrBreakpointSet
  36.     (
  37.     INSTR * addr, /* breakpoint address */
  38.     INSTR  value /* breakpoint instruction */
  39.     )
  40.     {
  41.     void * pageAddr; /* page address */
  42.     int pageSize; /* page size */
  43.     if ( addr == (INSTR *)NULL )
  44.         return; /* no error messages available! */
  45.     pageSize = VM_PAGE_SIZE_GET();
  46.     pageAddr = (void *) ((UINT) addr & ~(pageSize - 1));
  47.     VM_TEXT_PAGE_PROTECT(pageAddr, FALSE);
  48.     *addr = value;
  49.     VM_TEXT_PAGE_PROTECT(pageAddr, TRUE);
  50.     CACHE_TEXT_UPDATE (addr, sizeof (INSTR));
  51.     }
  52. #endif /* __INCusrBreakpointc */