亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fpparchlib.c

?? 大名鼎鼎的嵌入式操作系統vxworks的完整的源代碼
?? C
字號:
/* fppArchLib.c - architecture-dependent floating-point coprocessor support *//* Copyright 1984-2002 Wind River Systems, Inc. *//*modification history--------------------01j,05jun02,wsl  remove reference to SPARC and i96001i,28mar02,hdn  updated x86 specific sections01h,20nov01,hdn  updated x86 specific sections01g,13nov01,hbh  Updated for simulators.01f,29oct01,zl   added SH-specific documentation01e,27feb97,jpd  added ARM-specific documentation.01d,25nov95,jdi  removed 29k stuff.01c,31jan95,rhp  update for MIPS R4000, AM29K, i386/i486.            jdi  changed 80960 to i960.01b,20jan93,jdi  documentation cleanup.01a,23sep92,jdi	 written, based on fppALib.s and fppArchLib.c for		 mc68k, sparc, i960, mips.*//*DESCRIPTIONThis library contains architecture-dependent routines to support the floating-point coprocessor.  The routines fppSave() and fppRestore() saveand restore all the task floating-point context information.  The routinefppProbe() checks for the presence of the floating-point coprocessor.  Theroutines fppTaskRegsSet() and fppTaskRegsGet() inspect and set coprocessorregisters on a per-task basis.With the exception of fppProbe(), the higher-level facilities in dbgLiband usrLib should be used instead of these routines.  For information aboutarchitecture-independent access mechanisms, see the manual entry for fppLib.INITIALIZATIONTo activate floating-point support, fppInit() must be called before anytasks using the coprocessor are spawned.  This is done by the root task,usrRoot(), in usrConfig.c.  See the manual entry for fppLib.NOTE X86:There are two kind of floating-point contexts and set of routines for each kind.  One is 108 bytes for older FPU (i80387, i80487, Pentium) and older MMX technology and fppSave(), fppRestore(), fppRegsToCtx(), and fppCtxToRegs() are used to save and restore the context, convert to or from the FPPREG_SET.The other is 512 bytes for newer FPU, newer MMX technology and streaming SIMD technology (PentiumII, III, 4) and fppXsave(), fppXrestore(), fppXregsToCtx(), and fppXctxToRegs() are used to save and restore the context, convert to or from the FPPREG_SET.  Which to use is automatically detected by checking CPUID information in fppArchInit().  And fppTaskRegsSet() and fppTaskRegsGet() access the appropriate floating-point context.  The bit interrogated for the automatic detection is the "Fast Save and Restore" feature flag.NOTE X86 INITIALIZATION:To activate floating-point support, fppInit() must be called before anytasks using the coprocessor are spawned.  If INCLUDE_FLOATING_POINT isdefined in configAll.h, this is done by the root task, usrRoot(), inusrConfig.c.NOTE X86 VX FP TASK OPTION: Saving and restoring floating-point registers adds to the context switchtime of a task.Therefore, floating-point registers are \f2not\fP saved and restored for \f2every\fP task.  Only those tasks spawned with the task option VX_FP_TASKwill have floating-point state, MMX technology state, and streaming SIMD state saved and restored.  \f3NOTE:\fP  If a task does any floating-point operations, MMX operations,and streaming SIMD operation, it must be spawned with VX_FP_TASK.It is deadly to execute any floating-point operations in a task spawned without VX_FP_TASK option, and very difficult to find.  To detect thatillegal/unintentional/accidental floating-point operations, a new API andmechanism is added.  The mechanism is to enable or disable the FPU by toggling the TS flag in the CR0 in the new task switch hook routine -fppArchSwitchHook() - respecting the VX_FP_TASK option.  If VX_FP_TASKoption is not set in the switching-in task, the FPU is disabled.  Thusthe device-not-available exception will be raised if that task does any floating-point operations.  This mechanism is disabled in the default.To enable, call the enabler - fppArchSwitchHookEnable() - with a parameter TRUE(1).  A parameter FALSE(0) disables the mechanism.NOTE X86 MIXING MMX AND FPU INSTRUCTIONS:A task with VX_FP_TASK option saves and restores the FPU and MMX statewhen performing a context switch.  Therefore, the application does nothave to save or restore the FPU and MMX state if the FPU and MMX instructions are not mixed within a task.  Because the MMX registersare aliased to the FPU registers, care must be taken when makingtransitions between FPU instructions and MMX instructions to preventthe loss of data in the FPU and MMX registers and to prevent incoherentor unexpected result.  When mixing MMX and FPU instructions within a task, follow these guidelines from Intel:    - Keep the code in separate modules, procedures, or routines.    - Do not rely on register contents across transitions between FPU      and MMX code modules.    - When transitioning between MMX code and FPU code, save the MMX      register state (if it will be needed in the future) and execute      an EMMS instruction to empty the MMX state.    - When transitioning between FPU and MMX code, save the FPU state,      if it will be needed in the future.NOTE X86 MIXING SSE SSE2 FPU AND MMX INSTRUCTIONS:The XMM registers and the FPU/MMX registers represent separate execution environments, which has certain ramifications when executingSSE, SSE2, MMX and FPU instructions in the same task context:    - Those SSE and SSE2 instruction that operate only on the XMM       registers (such as the packed and scalar floating-point      instructions and the 128-bit SIMD integer instructions) can be      executed in the same instruction stream with 64-bit SIMD integer      or FPU instructions without any restrictions.  For example, an      application can perform the majority of its floating-point       computations in the XMM registers, using the packed and scalar      floating-point instructions, and at the same time use the FPU      to perform trigonometric and other transcendental computations.      Likewise, an application can perform packed 64-bit and 128-bit      SIMD integer operations can be executed together without      restrictions.    - Those SSE and SSE2 instructions that operate on MMX registers      (such as the CVTPS2PI, CVTTPS2PI, CVTPI2PS, CVTPD2PI, CVTTPD2PI,      CVTPI2PD, MOVDQ2Q, MOVQ2DQ, PADDQ, and PSUBQ instructions) can      also be executed in the same instruction stream as 64-bit SIMD      integer or FPU instructions, however, here they subject to the      restrictions on the simultaneous use of MMX and FPU instructions,      which mentioned in the previous paragraph.NOTE X86 INTERRUPT LEVEL:Floating-point registers are \f2not\fP saved and restored for interruptservice routines connected with intConnect().  However, if necessary,an interrupt service routine can save and restore floating-point registersby calling routines in fppALib.  See the manual entry for intConnect() formore information.NOTE X86 EXCEPTIONS:There are six FPU exceptions that can send an exception to the CPU.  They are controlled by Exception Mask bits of the Control Word register.  VxWorks disables them in the default configuration.  They are:    - Precision    - Overflow    - Underflow    - Division by zero    - Denormalized operand    - Invalid OperationNOTE ARMThis architecture does not currently support floating-point coprocessors.INCLUDE FILES: fppLib.hSEE ALSO: fppLib, intConnect(),.nf.IR "Motorola MC68881/882 Floating-Point Coprocessor User's Manual" ,.IR "Intel 387 DX User's Manual" ,.IR "Intel Architecture Software Developer's Manual" ,.IR "Hitachi SH7750 Hardware Manual" ,.fiGerry Kane and Joe Heinrich:.I "MIPS RISC Architecture Manual"*//********************************************************************************* fppSave - save the floating-point coprocessor context** This routine saves the floating-point coprocessor context.* The context saved is:** \&`MC680x0':*	- registers `fpcr', `fpsr', and `fpiar'*	- registers `f0' - `f7'*	- internal state frame (if NULL, the other registers are not saved.)** \"\&`SPARC':* \"	- registers `fsr' and `fpq'* \"	- registers `f0' - `f31'* \"* \"\&`i960':* \"	- registers `fp0' - `fp3'* \"* \&`MIPS':*	- register `fpcsr'*	- registers `fp0' - `fp31'** \&`SH-4':*	- registers `fpcsr' and `fpul'*	- registers `fr0' - `fr15'*	- registers `xf0' - `xf15'** \&`x86':*       108 byte old context with fsave and frstor instruction*       - control word, status word, tag word, *       - instruction pointer,*       - instruction pointer selector,*       - last FP instruction op code,*       - data pointer,*       - data pointer selector,*       - registers `st/mm0' - `st/mm7' (10 bytes * 8)*       512 byte new context with fxsave and fxrstor instruction*       - control word, status word, tag word, *       - last FP instruction op code,*       - instruction pointer,*       - instruction pointer selector,*       - data pointer,*       - data pointer selector,*       - registers `st/mm0' - `st/mm7' (10 bytes * 8)*       - registers `xmm0' - `xmm7' (16 bytes * 8)** \&`ARM':*       - currently, on this architecture, this routine does nothing.** \&`SimSolaris':*	- register `fsr'*	- registers `f0' - `f31'** \&`SimNT':*	- this routine does nothing on Windows simulator. Floating point*	  registers are saved by Windows.** RETURNS: N/A** SEE ALSO: fppRestore()*/void fppSave    (    FP_CONTEXT *  pFpContext	/* where to save context */    )    {    ...    }/********************************************************************************* fppRestore - restore the floating-point coprocessor context** This routine restores the floating-point coprocessor context.* The context restored is:** \&`MC680x0':*	- registers `fpcr', `fpsr', and `fpiar'*	- registers `f0' - `f7'*	- internal state frame (if NULL, the other registers are not saved.)** \"\&`SPARC':* \"	- registers `fsr' and `fpq'* \"	- registers `f0' - `f31'* \"* \"\&`i960':* \"	- registers `fp0' - `fp3'* \"* \&`MIPS':*	- register `fpcsr'*	- registers `fp0' - `fp31'** \&`SH-4':*	- registers `fpcsr' and `fpul'*	- registers `fr0' - `fr15'*	- registers `xf0' - `xf15'** \&`x86':*       108 byte old context with fsave and frstor instruction*       - control word, status word, tag word, *       - instruction pointer,*       - instruction pointer selector,*       - last FP instruction op code,*       - data pointer,*       - data pointer selector,*       - registers `st/mm0' - `st/mm7' (10 bytes * 8)*       512 byte new context with fxsave and fxrstor instruction*       - control word, status word, tag word, *       - last FP instruction op code,*       - instruction pointer,*       - instruction pointer selector,*       - data pointer,*       - data pointer selector,*       - registers `st/mm0' - `st/mm7' (10 bytes * 8)*       - registers `xmm0' - `xmm7' (16 bytes * 8)** \&`ARM':*       - currently, on this architecture, this routine does nothing.** \&`SimSolaris':*	- register `fsr'*	- registers `f0' - `f31'** \&`SimNT':*	- this routine does nothing on Windows simulator. ** RETURNS: N/A** SEE ALSO: fppSave()*/void fppRestore    (    FP_CONTEXT *  pFpContext	/* where to restore context from */    )    {    ...    }/********************************************************************************* fppProbe - probe for the presence of a floating-point coprocessor** This routine determines whether there is a* floating-point coprocessor in the system.** The implementation of this routine is architecture-dependent:** .IP "`MC680x0', `x86', `SH-4':"* This routine sets the illegal coprocessor opcode trap vector and executes* a coprocessor instruction.  If the instruction causes an exception,* fppProbe() returns ERROR.  Note that this routine saves and restores* the illegal coprocessor opcode trap vector that was there prior to this* call.** The probe is only performed the first time this routine is called.* The result is stored in a static and returned on subsequent* calls without actually probing.** \".IP `i960':* \"This routine merely indicates whether VxWorks was compiled with* \"the flag `-DCPU=I960KB'.* \"* .IP `MIPS':* This routine simply reads the R-Series status register and reports* the bit that indicates whether coprocessor 1 is usable.  This bit* must be correctly initialized in the BSP.** .IP `ARM':* This routine currently returns ERROR to indicate no floating-point * coprocessor support.* * .IP "`SimNT', `SimSolaris':"* This routine currently returns OK.** INTERNAL* The STAR board will always have an on-board floating-point unit.* What about others?** RETURNS:* OK, or ERROR if there is no floating-point coprocessor.*/STATUS fppProbe (void)    {    ...    }/********************************************************************************* fppTaskRegsGet - get the floating-point registers from a task TCB** This routine copies a task's floating-point registers and/or status* registers to the locations whose pointers are passed as* parameters.  The floating-point registers are copied into* an array containing all the registers.** NOTE* This routine only works well if <task> is not the calling task.* If a task tries to discover its own registers, the values will be stale* (that is, left over from the last task switch).** RETURNS: OK, or ERROR if there is no floating-point* support or there is an invalid state.** SEE ALSO: fppTaskRegsSet()*/STATUS fppTaskRegsGet    (    int		 task,       	/* task to get info about */    FPREG_SET *  pFpRegSet	/* ptr to floating-point register set */    )    {    ...    }/********************************************************************************* fppTaskRegsSet - set the floating-point registers of a task** This routine loads the specified values into the TCB of a specified task.* The register values are copied from the array at <pFpRegSet>.** RETURNS: OK, or ERROR if there is no floating-point* support or there is an invalid state.** SEE ALSO: fppTaskRegsGet()*/STATUS fppTaskRegsSet    (    int		 task,          /* task to set registers for */    FPREG_SET *	 pFpRegSet	/* ptr to floating-point register set */    )    {    ...    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91精品一区二区麻豆亚洲| 91在线精品秘密一区二区| 2021久久国产精品不只是精品| 成人av免费观看| 国产综合色产在线精品| 中文字幕日韩av资源站| 欧美一区二区三区系列电影| 成人午夜视频福利| 麻豆精品在线观看| 亚洲综合偷拍欧美一区色| 久久久国产精品麻豆 | 91亚洲国产成人精品一区二三| 丝袜脚交一区二区| 亚洲图片欧美激情| 久久久久久9999| 精品伦理精品一区| 欧美精品视频www在线观看| 99久久免费精品高清特色大片| 久久国产综合精品| 日韩国产在线观看一区| 亚洲精品国产精华液| 中文字幕va一区二区三区| 精品久久久网站| 日韩欧美国产不卡| 欧美一级片在线观看| 欧美色倩网站大全免费| 日本乱人伦aⅴ精品| av中文字幕亚洲| 国产精品一区二区久久精品爱涩| 麻豆91精品视频| 日韩国产精品大片| 午夜av一区二区| 日韩电影免费在线看| 亚洲国产精品一区二区久久| 亚洲欧美一区二区三区久本道91| 中文字幕第一区综合| 亚洲国产精品二十页| 国产亚洲欧洲一区高清在线观看| 欧美xfplay| 2020国产精品自拍| 欧美成人综合网站| 久久视频一区二区| 久久久久国产精品人| 欧美经典一区二区| 国产精品麻豆久久久| 国产精品二区一区二区aⅴ污介绍| 国产精品无圣光一区二区| 国产精品女人毛片| 亚洲欧洲另类国产综合| 亚洲欧美视频一区| 亚洲二区视频在线| 久久草av在线| 国产成人av电影| www.亚洲精品| 欧美综合欧美视频| 欧美一区二区三区在线看| 日韩一区二区三区四区| 337p日本欧洲亚洲大胆精品| 久久精品无码一区二区三区| 中文字幕一区二区三区乱码在线 | 韩国女主播成人在线| 国产在线精品一区在线观看麻豆| 国产一区二区三区免费| 国产盗摄一区二区三区| 91麻豆国产精品久久| 欧美乱妇一区二区三区不卡视频| 日韩天堂在线观看| 日本一区二区免费在线| 免费不卡在线观看| 久久99最新地址| 不卡一区二区三区四区| 欧美性极品少妇| 欧美精品一区二区精品网| 中文字幕一区二区三区色视频| 亚洲国产精品精华液网站| 久久国产视频网| 成人av影视在线观看| 精品视频在线免费| 久久这里都是精品| 一区二区成人在线观看| 久久99久国产精品黄毛片色诱| 成人午夜激情片| 欧美一区二区三区四区久久 | 国产精品久久久久久福利一牛影视 | 九色综合狠狠综合久久| 成人激情午夜影院| 欧美日本韩国一区| 国产精品久久久久一区| 蓝色福利精品导航| 欧美影视一区在线| 国产片一区二区| 人人爽香蕉精品| 色综合久久中文综合久久牛| 亚洲国产精品一区二区久久| 久久99精品网久久| 欧美一级高清大全免费观看| 国产农村妇女精品| 午夜精品久久久久久不卡8050| 老司机午夜精品| 成人精品在线视频观看| 日韩欧美成人激情| 亚洲高清免费观看| 日韩中文字幕av电影| 欧美主播一区二区三区美女| 欧美激情一区二区三区全黄| 午夜视频在线观看一区二区| 国产一区三区三区| 欧美人与z0zoxxxx视频| 中文字幕一区二区三| 麻豆国产91在线播放| 欧美色综合网站| 国产精品理论片| 国产高清不卡二三区| 日韩欧美成人激情| 日本在线不卡视频一二三区| 日本国产一区二区| 最新欧美精品一区二区三区| 国产九色精品成人porny| 欧美情侣在线播放| 亚洲制服丝袜在线| 色天使色偷偷av一区二区| 国产精品久线观看视频| 国产精品亚洲第一| 日韩精品一区二区三区视频播放 | 成人精品高清在线| 久久久久久久久久久久久女国产乱 | 亚洲成人av福利| 日本乱码高清不卡字幕| 精品电影一区二区| 一区二区三区中文免费| 成人免费观看av| 国产精品网站在线播放| 激情综合色丁香一区二区| 国产欧美精品在线观看| 色狠狠一区二区三区香蕉| 五月天亚洲精品| 2022国产精品视频| 欧美日韩一级二级三级| 免播放器亚洲一区| 国产精品日韩成人| 国产日韩欧美a| 亚洲激情校园春色| www.欧美亚洲| 91精品福利在线一区二区三区| 97久久人人超碰| av成人老司机| 成人精品免费网站| 国产精品12区| 99综合影院在线| 欧美一区二区三区四区久久| 精品sm在线观看| 67194成人在线观看| 国模套图日韩精品一区二区 | 亚洲视频免费看| 日本韩国欧美三级| 成人网在线免费视频| 亚洲免费电影在线| 精品成人在线观看| 在线成人免费视频| 欧美日韩一区二区欧美激情| 色综合久久天天| 欧美午夜片在线看| 欧美日韩在线不卡| 日本久久一区二区三区| 国产suv一区二区三区88区| 麻豆精品一区二区av白丝在线| 亚洲精品视频免费看| 日韩理论在线观看| 久久青草欧美一区二区三区| 久久久国产精品午夜一区ai换脸| 久久这里只精品最新地址| 久久久久国产免费免费| 久久久久国产精品麻豆| 依依成人综合视频| 视频精品一区二区| 久久国产婷婷国产香蕉| 日本亚洲最大的色成网站www| 欧美国产日韩亚洲一区| 欧美一区二区成人| 欧美一区永久视频免费观看| 精品国产成人系列| 久久精品一区二区三区不卡| 精品国产麻豆免费人成网站| 51精品秘密在线观看| 久久久久免费观看| 日日夜夜精品视频免费| 成人国产在线观看| 欧美一区日本一区韩国一区| 亚洲三级在线免费观看| 亚洲一区二区三区四区中文字幕| ...av二区三区久久精品| 首页综合国产亚洲丝袜| 99久久久国产精品| 高潮精品一区videoshd| 日韩一区二区电影| 国产精品久久久久久久久果冻传媒| 成人欧美一区二区三区小说 | 欧美在线免费观看亚洲| 欧美一区二区免费视频| 亚洲欧美电影一区二区|