dspShow.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:3k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* dspShow.c - dsp show routines */
  2. /* Copyright 1984-1998 Wind River Systems, Inc. */
  3. #include "copyright_wrs.h"
  4. /*
  5. modification history
  6. --------------------
  7. 01a,22jul98,mem  written.
  8. */
  9. /*
  10. DESCRIPTION
  11. This library provides the routines necessary to show a task's optional 
  12. dsp context.  To use this facility, it must first be
  13. installed using dspShowInit().  The facility is included
  14. automatically when INCLUDE_SHOW_ROUTINES and INCLUDE_DSP are defined
  15. in configAll.h. 
  16. This library enhances task information routines, such as ti(), to display
  17. the dsp context.
  18. INCLUDE FILES: dspLib.h 
  19. SEE ALSO: dspLib
  20. */
  21. #include "vxWorks.h"
  22. #include "stdio.h"
  23. #include "regs.h"
  24. #include "dspLib.h"
  25. #include "private/funcBindP.h"
  26. /* global variables */
  27. char *dspTaskRegsFmt = "%-6.6s = %8x";
  28. /******************************************************************************
  29. *
  30. * dspShowInit - initialize the dsp show facility
  31. *
  32. * This routine links the dsp show facility into the VxWorks system.
  33. * The facility is included automatically when %INCLUDE_SHOW_ROUTINES and
  34. * %INCLUDE_DSP are defined
  35. * in configAll.h.
  36. *
  37. * RETURNS: N/A
  38. */
  39. void dspShowInit (void)
  40.     {
  41.     /* avoid direct coupling with dspShow with this global variable */
  42.     _func_dspTaskRegsShow = (FUNCPTR) dspTaskRegsShow;
  43.     }
  44. /*******************************************************************************
  45. *
  46. * dspTaskRegsShow - print the contents of a task's dsp registers
  47. *
  48. * This routine prints to standard output the contents of a task's
  49. * dsp registers.
  50. *
  51. * RETURNS: N/A
  52. */
  53. void dspTaskRegsShow
  54.     (
  55.     int task /* task to display dsp registers for */
  56.     )
  57.     {
  58.     int ix;
  59.     ULONG * dspTmp;
  60.     ULONG * dspCtlTmp;
  61.     DSPREG_SET dspRegSet;
  62.     if ((dspProbe() != OK) || (dspTaskRegsGet (task, &dspRegSet) == ERROR))
  63. return;
  64.     /* Some architectures organize floats sequentially, but to
  65.      * display them as doubles the floats need to be word swapped.
  66.      */
  67.     if (dspDisplayHookRtn != NULL)
  68.         (* dspDisplayHookRtn) (&dspRegSet);
  69.     /* print dsp control registers */
  70.     for (ix = 0; dspCtlRegName[ix].regName != (char *) NULL; ix++)
  71. {
  72. if ((ix % 4) == 0)
  73.     printf ("n");
  74. else
  75.     printf ("%3s","");
  76. dspCtlTmp = (ULONG *) ((int)&dspRegSet + dspCtlRegName[ix].regOff);
  77. printf (dspTaskRegsFmt, dspCtlRegName[ix].regName, *dspCtlTmp);
  78. }
  79.     /* print dsp data registers */
  80.     for (ix = 0; dspRegName[ix].regName != (char *) NULL; ix++)
  81. {
  82. if ((ix % 4) == 0)
  83.     printf ("n");
  84. else
  85.     printf ("%3s","");
  86. dspTmp = (ULONG *) ((int)&dspRegSet + dspRegName[ix].regOff);
  87. printf (dspTaskRegsFmt, dspRegName[ix].regName, *dspTmp);
  88. }
  89.     printf ("n");
  90.     }