^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) | sto_res.sa 3.1 12/10/90
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) | Takes the result and puts it in where the user expects it.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) | Library functions return result in fp0. If fp0 is not the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) | users destination register then fp0 is moved to the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) | correct floating-point destination register. fp0 and fp1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) | are then restored to the original contents.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) | Input: result in fp0,fp1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) | d2 & a0 should be kept unmodified
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) | Output: moves the result to the true destination reg or mem
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) | Modifies: destination floating point register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) | Copyright (C) Motorola, Inc. 1990
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) | All Rights Reserved
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) | For details on the license for this file, please see the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) | file, README, in this same directory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) STO_RES: |idnt 2,1 | Motorola 040 Floating Point Software Package
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) |section 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) #include "fpsp.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) .global sto_cos
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) sto_cos:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) bfextu CMDREG1B(%a6){#13:#3},%d0 |extract cos destination
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) cmpib #3,%d0 |check for fp0/fp1 cases
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) bles c_fp0123
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) fmovemx %fp1-%fp1,-(%a7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) moveql #7,%d1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) subl %d0,%d1 |d1 = 7- (dest. reg. no.)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) clrl %d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) bsetl %d1,%d0 |d0 is dynamic register mask
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) fmovemx (%a7)+,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) rts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) c_fp0123:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) cmpib #0,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) beqs c_is_fp0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) cmpib #1,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) beqs c_is_fp1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) cmpib #2,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) beqs c_is_fp2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) c_is_fp3:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) fmovemx %fp1-%fp1,USER_FP3(%a6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) rts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) c_is_fp2:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) fmovemx %fp1-%fp1,USER_FP2(%a6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) rts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) c_is_fp1:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) fmovemx %fp1-%fp1,USER_FP1(%a6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) rts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) c_is_fp0:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) fmovemx %fp1-%fp1,USER_FP0(%a6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) rts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) .global sto_res
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) sto_res:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) bfextu CMDREG1B(%a6){#6:#3},%d0 |extract destination register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) cmpib #3,%d0 |check for fp0/fp1 cases
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) bles fp0123
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) fmovemx %fp0-%fp0,-(%a7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) moveql #7,%d1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) subl %d0,%d1 |d1 = 7- (dest. reg. no.)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) clrl %d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) bsetl %d1,%d0 |d0 is dynamic register mask
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) fmovemx (%a7)+,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) rts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) fp0123:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) cmpib #0,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) beqs is_fp0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) cmpib #1,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) beqs is_fp1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) cmpib #2,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) beqs is_fp2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) is_fp3:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) fmovemx %fp0-%fp0,USER_FP3(%a6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) rts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) is_fp2:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) fmovemx %fp0-%fp0,USER_FP2(%a6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) rts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) is_fp1:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) fmovemx %fp0-%fp0,USER_FP1(%a6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) rts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) is_fp0:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) fmovemx %fp0-%fp0,USER_FP0(%a6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) rts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) |end