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

VxWorks

开发平台:

C/C++

  1. /* usrWdbTaskAltivec.c - optional altivec support for the task WDB agent */
  2. /* Copyright 2001 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01a,15apr,kab  created
  7. */
  8. /*
  9. DESCRIPTION
  10. This library configures the task mode WDB agent's altivec support.
  11. */
  12. /* externals */
  13. extern FUNCPTR wdbTaskAvRegsSet;
  14. extern FUNCPTR wdbTaskAvRegsGet;
  15. extern BOOL     wdbTgtHasAltivec (void);
  16. /* forward static declarations */
  17. static STATUS _wdbTaskAvRegsSet (WDB_CTX * pContext, char * pRegSet);
  18. static STATUS _wdbTaskAvRegsGet (WDB_CTX * pContext, char ** ppRegSet);
  19. /******************************************************************************
  20. *
  21. * _wdbTaskAvRegsSet - set a tasks altivec regs
  22. */
  23. static STATUS _wdbTaskAvRegsSet
  24.     (
  25.     WDB_CTX *    pContext,
  26.     char *       pRegSet
  27.     )
  28.     {
  29.     WIND_TCB * pTcb = taskTcb (pContext->contextId);
  30.     if ((pTcb == NULL) || (ALTIVEC_CONTEXT_GET(pTcb) == NULL))
  31.         return (ERROR);
  32.     bcopy (pRegSet, (char *)ALTIVEC_CONTEXT_GET(pTcb), 
  33.      sizeof (ALTIVEC_CONTEXT));
  34.     return (OK);
  35.     }
  36. /******************************************************************************
  37. *
  38. * _wdbTaskAvRegsGet - Get a tasks altivec regs
  39. */
  40. static STATUS _wdbTaskAvRegsGet
  41.     (
  42.     WDB_CTX *           pContext,
  43.     char **             ppRegSet
  44.     )
  45.     {
  46.     WIND_TCB * pTcb = taskTcb (pContext->contextId);
  47.     if ((pTcb == NULL) || (ALTIVEC_CONTEXT_GET(pTcb) == NULL))
  48.         return (ERROR);
  49.     *ppRegSet = (char *)ALTIVEC_CONTEXT_GET(pTcb);
  50.     return (OK);
  51.     }
  52. /******************************************************************************
  53. *
  54. * wdbTaskAltivecInit - initialize altivec support
  55. *
  56. * This routine initializes altivec support for the task
  57. * mode agent.
  58. *
  59. * NOMANUAL
  60. */
  61. void wdbTaskAltivecInit (void)
  62.     {
  63.     /* install task mode altivec get/set routines */
  64.     if (wdbTgtHasAltivec())
  65. {
  66. wdbTaskAvRegsSet = _wdbTaskAvRegsSet;
  67. wdbTaskAvRegsGet = _wdbTaskAvRegsGet;
  68. }
  69.     }