| | |
| | sto_res.sa 3.1 12/10/90 |
| | |
| | Takes the result and puts it in where the user expects it. |
| | Library functions return result in fp0. If fp0 is not the |
| | users destination register then fp0 is moved to the |
| | correct floating-point destination register. fp0 and fp1 |
| | are then restored to the original contents. |
| | |
| | Input: result in fp0,fp1 |
| | |
| | d2 & a0 should be kept unmodified |
| | |
| | Output: moves the result to the true destination reg or mem |
| | |
| | Modifies: destination floating point register |
| | |
| |
| | Copyright (C) Motorola, Inc. 1990 |
| | All Rights Reserved |
| | |
| | For details on the license for this file, please see the |
| | file, README, in this same directory. |
| |
| STO_RES: |idnt 2,1 | Motorola 040 Floating Point Software Package |
| |
| |
| |section 8 |
| |
| #include "fpsp.h" |
| |
| .global sto_cos |
| sto_cos: |
| bfextu CMDREG1B(%a6){#13:#3},%d0 |extract cos destination |
| cmpib #3,%d0 |check for fp0/fp1 cases |
| bles c_fp0123 |
| fmovemx %fp1-%fp1,-(%a7) |
| moveql #7,%d1 |
| subl %d0,%d1 |d1 = 7- (dest. reg. no.) |
| clrl %d0 |
| bsetl %d1,%d0 |d0 is dynamic register mask |
| fmovemx (%a7)+,%d0 |
| rts |
| c_fp0123: |
| cmpib #0,%d0 |
| beqs c_is_fp0 |
| cmpib #1,%d0 |
| beqs c_is_fp1 |
| cmpib #2,%d0 |
| beqs c_is_fp2 |
| c_is_fp3: |
| fmovemx %fp1-%fp1,USER_FP3(%a6) |
| rts |
| c_is_fp2: |
| fmovemx %fp1-%fp1,USER_FP2(%a6) |
| rts |
| c_is_fp1: |
| fmovemx %fp1-%fp1,USER_FP1(%a6) |
| rts |
| c_is_fp0: |
| fmovemx %fp1-%fp1,USER_FP0(%a6) |
| rts |
| |
| |
| .global sto_res |
| sto_res: |
| bfextu CMDREG1B(%a6){#6:#3},%d0 |extract destination register |
| cmpib #3,%d0 |check for fp0/fp1 cases |
| bles fp0123 |
| fmovemx %fp0-%fp0,-(%a7) |
| moveql #7,%d1 |
| subl %d0,%d1 |d1 = 7- (dest. reg. no.) |
| clrl %d0 |
| bsetl %d1,%d0 |d0 is dynamic register mask |
| fmovemx (%a7)+,%d0 |
| rts |
| fp0123: |
| cmpib #0,%d0 |
| beqs is_fp0 |
| cmpib #1,%d0 |
| beqs is_fp1 |
| cmpib #2,%d0 |
| beqs is_fp2 |
| is_fp3: |
| fmovemx %fp0-%fp0,USER_FP3(%a6) |
| rts |
| is_fp2: |
| fmovemx %fp0-%fp0,USER_FP2(%a6) |
| rts |
| is_fp1: |
| fmovemx %fp0-%fp0,USER_FP1(%a6) |
| rts |
| is_fp0: |
| fmovemx %fp0-%fp0,USER_FP0(%a6) |
| rts |
| |
| |end |