18c2ecf20Sopenharmony_ci| 28c2ecf20Sopenharmony_ci| sto_res.sa 3.1 12/10/90 38c2ecf20Sopenharmony_ci| 48c2ecf20Sopenharmony_ci| Takes the result and puts it in where the user expects it. 58c2ecf20Sopenharmony_ci| Library functions return result in fp0. If fp0 is not the 68c2ecf20Sopenharmony_ci| users destination register then fp0 is moved to the 78c2ecf20Sopenharmony_ci| correct floating-point destination register. fp0 and fp1 88c2ecf20Sopenharmony_ci| are then restored to the original contents. 98c2ecf20Sopenharmony_ci| 108c2ecf20Sopenharmony_ci| Input: result in fp0,fp1 118c2ecf20Sopenharmony_ci| 128c2ecf20Sopenharmony_ci| d2 & a0 should be kept unmodified 138c2ecf20Sopenharmony_ci| 148c2ecf20Sopenharmony_ci| Output: moves the result to the true destination reg or mem 158c2ecf20Sopenharmony_ci| 168c2ecf20Sopenharmony_ci| Modifies: destination floating point register 178c2ecf20Sopenharmony_ci| 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci| Copyright (C) Motorola, Inc. 1990 208c2ecf20Sopenharmony_ci| All Rights Reserved 218c2ecf20Sopenharmony_ci| 228c2ecf20Sopenharmony_ci| For details on the license for this file, please see the 238c2ecf20Sopenharmony_ci| file, README, in this same directory. 248c2ecf20Sopenharmony_ci 258c2ecf20Sopenharmony_ciSTO_RES: |idnt 2,1 | Motorola 040 Floating Point Software Package 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci |section 8 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ci#include "fpsp.h" 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci .global sto_cos 338c2ecf20Sopenharmony_cisto_cos: 348c2ecf20Sopenharmony_ci bfextu CMDREG1B(%a6){#13:#3},%d0 |extract cos destination 358c2ecf20Sopenharmony_ci cmpib #3,%d0 |check for fp0/fp1 cases 368c2ecf20Sopenharmony_ci bles c_fp0123 378c2ecf20Sopenharmony_ci fmovemx %fp1-%fp1,-(%a7) 388c2ecf20Sopenharmony_ci moveql #7,%d1 398c2ecf20Sopenharmony_ci subl %d0,%d1 |d1 = 7- (dest. reg. no.) 408c2ecf20Sopenharmony_ci clrl %d0 418c2ecf20Sopenharmony_ci bsetl %d1,%d0 |d0 is dynamic register mask 428c2ecf20Sopenharmony_ci fmovemx (%a7)+,%d0 438c2ecf20Sopenharmony_ci rts 448c2ecf20Sopenharmony_cic_fp0123: 458c2ecf20Sopenharmony_ci cmpib #0,%d0 468c2ecf20Sopenharmony_ci beqs c_is_fp0 478c2ecf20Sopenharmony_ci cmpib #1,%d0 488c2ecf20Sopenharmony_ci beqs c_is_fp1 498c2ecf20Sopenharmony_ci cmpib #2,%d0 508c2ecf20Sopenharmony_ci beqs c_is_fp2 518c2ecf20Sopenharmony_cic_is_fp3: 528c2ecf20Sopenharmony_ci fmovemx %fp1-%fp1,USER_FP3(%a6) 538c2ecf20Sopenharmony_ci rts 548c2ecf20Sopenharmony_cic_is_fp2: 558c2ecf20Sopenharmony_ci fmovemx %fp1-%fp1,USER_FP2(%a6) 568c2ecf20Sopenharmony_ci rts 578c2ecf20Sopenharmony_cic_is_fp1: 588c2ecf20Sopenharmony_ci fmovemx %fp1-%fp1,USER_FP1(%a6) 598c2ecf20Sopenharmony_ci rts 608c2ecf20Sopenharmony_cic_is_fp0: 618c2ecf20Sopenharmony_ci fmovemx %fp1-%fp1,USER_FP0(%a6) 628c2ecf20Sopenharmony_ci rts 638c2ecf20Sopenharmony_ci 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ci .global sto_res 668c2ecf20Sopenharmony_cisto_res: 678c2ecf20Sopenharmony_ci bfextu CMDREG1B(%a6){#6:#3},%d0 |extract destination register 688c2ecf20Sopenharmony_ci cmpib #3,%d0 |check for fp0/fp1 cases 698c2ecf20Sopenharmony_ci bles fp0123 708c2ecf20Sopenharmony_ci fmovemx %fp0-%fp0,-(%a7) 718c2ecf20Sopenharmony_ci moveql #7,%d1 728c2ecf20Sopenharmony_ci subl %d0,%d1 |d1 = 7- (dest. reg. no.) 738c2ecf20Sopenharmony_ci clrl %d0 748c2ecf20Sopenharmony_ci bsetl %d1,%d0 |d0 is dynamic register mask 758c2ecf20Sopenharmony_ci fmovemx (%a7)+,%d0 768c2ecf20Sopenharmony_ci rts 778c2ecf20Sopenharmony_cifp0123: 788c2ecf20Sopenharmony_ci cmpib #0,%d0 798c2ecf20Sopenharmony_ci beqs is_fp0 808c2ecf20Sopenharmony_ci cmpib #1,%d0 818c2ecf20Sopenharmony_ci beqs is_fp1 828c2ecf20Sopenharmony_ci cmpib #2,%d0 838c2ecf20Sopenharmony_ci beqs is_fp2 848c2ecf20Sopenharmony_ciis_fp3: 858c2ecf20Sopenharmony_ci fmovemx %fp0-%fp0,USER_FP3(%a6) 868c2ecf20Sopenharmony_ci rts 878c2ecf20Sopenharmony_ciis_fp2: 888c2ecf20Sopenharmony_ci fmovemx %fp0-%fp0,USER_FP2(%a6) 898c2ecf20Sopenharmony_ci rts 908c2ecf20Sopenharmony_ciis_fp1: 918c2ecf20Sopenharmony_ci fmovemx %fp0-%fp0,USER_FP1(%a6) 928c2ecf20Sopenharmony_ci rts 938c2ecf20Sopenharmony_ciis_fp0: 948c2ecf20Sopenharmony_ci fmovemx %fp0-%fp0,USER_FP0(%a6) 958c2ecf20Sopenharmony_ci rts 968c2ecf20Sopenharmony_ci 978c2ecf20Sopenharmony_ci |end 98