Annotation of XNU/EXTERNAL_HEADERS/architecture/i386/fpu.h, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * The contents of this file constitute Original Code as defined in and
        !             7:  * are subject to the Apple Public Source License Version 1.1 (the
        !             8:  * "License").  You may not use this file except in compliance with the
        !             9:  * License.  Please obtain a copy of the License at
        !            10:  * http://www.apple.com/publicsource and read it before using this file.
        !            11:  * 
        !            12:  * This Original Code and all software distributed under the License are
        !            13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            17:  * License for the specific language governing rights and limitations
        !            18:  * under the License.
        !            19:  * 
        !            20:  * @APPLE_LICENSE_HEADER_END@
        !            21:  */
        !            22: /*
        !            23:  * Copyright (c) 1992 NeXT Computer, Inc.
        !            24:  *
        !            25:  * Intel386 Family:    Floating Point unit.
        !            26:  *
        !            27:  * HISTORY
        !            28:  *
        !            29:  * 5 October 1992 ? at NeXT
        !            30:  *     Added names to previously unamed fields in the mantissa.
        !            31:  *
        !            32:  * 5 April 1992 ? at NeXT
        !            33:  *     Created.
        !            34:  */
        !            35: 
        !            36: /*
        !            37:  * Data register.
        !            38:  */
        !            39: 
        !            40: typedef struct fp_data_reg {
        !            41:     unsigned short             mant;
        !            42:     unsigned short             mant1   :16,
        !            43:                                mant2   :16,
        !            44:                                mant3   :16;
        !            45:     unsigned short             exp     :15,
        !            46:                                sign    :1;
        !            47: } fp_data_reg_t;
        !            48: 
        !            49: /*
        !            50:  * Data register stack.
        !            51:  */
        !            52: 
        !            53: typedef struct fp_stack {
        !            54:     fp_data_reg_t              ST[8];
        !            55: } fp_stack_t;
        !            56: 
        !            57: /*
        !            58:  * Register stack tag word.
        !            59:  */
        !            60: 
        !            61: typedef struct fp_tag {
        !            62:     unsigned short             tag0    :2,
        !            63:                                tag1    :2,
        !            64:                                tag2    :2,
        !            65:                                tag3    :2,
        !            66:                                tag4    :2,
        !            67:                                tag5    :2,
        !            68:                                tag6    :2,
        !            69:                                tag7    :2;
        !            70: #define FP_TAG_VALID           0
        !            71: #define FP_TAG_ZERO            1
        !            72: #define FP_TAG_SPEC            2
        !            73: #define FP_TAG_EMPTY           3
        !            74: } fp_tag_t;
        !            75: 
        !            76: /*
        !            77:  * Status word.
        !            78:  */
        !            79: 
        !            80: typedef struct fp_status {
        !            81:     unsigned short             invalid :1,
        !            82:                                denorm  :1,
        !            83:                                zdiv    :1,
        !            84:                                ovrfl   :1,
        !            85:                                undfl   :1,
        !            86:                                precis  :1,
        !            87:                                stkflt  :1,
        !            88:                                errsumm :1,
        !            89:                                c0      :1,
        !            90:                                c1      :1,
        !            91:                                c2      :1,
        !            92:                                tos     :3,
        !            93:                                c3      :1,
        !            94:                                busy    :1;
        !            95: } fp_status_t;
        !            96: 
        !            97: /*
        !            98:  * Control word.
        !            99:  */
        !           100: 
        !           101: typedef struct fp_control {
        !           102:     unsigned short             invalid :1,
        !           103:                                denorm  :1,
        !           104:                                zdiv    :1,
        !           105:                                ovrfl   :1,
        !           106:                                undfl   :1,
        !           107:                                precis  :1,
        !           108:                                        :2,
        !           109:                                pc      :2,
        !           110: #define FP_PREC_24B            0
        !           111: #define        FP_PREC_53B             2
        !           112: #define FP_PREC_64B            3
        !           113:                                rc      :2,
        !           114: #define FP_RND_NEAR            0
        !           115: #define FP_RND_DOWN            1
        !           116: #define FP_RND_UP              2
        !           117: #define FP_CHOP                        3
        !           118:                                /*inf*/ :1,
        !           119:                                        :3;
        !           120: } fp_control_t;
        !           121: 
        !           122: #import <architecture/i386/sel.h>
        !           123: 
        !           124: /*
        !           125:  * Floating point 'environment'
        !           126:  * used by FSTENV/FLDENV instructions.
        !           127:  */
        !           128: 
        !           129: typedef struct fp_env {
        !           130:     fp_control_t               control;
        !           131:     unsigned short                     :16;
        !           132:     fp_status_t                        status;
        !           133:     unsigned short                     :16;
        !           134:     fp_tag_t                   tag;
        !           135:     unsigned short                     :16;
        !           136:     unsigned int               ip;
        !           137:     sel_t                      cs;
        !           138:     unsigned short             opcode;
        !           139:     unsigned int               dp;
        !           140:     sel_t                      ds;
        !           141:     unsigned short                     :16;
        !           142: } fp_env_t;
        !           143: 
        !           144: /*
        !           145:  * Floating point state
        !           146:  * used by FSAVE/FRSTOR instructions.
        !           147:  */
        !           148:  
        !           149: typedef struct fp_state {
        !           150:     fp_env_t                   environ;
        !           151:     fp_stack_t                 stack;
        !           152: } fp_state_t;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.