162306a36Sopenharmony_ci| 262306a36Sopenharmony_ci| sto_res.sa 3.1 12/10/90 362306a36Sopenharmony_ci| 462306a36Sopenharmony_ci| Takes the result and puts it in where the user expects it. 562306a36Sopenharmony_ci| Library functions return result in fp0. If fp0 is not the 662306a36Sopenharmony_ci| users destination register then fp0 is moved to the 762306a36Sopenharmony_ci| correct floating-point destination register. fp0 and fp1 862306a36Sopenharmony_ci| are then restored to the original contents. 962306a36Sopenharmony_ci| 1062306a36Sopenharmony_ci| Input: result in fp0,fp1 1162306a36Sopenharmony_ci| 1262306a36Sopenharmony_ci| d2 & a0 should be kept unmodified 1362306a36Sopenharmony_ci| 1462306a36Sopenharmony_ci| Output: moves the result to the true destination reg or mem 1562306a36Sopenharmony_ci| 1662306a36Sopenharmony_ci| Modifies: destination floating point register 1762306a36Sopenharmony_ci| 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci| Copyright (C) Motorola, Inc. 1990 2062306a36Sopenharmony_ci| All Rights Reserved 2162306a36Sopenharmony_ci| 2262306a36Sopenharmony_ci| For details on the license for this file, please see the 2362306a36Sopenharmony_ci| file, README, in this same directory. 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ciSTO_RES: |idnt 2,1 | Motorola 040 Floating Point Software Package 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci |section 8 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci#include "fpsp.h" 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci .global sto_cos 3362306a36Sopenharmony_cisto_cos: 3462306a36Sopenharmony_ci bfextu CMDREG1B(%a6){#13:#3},%d0 |extract cos destination 3562306a36Sopenharmony_ci cmpib #3,%d0 |check for fp0/fp1 cases 3662306a36Sopenharmony_ci bles c_fp0123 3762306a36Sopenharmony_ci fmovemx %fp1-%fp1,-(%a7) 3862306a36Sopenharmony_ci moveql #7,%d1 3962306a36Sopenharmony_ci subl %d0,%d1 |d1 = 7- (dest. reg. no.) 4062306a36Sopenharmony_ci clrl %d0 4162306a36Sopenharmony_ci bsetl %d1,%d0 |d0 is dynamic register mask 4262306a36Sopenharmony_ci fmovemx (%a7)+,%d0 4362306a36Sopenharmony_ci rts 4462306a36Sopenharmony_cic_fp0123: 4562306a36Sopenharmony_ci cmpib #0,%d0 4662306a36Sopenharmony_ci beqs c_is_fp0 4762306a36Sopenharmony_ci cmpib #1,%d0 4862306a36Sopenharmony_ci beqs c_is_fp1 4962306a36Sopenharmony_ci cmpib #2,%d0 5062306a36Sopenharmony_ci beqs c_is_fp2 5162306a36Sopenharmony_cic_is_fp3: 5262306a36Sopenharmony_ci fmovemx %fp1-%fp1,USER_FP3(%a6) 5362306a36Sopenharmony_ci rts 5462306a36Sopenharmony_cic_is_fp2: 5562306a36Sopenharmony_ci fmovemx %fp1-%fp1,USER_FP2(%a6) 5662306a36Sopenharmony_ci rts 5762306a36Sopenharmony_cic_is_fp1: 5862306a36Sopenharmony_ci fmovemx %fp1-%fp1,USER_FP1(%a6) 5962306a36Sopenharmony_ci rts 6062306a36Sopenharmony_cic_is_fp0: 6162306a36Sopenharmony_ci fmovemx %fp1-%fp1,USER_FP0(%a6) 6262306a36Sopenharmony_ci rts 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci .global sto_res 6662306a36Sopenharmony_cisto_res: 6762306a36Sopenharmony_ci bfextu CMDREG1B(%a6){#6:#3},%d0 |extract destination register 6862306a36Sopenharmony_ci cmpib #3,%d0 |check for fp0/fp1 cases 6962306a36Sopenharmony_ci bles fp0123 7062306a36Sopenharmony_ci fmovemx %fp0-%fp0,-(%a7) 7162306a36Sopenharmony_ci moveql #7,%d1 7262306a36Sopenharmony_ci subl %d0,%d1 |d1 = 7- (dest. reg. no.) 7362306a36Sopenharmony_ci clrl %d0 7462306a36Sopenharmony_ci bsetl %d1,%d0 |d0 is dynamic register mask 7562306a36Sopenharmony_ci fmovemx (%a7)+,%d0 7662306a36Sopenharmony_ci rts 7762306a36Sopenharmony_cifp0123: 7862306a36Sopenharmony_ci cmpib #0,%d0 7962306a36Sopenharmony_ci beqs is_fp0 8062306a36Sopenharmony_ci cmpib #1,%d0 8162306a36Sopenharmony_ci beqs is_fp1 8262306a36Sopenharmony_ci cmpib #2,%d0 8362306a36Sopenharmony_ci beqs is_fp2 8462306a36Sopenharmony_ciis_fp3: 8562306a36Sopenharmony_ci fmovemx %fp0-%fp0,USER_FP3(%a6) 8662306a36Sopenharmony_ci rts 8762306a36Sopenharmony_ciis_fp2: 8862306a36Sopenharmony_ci fmovemx %fp0-%fp0,USER_FP2(%a6) 8962306a36Sopenharmony_ci rts 9062306a36Sopenharmony_ciis_fp1: 9162306a36Sopenharmony_ci fmovemx %fp0-%fp0,USER_FP1(%a6) 9262306a36Sopenharmony_ci rts 9362306a36Sopenharmony_ciis_fp0: 9462306a36Sopenharmony_ci fmovemx %fp0-%fp0,USER_FP0(%a6) 9562306a36Sopenharmony_ci rts 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci |end 98