[BACK]Return to sto_res.sa CVS log [TXT][DIR] Up to [local] / sys / arch / m68k / fpsp

Annotation of sys/arch/m68k/fpsp/sto_res.sa, Revision 1.1

1.1     ! nbrk        1: *      $OpenBSD: sto_res.sa,v 1.3 2003/11/07 10:36:10 miod Exp $
        !             2: *      $NetBSD: sto_res.sa,v 1.3 1994/10/26 07:50:14 cgd Exp $
        !             3:
        !             4: *      MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP
        !             5: *      M68000 Hi-Performance Microprocessor Division
        !             6: *      M68040 Software Package
        !             7: *
        !             8: *      M68040 Software Package Copyright (c) 1993, 1994 Motorola Inc.
        !             9: *      All rights reserved.
        !            10: *
        !            11: *      THE SOFTWARE is provided on an "AS IS" basis and without warranty.
        !            12: *      To the maximum extent permitted by applicable law,
        !            13: *      MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED,
        !            14: *      INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
        !            15: *      PARTICULAR PURPOSE and any warranty against infringement with
        !            16: *      regard to the SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF)
        !            17: *      and any accompanying written materials.
        !            18: *
        !            19: *      To the maximum extent permitted by applicable law,
        !            20: *      IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER
        !            21: *      (INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS
        !            22: *      PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR
        !            23: *      OTHER PECUNIARY LOSS) ARISING OF THE USE OR INABILITY TO USE THE
        !            24: *      SOFTWARE.  Motorola assumes no responsibility for the maintenance
        !            25: *      and support of the SOFTWARE.
        !            26: *
        !            27: *      You are hereby granted a copyright license to use, modify, and
        !            28: *      distribute the SOFTWARE so long as this entire notice is retained
        !            29: *      without alteration in any modified and/or redistributed versions,
        !            30: *      and that such modified versions are clearly identified as such.
        !            31: *      No licenses are granted by implication, estoppel or otherwise
        !            32: *      under any patents or trademarks of Motorola, Inc.
        !            33:
        !            34: *
        !            35: *      sto_res.sa 3.1 12/10/90
        !            36: *
        !            37: *      Takes the result and puts it in where the user expects it.
        !            38: *      Library functions return result in fp0. If fp0 is not the
        !            39: *      users destination register then fp0 is moved to the
        !            40: *      correct floating-point destination register.  fp0 and fp1
        !            41: *      are then restored to the original contents.
        !            42: *
        !            43: *      Input:  result in fp0,fp1
        !            44: *
        !            45: *              d2 & a0 should be kept unmodified
        !            46: *
        !            47: *      Output: moves the result to the true destination reg or mem
        !            48: *
        !            49: *      Modifies: destination floating point register
        !            50: *
        !            51:
        !            52: STO_RES        IDNT    2,1 Motorola 040 Floating Point Software Package
        !            53:
        !            54:
        !            55:        section 8
        !            56:
        !            57:        include fpsp.h
        !            58:
        !            59:        xdef    sto_cos
        !            60: sto_cos:
        !            61:        bfextu          CMDREG1B(a6){13:3},d0   ;extract cos destination
        !            62:        cmpi.b          #3,d0           ;check for fp0/fp1 cases
        !            63:        ble.b           c_fp0123
        !            64:        fmovem.x        fp1,-(a7)
        !            65:        moveq.l         #7,d1
        !            66:        sub.l           d0,d1           ;d1 = 7- (dest. reg. no.)
        !            67:        clr.l           d0
        !            68:        bset.l          d1,d0           ;d0 is dynamic register mask
        !            69:        fmovem.x        (a7)+,d0
        !            70:        rts
        !            71: c_fp0123:
        !            72:        tst.b           d0
        !            73:        beq.b           c_is_fp0
        !            74:        cmpi.b          #1,d0
        !            75:        beq.b           c_is_fp1
        !            76:        cmpi.b          #2,d0
        !            77:        beq.b           c_is_fp2
        !            78: c_is_fp3:
        !            79:        fmovem.x        fp1,USER_FP3(a6)
        !            80:        rts
        !            81: c_is_fp2:
        !            82:        fmovem.x        fp1,USER_FP2(a6)
        !            83:        rts
        !            84: c_is_fp1:
        !            85:        fmovem.x        fp1,USER_FP1(a6)
        !            86:        rts
        !            87: c_is_fp0:
        !            88:        fmovem.x        fp1,USER_FP0(a6)
        !            89:        rts
        !            90:
        !            91:
        !            92:        xdef    sto_res
        !            93: sto_res:
        !            94:        bfextu          CMDREG1B(a6){6:3},d0    ;extract destination register
        !            95:        cmpi.b          #3,d0           ;check for fp0/fp1 cases
        !            96:        ble.b           fp0123
        !            97:        fmovem.x        fp0,-(a7)
        !            98:        moveq.l         #7,d1
        !            99:        sub.l           d0,d1           ;d1 = 7- (dest. reg. no.)
        !           100:        clr.l           d0
        !           101:        bset.l          d1,d0           ;d0 is dynamic register mask
        !           102:        fmovem.x        (a7)+,d0
        !           103:        rts
        !           104: fp0123:
        !           105:        tst.b           d0
        !           106:        beq.b           is_fp0
        !           107:        cmpi.b          #1,d0
        !           108:        beq.b           is_fp1
        !           109:        cmpi.b          #2,d0
        !           110:        beq.b           is_fp2
        !           111: is_fp3:
        !           112:        fmovem.x        fp0,USER_FP3(a6)
        !           113:        rts
        !           114: is_fp2:
        !           115:        fmovem.x        fp0,USER_FP2(a6)
        !           116:        rts
        !           117: is_fp1:
        !           118:        fmovem.x        fp0,USER_FP1(a6)
        !           119:        rts
        !           120: is_fp0:
        !           121:        fmovem.x        fp0,USER_FP0(a6)
        !           122:        rts
        !           123:
        !           124:        end

CVSweb