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

VxWorks

开发平台:

C/C++

  1. /* taskArchLib.c - architecture-specific task management routines */
  2. /* Copyright 1984-2001 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01j,05jun02,wsl  remove reference to SPARC and i960
  7. 01i,20nov01,hdn  updated x86 specific sections
  8. 01h,14nov01,hbh  Updated for simulators.
  9. 01g,03mar00,zl   merged SH support into T2
  10. 01f,12mar99,p_m  Fixed SPR 20355 by documenting taskSRInit() for MIPS.
  11. 01e,25nov95,jdi  removed 29k stuff.
  12. 01d,10feb95,rhp  Update for R4000, 29K, i386/i486.
  13.             jdi  changed 80960 to i960.
  14. 01c,15feb93,jdi  made NOMANUAL: taskACWGet(), taskACWSet(), taskPCWGet(),
  15.  taskPCWSet(), taskSRInit(), taskTCWGet(), taskTCWSet().
  16. 01b,20jan93,jdi  documentation cleanup.
  17. 01a,23sep92,jdi  written, based on taskArchLib.c for
  18.  mc68k, sparc, i960, mips.
  19. */
  20. /*
  21. DESCRIPTION
  22. This library provides architecture-specific task management routines that set
  23. and examine architecture-dependent registers.  For information about
  24. architecture-independent task management facilities, see the manual entry
  25. for taskLib.
  26. NOTE: There are no application-level routines in taskArchLib for
  27. SimSolaris, SimNT or SH.
  28. INCLUDE FILES: regs.h, taskArchLib.h
  29. SEE ALSO: taskLib
  30. */
  31. /*******************************************************************************
  32. *
  33. * taskSRSet - set the task status register (MC680x0, MIPS, x86)
  34. *
  35. * This routine sets the status register of a task that is not running
  36. * (i.e., the TCB must not be that of the calling task).
  37. * Debugging facilities use this routine to set the trace bit in the 
  38. * status register of a task that is being single-stepped.
  39. *
  40. * .IP `x86':
  41. * The second parameter represents EFLAGS register and the size is 32 bit.
  42. *
  43. * RETURNS: OK, or ERROR if the task ID is invalid.
  44. */
  45. STATUS taskSRSet
  46.     (
  47.     int     tid,         /* task ID */
  48.     UINT16  sr           /* new SR  */
  49.     )
  50.     {
  51.     ...
  52.     }
  53. /******************************************************************************
  54. *
  55. * taskPCWGet - get the task processor control word (i960)
  56. *
  57. * This routine gets the task processor control word (PCW).
  58. *
  59. * RETURNS: The PCW of the specified task.
  60. *
  61. * NOMANUAL
  62. */
  63. int taskPCWGet
  64.     (
  65.     INT32 tid /* task ID */
  66.     )
  67.     {
  68.     ...
  69.     }
  70. /*******************************************************************************
  71. *
  72. * taskPCWSet - set the task processor control word (i960)
  73. *
  74. * This routine sets the processor control word of a non-executing task
  75. * (i.e., the TCB must not be that of the calling task).
  76. *
  77. * RETURNS: OK, or ERROR if the task ID is invalid.
  78. *
  79. * NOMANUAL
  80. */
  81. STATUS taskPCWSet
  82.     (
  83.     INT32  tid,  /* task ID */
  84.     UINT32  pcw /* new PCW */
  85.     )
  86.     {
  87.     ...
  88.     }
  89. /******************************************************************************
  90. *
  91. * taskACWGet - get the task arithmetic control word (i960)
  92. *
  93. * This routine gets the task arithmetic control word (ACW).
  94. *
  95. * RETURNS: The ACW of a specified task.
  96. *
  97. * NOMANUAL
  98. */
  99. int taskACWGet
  100.     (
  101.     INT32 tid /* task ID */
  102.     )
  103.     {
  104.     ...
  105.     }
  106. /*******************************************************************************
  107. *
  108. * taskACWSet - set the task arithmetic control word (i960)
  109. *
  110. * This routine sets the arithmetic control word of a non-executing task
  111. * (i.e., the TCB must not be that of the calling task).
  112. *
  113. * RETURNS: OK, or ERROR if the task ID is invalid.
  114. *
  115. * NOMANUAL
  116. */
  117. STATUS taskACWSet
  118.     (
  119.     INT32  tid,  /* task ID */
  120.     UINT32  acw /* new ACW */
  121.     )
  122.     {
  123.     ...
  124.     }
  125. /******************************************************************************
  126. *
  127. * taskTCWGet - get the task trace control word (i960)
  128. *
  129. * This routine gets the task trace control word (TCW).
  130. *
  131. * RETURNS: The TCW of a specified task.
  132. *
  133. * NOMANUAL
  134. */
  135. int taskTCWGet
  136.     (
  137.     INT32 tid /* task ID */
  138.     )
  139.     {
  140.     ...
  141.     }
  142. /*******************************************************************************
  143. *
  144. * taskTCWSet - set the task trace control word (i960)
  145. *
  146. * This routine sets the trace control word (TCW) of a non-executing 
  147. * task (i.e., the TCB must not be that of the calling 
  148. * task).  It is used by the debugging facilities to set the trace mode 
  149. * in the TCW of a task being debugged.
  150. *
  151. * RETURNS: OK, or ERROR if the task ID is invalid.
  152. *
  153. * NOMANUAL
  154. */
  155. STATUS taskTCWSet
  156.     (
  157.     INT32  tid,  /* task ID */
  158.     UINT32  tcw /* new TCW */
  159.     )
  160.     {
  161.     ...
  162.     }
  163. /*******************************************************************************
  164. *
  165. * taskSRInit - initialize the default task status register (MIPS)
  166. *
  167. * This routine sets the default status register for system-wide tasks.
  168. * All tasks will be spawned with the status register set to this value; thus, 
  169. * it must be called before kernelInit().
  170. *
  171. * RETURNS: The previous value of the default status register.
  172. */
  173. ULONG taskSRInit
  174.     (
  175.     ULONG  newSRValue  /* new default task status register  */
  176.     )
  177.     {
  178.     ...
  179.     }