?? l_entry.s
字號:
fmovemx a6@(USER_FP1),fp1-fp3 | note: fp0 not restored fmovel a6@(USER_FPCR),fpcr | fpcr restored unlk a6 rts .globl __l_fsinhd__l_fsinhd: link a6,#-LOCAL_SIZE moveml d0-d1/a0-a1,a6@(USER_DA) fmovemx fp0-fp3,a6@(USER_FP0) fmovel fpsr,a6@(USER_FPSR) fmovel fpcr,a6@(USER_FPCR) fmovel fpcr,d1 /* | user's rounding mode/precision */ fmovel #0,fpcr | force rounding mode/prec to extended,rn|| copy, convert and tag input argument| fmoved a6@(8),fp0 fmovex fp0,a6@(ETEMP) lea a6@(ETEMP),a0 bsrl __l_tag moveb d0,a6@(STAG) tstb d0 jne L_1117 bsrl __l_ssinh | normalized (regular) number jra L_111BL_1117: cmpb #0x20,d0 | zero? jne L_1118 bsrl __l_szero jra L_111BL_1118: cmpb #0x40,d0 | infinity? jne L_1119 bsrl __l_sinf jra L_111BL_1119: cmpb #0x60,d0 | NaN? jne L_111A bsrl __l_mon_nan jra L_111BL_111A: bsrl __l_ssinhd | assuming a denorm...L_111B: fmovel fpsr,d0 | update status register orb a6@(USER_FPSR+3),d0 | add previously accrued exceptions fmovel d0,fpsr|| Result is now in FP0| moveml a6@(USER_DA),d0-d1/a0-a1 fmovemx a6@(USER_FP1),fp1-fp3 | note: fp0 not restored fmovel a6@(USER_FPCR),fpcr | fpcr restored unlk a6 rts .globl __l_fsinhx__l_fsinhx: link a6,#-LOCAL_SIZE moveml d0-d1/a0-a1,a6@(USER_DA) fmovemx fp0-fp3,a6@(USER_FP0) fmovel fpsr,a6@(USER_FPSR) fmovel fpcr,a6@(USER_FPCR) fmovel fpcr,d1 /* | user's rounding mode/precision */ fmovel #0,fpcr | force rounding mode/prec to extended,rn|| copy, convert and tag input argument| fmovex a6@(8),fp0 fmovex fp0,a6@(ETEMP) lea a6@(ETEMP),a0 bsrl __l_tag moveb d0,a6@(STAG) tstb d0 jne L_111C bsrl __l_ssinh | normalized (regular) number jra L_111GL_111C: cmpb #0x20,d0 | zero? jne L_111D bsrl __l_szero jra L_111GL_111D: cmpb #0x40,d0 | infinity? jne L_111E bsrl __l_sinf jra L_111GL_111E: cmpb #0x60,d0 | NaN? jne L_111F bsrl __l_mon_nan jra L_111GL_111F: bsrl __l_ssinhd | assuming a denorm...L_111G: fmovel fpsr,d0 | update status register orb a6@(USER_FPSR+3),d0 | add previously accrued exceptions fmovel d0,fpsr|| Result is now in FP0| moveml a6@(USER_DA),d0-d1/a0-a1 fmovemx a6@(USER_FP1),fp1-fp3 | note: fp0 not restored fmovel a6@(USER_FPCR),fpcr | fpcr restored unlk a6 rts|| MONADIC.GEN 1.3 4/30/91|| MONADIC.GEN --- generic MONADIC template|| This version saves all registers that will be used by the emulation| routines and restores all but FP0 on exit. The FPSR is| updated to reflect the result of the operation. Return value| is placed in FP0 for single, double and extended results.|| The package subroutines expect the incoming fpcr to be zeroed| since they need extended precision to work properly. The/* | 'final' fpcr is expected in d1 so that the calculated result */| can be properly sized and rounded. Also, if the incoming fpcr| has enabled any exceptions, the exception will be taken on the| final fmovem in this template.|| Customizations:| 1. Remove the moveml at the entry and exit of| each routine if your compiler treats those| registers as scratch./* | 2. Likewise, don't save FP0/FP1 if they are scratch */| registers.| 3. Delete handling of the fpsr if you only care about| the result.| 4. Some (most?) C compilers convert all float arguments| to double, and provide no support at all for extended| precision so remove the __l_ftans and __l_ftanx entry points.| 5. Move the result to d0/d1 if the compiler is that old.| Copyright (C) Motorola, Inc. 1991| All Rights Reserved|| THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF MOTOROLA| The copyright notice above does not evidence any| actual or intended publication of such source code.| xref __l_tag| xref __l_stan| xref __l_szero| xref __l_t_operr| xref __l_mon_nan| xref __l_stand .globl __l_ftans__l_ftans: link a6,#-LOCAL_SIZE moveml d0-d1/a0-a1,a6@(USER_DA) fmovemx fp0-fp3,a6@(USER_FP0) fmovel fpsr,a6@(USER_FPSR) fmovel fpcr,a6@(USER_FPCR) fmovel fpcr,d1 /* | user's rounding mode/precision */ fmovel #0,fpcr | force rounding mode/prec to extended,rn|| copy, convert and tag input argument| fmoves a6@(8),fp0 fmovex fp0,a6@(ETEMP) lea a6@(ETEMP),a0 bsrl __l_tag moveb d0,a6@(STAG) tstb d0 jne L_1122 bsrl __l_stan | normalized (regular) number jra L_1126L_1122: cmpb #0x20,d0 | zero? jne L_1123 bsrl __l_szero jra L_1126L_1123: cmpb #0x40,d0 | infinity? jne L_1124 bsrl __l_t_operr jra L_1126L_1124: cmpb #0x60,d0 | NaN? jne L_1125 bsrl __l_mon_nan jra L_1126L_1125: bsrl __l_stand | assuming a denorm...L_1126: fmovel fpsr,d0 | update status register orb a6@(USER_FPSR+3),d0 | add previously accrued exceptions fmovel d0,fpsr|| Result is now in FP0| moveml a6@(USER_DA),d0-d1/a0-a1 fmovemx a6@(USER_FP1),fp1-fp3 | note: fp0 not restored fmovel a6@(USER_FPCR),fpcr | fpcr restored unlk a6 rts .globl __l_ftand__l_ftand: link a6,#-LOCAL_SIZE moveml d0-d1/a0-a1,a6@(USER_DA) fmovemx fp0-fp3,a6@(USER_FP0) fmovel fpsr,a6@(USER_FPSR) fmovel fpcr,a6@(USER_FPCR) fmovel fpcr,d1 /* | user's rounding mode/precision */ fmovel #0,fpcr | force rounding mode/prec to extended,rn|| copy, convert and tag input argument| fmoved a6@(8),fp0 fmovex fp0,a6@(ETEMP) lea a6@(ETEMP),a0 bsrl __l_tag moveb d0,a6@(STAG) tstb d0 jne L_1127 bsrl __l_stan | normalized (regular) number jra L_112BL_1127: cmpb #0x20,d0 | zero? jne L_1128 bsrl __l_szero jra L_112BL_1128: cmpb #0x40,d0 | infinity? jne L_1129 bsrl __l_t_operr jra L_112BL_1129: cmpb #0x60,d0 | NaN? jne L_112A bsrl __l_mon_nan jra L_112BL_112A: bsrl __l_stand | assuming a denorm...L_112B: fmovel fpsr,d0 | update status register orb a6@(USER_FPSR+3),d0 | add previously accrued exceptions fmovel d0,fpsr|| Result is now in FP0| moveml a6@(USER_DA),d0-d1/a0-a1 fmovemx a6@(USER_FP1),fp1-fp3 | note: fp0 not restored fmovel a6@(USER_FPCR),fpcr | fpcr restored unlk a6 rts .globl __l_ftanx__l_ftanx: link a6,#-LOCAL_SIZE moveml d0-d1/a0-a1,a6@(USER_DA) fmovemx fp0-fp3,a6@(USER_FP0) fmovel fpsr,a6@(USER_FPSR) fmovel fpcr,a6@(USER_FPCR) fmovel fpcr,d1 /* | user's rounding mode/precision */ fmovel #0,fpcr | force rounding mode/prec to extended,rn|| copy, convert and tag input argument| fmovex a6@(8),fp0 fmovex fp0,a6@(ETEMP) lea a6@(ETEMP),a0 bsrl __l_tag moveb d0,a6@(STAG) tstb d0 jne L_112C bsrl __l_stan | normalized (regular) number jra L_112GL_112C: cmpb #0x20,d0 | zero? jne L_112D bsrl __l_szero jra L_112GL_112D: cmpb #0x40,d0 | infinity? jne L_112E bsrl __l_t_operr jra L_112GL_112E: cmpb #0x60,d0 | NaN? jne L_112F bsrl __l_mon_nan jra L_112GL_112F: bsrl __l_stand | assuming a denorm...L_112G: fmovel fpsr,d0 | update status register orb a6@(USER_FPSR+3),d0 | add previously accrued exceptions fmovel d0,fpsr|| Result is now in FP0| moveml a6@(USER_DA),d0-d1/a0-a1 fmovemx a6@(USER_FP1),fp1-fp3 | note: fp0 not restored fmovel a6@(USER_FPCR),fpcr | fpcr restored unlk a6 rts|| MONADIC.GEN 1.3 4/30/91|| MONADIC.GEN --- generic MONADIC template|| This version saves all registers that will be used by the emulation| routines and restores all but FP0 on exit. The FPSR is| updated to reflect the result of the operation. Return value| is placed in FP0 for single, double and extended results.|| The package subroutines expect the incoming fpcr to be zeroed| since they need extended precision to work properly. The/* | 'final' fpcr is expected in d1 so that the calculated result */| can be properly sized and rounded. Also, if the incoming fpcr| has enabled any exceptions, the exception will be taken on the| final fmovem in this template.|| Customizations:| 1. Remove the moveml at the entry and exit of| each routine if your compiler treats those| registers as scratch./* | 2. Likewise, don't save FP0/FP1 if they are scratch */| registers.| 3. Delete handling of the fpsr if you only care about| the result.| 4. Some (most?) C compilers convert all float arguments| to double, and provide no support at all for extended| precision so remove the __l_ftanhs and __l_ftanhx entry points.| 5. Move the result to d0/d1 if the compiler is that old.| Copyright (C) Motorola, Inc. 1991| All Rights Reserved|| THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF MOTOROLA| The copyright notice above does not evidence any| actual or intended publication of such source code.| xref __l_tag| xref __l_stanh| xref __l_szero| xref __l_sone| xref __l_mon_nan| xref __l_stanhd .globl __l_ftanhs__l_ftanhs: link a6,#-LOCAL_SIZE moveml d0-d1/a0-a1,a6@(USER_DA) fmovemx fp0-fp3,a6@(USER_FP0) fmovel fpsr,a6@(USER_FPSR) fmovel fpcr,a6@(USER_FPCR) fmovel fpcr,d1 /* | user's rounding mode/precision */ fmovel #0,fpcr | force rounding mode/prec to extended,rn|| copy, convert and tag input argument| fmoves a6@(8),fp0 fmovex fp0,a6@(ETEMP) lea a6@(ETEMP),a0 bsrl __l_tag moveb d0,a6@(STAG) tstb d0 jne L_1132 bsrl __l_stanh | normalized (regular) number jra L_1136L_1132: cmpb #0x20,d0 | zero? jne L_1133 bsrl __l_szero jra L_1136L_1133: cmpb #0x40,d0 | infinity? jne L_1134 bsrl __l_sone jra L_1136L_1134: cmpb #0x60,d0 | NaN? jne L_1135 bsrl __l_mon_nan jra L_1136L_1135: bsrl __l_stanhd | assuming a denorm...L_1136: fmovel fpsr,d0 | update status register orb a6@(USER_FPSR+3),d0 | add previously accrued exceptions fmovel d0,fpsr|| Result is now in FP0| moveml a6@(USER_DA),d0-d1/a0-a1 fmovemx a6@(USER_FP1),fp1-fp3 | note: fp0 not restored fmovel a6@(USER_FPCR),fpcr | fpcr restored unlk a6 rts .globl __l_ftanhd__l_ftanhd: link a6,#-LOCAL_SIZE moveml d0-d1/a0-a1,a6@(USER_DA) fmovemx fp0-fp3,a6@(USER_FP0) fmovel fpsr,a6@(USER_FPSR) fmovel fpcr,a6@(USER_FPCR) fmovel fpcr,d1 /* | user's rounding mode/precision */ fmovel #0,fpcr | force rounding mode/prec to extended,rn|| copy, convert and tag input argument| fmoved a6@(8),fp0 fmovex fp0,a6@(ETEMP) lea a6@(ETEMP),a0 bsrl __l_tag moveb d0,a6@(STAG) tstb d0 jne L_1137 bsrl __l_stanh | normalized (regular) number jra L_113BL_1137: cmpb #0x20,d0 | zero? jne L_1138 bsrl __l_szero jra L_113BL_1138: cmpb #0x40,d0 | infinity? jne L_1139 bsrl __l_sone jra L_113BL_1139: cmpb #0x60,d0 | NaN? jne L_113A bsrl __l_mon_nan jra L_113BL_113A: bsrl __l_stanhd | assuming a denorm...L_113B: fmovel fpsr,d0 | update status register orb a6@(USER_FPSR+3),d0 | add previously accrued exceptions fmovel d0,fpsr|| Result is now in FP0| moveml a6@(USER_DA),d0-d1/a0-a1 fmovemx a6@(USER_FP1),fp1-fp3 | note: fp0 not restored fmovel a6@(USER_FPCR),fpcr | fpcr restored unlk a6 rts .globl __l_ftanhx__l_ftanhx: link a6,#-LOCAL_SIZE moveml d0-d1/a0-a1,a6@(USER_DA) fmovemx fp0-fp3,a6@(USER_FP0) fmovel fpsr,a6@(USER_FPSR) fmovel fpcr,a6@(USER_FPCR) fmovel fpcr,d1 /* | user's rounding mode/precision */ fmovel #0,fpcr | force rounding mode/prec to extended,rn|| copy, convert and tag input argument| fmovex a6@(8),fp0 fmovex fp0,a6@(ETEMP) lea a6@(ETEMP),a0 bsrl __l_tag moveb d0,a6@(STAG) tstb d0 jne L_113C bsrl __l_stanh | normalized (regular) number jra L_113GL_113C: cmpb #0x20,d0 | zero? jne L_113D bsrl __l_szero jra L_113GL_113D: cmpb #0x40,d0 | infinity? jne L_113E bsrl __l_sone jra L_113GL_113E: cmpb #0x60,d0 | NaN? jne L_113F bsrl __l_mon_nan jra L_113GL_113F: bsrl __l_stanhd | assuming a denorm...L_113G: fmovel fpsr,d0 | update status register orb a6@(USER_FPSR+3),d0 | add previously accrued exceptions fmovel d0,fpsr|| Result is now in FP0| moveml a6@(USER_DA),d0-d1/a0-a1 fmovemx a6@(USER_FP1),fp1-fp3 | note: fp0 not restored fmovel a6@(USER_FPCR),fpcr | fpcr restored unlk a6 rts|| MONADIC.GEN 1.3 4/30/91|| MONADIC.GEN --- generic MONADIC template|| This version saves all registers that will be used by the emulation| routines and restores all but FP0 on exit. The FPSR is| updated to reflect the result of the operation. Return value| is placed in FP0 for single, double and extended results.|| The package subroutines expect the incoming fpcr to be zeroed| since they need extended precision to work properly. The/* | 'final' fpcr is expected in d1 so that the calculated result */| can be properly sized and rounded. Also, if the incoming fpcr| has enabled any exceptions, the exception will be taken on the| final fmovem in this template.|| Customizations:| 1. Remove the moveml at the entry and exit of| each routine if your compiler treats those| registers as scratch./* | 2. Likewise, don't save FP0/FP1 if they are scratch */| registers.| 3. Delete handlin
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -