taskArchLib.c
上传用户:nvosite88
上传日期:2007-01-17
资源大小:4983k
文件大小:5k
- /* taskArchLib.c - architecture-specific task management routines */
- /* Copyright 1984-2001 Wind River Systems, Inc. */
- /*
- modification history
- --------------------
- 01j,05jun02,wsl remove reference to SPARC and i960
- 01i,20nov01,hdn updated x86 specific sections
- 01h,14nov01,hbh Updated for simulators.
- 01g,03mar00,zl merged SH support into T2
- 01f,12mar99,p_m Fixed SPR 20355 by documenting taskSRInit() for MIPS.
- 01e,25nov95,jdi removed 29k stuff.
- 01d,10feb95,rhp Update for R4000, 29K, i386/i486.
- jdi changed 80960 to i960.
- 01c,15feb93,jdi made NOMANUAL: taskACWGet(), taskACWSet(), taskPCWGet(),
- taskPCWSet(), taskSRInit(), taskTCWGet(), taskTCWSet().
- 01b,20jan93,jdi documentation cleanup.
- 01a,23sep92,jdi written, based on taskArchLib.c for
- mc68k, sparc, i960, mips.
- */
- /*
- DESCRIPTION
- This library provides architecture-specific task management routines that set
- and examine architecture-dependent registers. For information about
- architecture-independent task management facilities, see the manual entry
- for taskLib.
- NOTE: There are no application-level routines in taskArchLib for
- SimSolaris, SimNT or SH.
- INCLUDE FILES: regs.h, taskArchLib.h
- SEE ALSO: taskLib
- */
- /*******************************************************************************
- *
- * taskSRSet - set the task status register (MC680x0, MIPS, x86)
- *
- * This routine sets the status register of a task that is not running
- * (i.e., the TCB must not be that of the calling task).
- * Debugging facilities use this routine to set the trace bit in the
- * status register of a task that is being single-stepped.
- *
- * .IP `x86':
- * The second parameter represents EFLAGS register and the size is 32 bit.
- *
- * RETURNS: OK, or ERROR if the task ID is invalid.
- */
- STATUS taskSRSet
- (
- int tid, /* task ID */
- UINT16 sr /* new SR */
- )
- {
- ...
- }
- /******************************************************************************
- *
- * taskPCWGet - get the task processor control word (i960)
- *
- * This routine gets the task processor control word (PCW).
- *
- * RETURNS: The PCW of the specified task.
- *
- * NOMANUAL
- */
- int taskPCWGet
- (
- INT32 tid /* task ID */
- )
- {
- ...
- }
- /*******************************************************************************
- *
- * taskPCWSet - set the task processor control word (i960)
- *
- * This routine sets the processor control word of a non-executing task
- * (i.e., the TCB must not be that of the calling task).
- *
- * RETURNS: OK, or ERROR if the task ID is invalid.
- *
- * NOMANUAL
- */
- STATUS taskPCWSet
- (
- INT32 tid, /* task ID */
- UINT32 pcw /* new PCW */
- )
- {
- ...
- }
- /******************************************************************************
- *
- * taskACWGet - get the task arithmetic control word (i960)
- *
- * This routine gets the task arithmetic control word (ACW).
- *
- * RETURNS: The ACW of a specified task.
- *
- * NOMANUAL
- */
- int taskACWGet
- (
- INT32 tid /* task ID */
- )
- {
- ...
- }
- /*******************************************************************************
- *
- * taskACWSet - set the task arithmetic control word (i960)
- *
- * This routine sets the arithmetic control word of a non-executing task
- * (i.e., the TCB must not be that of the calling task).
- *
- * RETURNS: OK, or ERROR if the task ID is invalid.
- *
- * NOMANUAL
- */
- STATUS taskACWSet
- (
- INT32 tid, /* task ID */
- UINT32 acw /* new ACW */
- )
- {
- ...
- }
- /******************************************************************************
- *
- * taskTCWGet - get the task trace control word (i960)
- *
- * This routine gets the task trace control word (TCW).
- *
- * RETURNS: The TCW of a specified task.
- *
- * NOMANUAL
- */
- int taskTCWGet
- (
- INT32 tid /* task ID */
- )
- {
- ...
- }
- /*******************************************************************************
- *
- * taskTCWSet - set the task trace control word (i960)
- *
- * This routine sets the trace control word (TCW) of a non-executing
- * task (i.e., the TCB must not be that of the calling
- * task). It is used by the debugging facilities to set the trace mode
- * in the TCW of a task being debugged.
- *
- * RETURNS: OK, or ERROR if the task ID is invalid.
- *
- * NOMANUAL
- */
- STATUS taskTCWSet
- (
- INT32 tid, /* task ID */
- UINT32 tcw /* new TCW */
- )
- {
- ...
- }
- /*******************************************************************************
- *
- * taskSRInit - initialize the default task status register (MIPS)
- *
- * This routine sets the default status register for system-wide tasks.
- * All tasks will be spawned with the status register set to this value; thus,
- * it must be called before kernelInit().
- *
- * RETURNS: The previous value of the default status register.
- */
- ULONG taskSRInit
- (
- ULONG newSRValue /* new default task status register */
- )
- {
- ...
- }