1 /* 1 /* 2 * fp_movem.S 2 * fp_movem.S 3 * 3 * 4 * Copyright Roman Zippel, 1997. All rights r 4 * Copyright Roman Zippel, 1997. All rights reserved. 5 * 5 * 6 * Redistribution and use in source and binary 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that t 7 * modification, are permitted provided that the following conditions 8 * are met: 8 * are met: 9 * 1. Redistributions of source code must reta 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, and the entire permission notice 10 * notice, and the entire permission notice in its entirety, 11 * including the disclaimer of warranties. 11 * including the disclaimer of warranties. 12 * 2. Redistributions in binary form must repr 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials pro 14 * documentation and/or other materials provided with the distribution. 15 * 3. The name of the author may not be used t 15 * 3. The name of the author may not be used to endorse or promote 16 * products derived from this software with 16 * products derived from this software without specific prior 17 * written permission. 17 * written permission. 18 * 18 * 19 * ALTERNATIVELY, this product may be distribu 19 * ALTERNATIVELY, this product may be distributed under the terms of 20 * the GNU General Public License, in which ca 20 * the GNU General Public License, in which case the provisions of the GPL are 21 * required INSTEAD OF the above restrictions. 21 * required INSTEAD OF the above restrictions. (This clause is 22 * necessary due to a potential bad interactio 22 * necessary due to a potential bad interaction between the GPL and 23 * the restrictions contained in a BSD-style c 23 * the restrictions contained in a BSD-style copyright.) 24 * 24 * 25 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY 25 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED 26 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 26 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 27 * OF MERCHANTABILITY AND FITNESS FOR A PARTIC 27 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 28 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR B 28 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 29 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, O 29 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 30 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 30 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILI 32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 33 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIG 33 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 34 * ARISING IN ANY WAY OUT OF THE USE OF THIS S 34 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 35 * OF THE POSSIBILITY OF SUCH DAMAGE. 35 * OF THE POSSIBILITY OF SUCH DAMAGE. 36 */ 36 */ 37 37 38 #include "fp_emu.h" 38 #include "fp_emu.h" 39 #include "fp_decode.h" 39 #include "fp_decode.h" 40 40 41 | set flags for decode macros for fmovem 41 | set flags for decode macros for fmovem 42 do_fmovem=1 42 do_fmovem=1 43 43 44 .globl fp_fmovem_fp, fp_fmovem_cr 44 .globl fp_fmovem_fp, fp_fmovem_cr 45 45 46 | %d1 contains the mask and count of the regis 46 | %d1 contains the mask and count of the register list 47 | for other register usage see fp_decode.h 47 | for other register usage see fp_decode.h 48 48 49 fp_fmovem_fp: 49 fp_fmovem_fp: 50 printf PDECODE,"fmovem.x " 50 printf PDECODE,"fmovem.x " 51 | get register list and count them 51 | get register list and count them 52 btst #11,%d2 52 btst #11,%d2 53 jne 1f 53 jne 1f 54 bfextu %d2{#24,#8},%d0 | stat 54 bfextu %d2{#24,#8},%d0 | static register list 55 jra 2f 55 jra 2f 56 1: bfextu %d2{#25,#3},%d0 | dyna 56 1: bfextu %d2{#25,#3},%d0 | dynamic register list 57 jsr fp_get_data_reg 57 jsr fp_get_data_reg 58 2: move.l %d0,%d1 58 2: move.l %d0,%d1 59 swap %d1 59 swap %d1 60 jra 2f 60 jra 2f 61 1: addq.w #1,%d1 | coun 61 1: addq.w #1,%d1 | count the # of registers in 62 2: lsr.b #1,%d0 | regi 62 2: lsr.b #1,%d0 | register list and keep it in %d1 63 jcs 1b 63 jcs 1b 64 jne 2b 64 jne 2b 65 printf PDECODE,"#%08x",1,%d1 65 printf PDECODE,"#%08x",1,%d1 66 #ifdef FPU_EMU_DEBUG 66 #ifdef FPU_EMU_DEBUG 67 btst #12,%d2 67 btst #12,%d2 68 jne 1f 68 jne 1f 69 printf PDECODE,"-" | decr 69 printf PDECODE,"-" | decremental move 70 jra 2f 70 jra 2f 71 1: printf PDECODE,"+" | incr 71 1: printf PDECODE,"+" | incremental move 72 2: btst #13,%d2 72 2: btst #13,%d2 73 jeq 1f 73 jeq 1f 74 printf PDECODE,"->" | fpu 74 printf PDECODE,"->" | fpu -> cpu 75 jra 2f 75 jra 2f 76 1: printf PDECODE,"<-" | fpu 76 1: printf PDECODE,"<-" | fpu <- cpu 77 2: 77 2: 78 #endif 78 #endif 79 79 80 | decode address mode 80 | decode address mode 81 fp_decode_addr_mode 81 fp_decode_addr_mode 82 82 83 .long fp_ill, fp_ill 83 .long fp_ill, fp_ill 84 .long fpr_indirect, fpr_postinc 84 .long fpr_indirect, fpr_postinc 85 .long fpr_predecr, fpr_disp16 85 .long fpr_predecr, fpr_disp16 86 .long fpr_extmode0, fpr_extmode1 86 .long fpr_extmode0, fpr_extmode1 87 87 88 | addressing mode: address register in 88 | addressing mode: address register indirect 89 fpr_indirect: 89 fpr_indirect: 90 fp_mode_addr_indirect 90 fp_mode_addr_indirect 91 jra fpr_do_movem 91 jra fpr_do_movem 92 92 93 | addressing mode: address register in 93 | addressing mode: address register indirect with postincrement 94 fpr_postinc: 94 fpr_postinc: 95 fp_mode_addr_indirect_postinc 95 fp_mode_addr_indirect_postinc 96 jra fpr_do_movem 96 jra fpr_do_movem 97 97 98 fpr_predecr: 98 fpr_predecr: 99 fp_mode_addr_indirect_predec 99 fp_mode_addr_indirect_predec 100 jra fpr_do_movem 100 jra fpr_do_movem 101 101 102 | addressing mode: address register/pr 102 | addressing mode: address register/programm counter indirect 103 | with 16bit displace 103 | with 16bit displacement 104 fpr_disp16: 104 fpr_disp16: 105 fp_mode_addr_indirect_disp16 105 fp_mode_addr_indirect_disp16 106 jra fpr_do_movem 106 jra fpr_do_movem 107 107 108 fpr_extmode0: 108 fpr_extmode0: 109 fp_mode_addr_indirect_extmode0 109 fp_mode_addr_indirect_extmode0 110 jra fpr_do_movem 110 jra fpr_do_movem 111 111 112 fpr_extmode1: 112 fpr_extmode1: 113 fp_decode_addr_reg 113 fp_decode_addr_reg 114 jmp ([0f:w,%pc,%d0*4]) 114 jmp ([0f:w,%pc,%d0*4]) 115 115 116 .align 4 116 .align 4 117 0: 117 0: 118 .long fpr_absolute_short, fpr_absolu 118 .long fpr_absolute_short, fpr_absolute_long 119 .long fpr_disp16, fpr_extmode0 119 .long fpr_disp16, fpr_extmode0 120 .long fp_ill, fp_ill 120 .long fp_ill, fp_ill 121 .long fp_ill, fp_ill 121 .long fp_ill, fp_ill 122 122 123 fpr_absolute_short: 123 fpr_absolute_short: 124 fp_mode_abs_short 124 fp_mode_abs_short 125 jra fpr_do_movem 125 jra fpr_do_movem 126 126 127 fpr_absolute_long: 127 fpr_absolute_long: 128 fp_mode_abs_long 128 fp_mode_abs_long 129 | jra fpr_do_movem 129 | jra fpr_do_movem 130 130 131 fpr_do_movem: 131 fpr_do_movem: 132 swap %d1 | get 132 swap %d1 | get fpu register list 133 lea (FPD_FPREG,FPDATA),%a1 133 lea (FPD_FPREG,FPDATA),%a1 134 moveq #12,%d0 134 moveq #12,%d0 135 btst #12,%d2 135 btst #12,%d2 136 jne 1f 136 jne 1f 137 lea (-12,%a1,%d0*8),%a1 137 lea (-12,%a1,%d0*8),%a1 138 neg.l %d0 138 neg.l %d0 139 1: btst #13,%d2 139 1: btst #13,%d2 140 jne 4f 140 jne 4f 141 | move register from memory into fpu 141 | move register from memory into fpu 142 jra 3f 142 jra 3f 143 1: printf PMOVEM,"(%p>%p)",2,%a0,%a1 143 1: printf PMOVEM,"(%p>%p)",2,%a0,%a1 144 getuser.l (%a0)+,%d2,fp_err_ua1,%a0 144 getuser.l (%a0)+,%d2,fp_err_ua1,%a0 145 lsr.l #8,%d2 145 lsr.l #8,%d2 146 lsr.l #7,%d2 146 lsr.l #7,%d2 147 lsr.w #1,%d2 147 lsr.w #1,%d2 148 move.l %d2,(%a1)+ 148 move.l %d2,(%a1)+ 149 getuser.l (%a0)+,%d2,fp_err_ua1,%a0 149 getuser.l (%a0)+,%d2,fp_err_ua1,%a0 150 move.l %d2,(%a1)+ 150 move.l %d2,(%a1)+ 151 getuser.l (%a0),%d2,fp_err_ua1,%a0 151 getuser.l (%a0),%d2,fp_err_ua1,%a0 152 move.l %d2,(%a1) 152 move.l %d2,(%a1) 153 subq.l #8,%a0 153 subq.l #8,%a0 154 subq.l #8,%a1 154 subq.l #8,%a1 155 add.l %d0,%a0 155 add.l %d0,%a0 156 2: add.l %d0,%a1 156 2: add.l %d0,%a1 157 3: lsl.b #1,%d1 157 3: lsl.b #1,%d1 158 jcs 1b 158 jcs 1b 159 jne 2b 159 jne 2b 160 jra 5f 160 jra 5f 161 | move register from fpu into memory 161 | move register from fpu into memory 162 1: printf PMOVEM,"(%p>%p)",2,%a1,%a0 162 1: printf PMOVEM,"(%p>%p)",2,%a1,%a0 163 move.l (%a1)+,%d2 163 move.l (%a1)+,%d2 164 lsl.w #1,%d2 164 lsl.w #1,%d2 165 lsl.l #7,%d2 165 lsl.l #7,%d2 166 lsl.l #8,%d2 166 lsl.l #8,%d2 167 putuser.l %d2,(%a0)+,fp_err_ua1,%a0 167 putuser.l %d2,(%a0)+,fp_err_ua1,%a0 168 move.l (%a1)+,%d2 168 move.l (%a1)+,%d2 169 putuser.l %d2,(%a0)+,fp_err_ua1,%a0 169 putuser.l %d2,(%a0)+,fp_err_ua1,%a0 170 move.l (%a1),%d2 170 move.l (%a1),%d2 171 putuser.l %d2,(%a0),fp_err_ua1,%a0 171 putuser.l %d2,(%a0),fp_err_ua1,%a0 172 subq.l #8,%a1 172 subq.l #8,%a1 173 subq.l #8,%a0 173 subq.l #8,%a0 174 add.l %d0,%a0 174 add.l %d0,%a0 175 2: add.l %d0,%a1 175 2: add.l %d0,%a1 176 4: lsl.b #1,%d1 176 4: lsl.b #1,%d1 177 jcs 1b 177 jcs 1b 178 jne 2b 178 jne 2b 179 5: 179 5: 180 printf PDECODE,"\n" 180 printf PDECODE,"\n" 181 #if 0 181 #if 0 182 lea (FPD_FPREG,FPDATA),%a0 182 lea (FPD_FPREG,FPDATA),%a0 183 printf PMOVEM,"fp:" 183 printf PMOVEM,"fp:" 184 printx PMOVEM,%a0@(0) 184 printx PMOVEM,%a0@(0) 185 printx PMOVEM,%a0@(12) 185 printx PMOVEM,%a0@(12) 186 printf PMOVEM,"\n " 186 printf PMOVEM,"\n " 187 printx PMOVEM,%a0@(24) 187 printx PMOVEM,%a0@(24) 188 printx PMOVEM,%a0@(36) 188 printx PMOVEM,%a0@(36) 189 printf PMOVEM,"\n " 189 printf PMOVEM,"\n " 190 printx PMOVEM,%a0@(48) 190 printx PMOVEM,%a0@(48) 191 printx PMOVEM,%a0@(60) 191 printx PMOVEM,%a0@(60) 192 printf PMOVEM,"\n " 192 printf PMOVEM,"\n " 193 printx PMOVEM,%a0@(72) 193 printx PMOVEM,%a0@(72) 194 printx PMOVEM,%a0@(84) 194 printx PMOVEM,%a0@(84) 195 printf PMOVEM,"\n" 195 printf PMOVEM,"\n" 196 #endif 196 #endif 197 jra fp_end 197 jra fp_end 198 198 199 | set flags for decode macros for fmovem contr 199 | set flags for decode macros for fmovem control register 200 do_fmovem=1 200 do_fmovem=1 201 do_fmovem_cr=1 201 do_fmovem_cr=1 202 202 203 fp_fmovem_cr: 203 fp_fmovem_cr: 204 printf PDECODE,"fmovem.cr " 204 printf PDECODE,"fmovem.cr " 205 | get register list and count them 205 | get register list and count them 206 bfextu %d2{#19,#3},%d0 206 bfextu %d2{#19,#3},%d0 207 move.l %d0,%d1 207 move.l %d0,%d1 208 swap %d1 208 swap %d1 209 jra 2f 209 jra 2f 210 1: addq.w #1,%d1 210 1: addq.w #1,%d1 211 2: lsr.l #1,%d0 211 2: lsr.l #1,%d0 212 jcs 1b 212 jcs 1b 213 jne 2b 213 jne 2b 214 printf PDECODE,"#%08x",1,%d1 214 printf PDECODE,"#%08x",1,%d1 215 #ifdef FPU_EMU_DEBUG 215 #ifdef FPU_EMU_DEBUG 216 btst #13,%d2 216 btst #13,%d2 217 jeq 1f 217 jeq 1f 218 printf PDECODE,"->" | fpu 218 printf PDECODE,"->" | fpu -> cpu 219 jra 2f 219 jra 2f 220 1: printf PDECODE,"<-" | fpu 220 1: printf PDECODE,"<-" | fpu <- cpu 221 2: 221 2: 222 #endif 222 #endif 223 223 224 | decode address mode 224 | decode address mode 225 fp_decode_addr_mode 225 fp_decode_addr_mode 226 226 227 .long fpc_data, fpc_addr 227 .long fpc_data, fpc_addr 228 .long fpc_indirect, fpc_postinc 228 .long fpc_indirect, fpc_postinc 229 .long fpc_predecr, fpc_disp16 229 .long fpc_predecr, fpc_disp16 230 .long fpc_extmode0, fpc_extmode1 230 .long fpc_extmode0, fpc_extmode1 231 231 232 fpc_data: 232 fpc_data: 233 fp_mode_data_direct 233 fp_mode_data_direct 234 move.w %d0,%d1 234 move.w %d0,%d1 235 bfffo %d2{#19,#3},%d0 235 bfffo %d2{#19,#3},%d0 236 sub.w #19,%d0 236 sub.w #19,%d0 237 lea (FPD_FPCR,FPDATA,%d0.w*4),%a1 237 lea (FPD_FPCR,FPDATA,%d0.w*4),%a1 238 btst #13,%d2 238 btst #13,%d2 239 jne 1f 239 jne 1f 240 move.w %d1,%d0 240 move.w %d1,%d0 241 jsr fp_get_data_reg 241 jsr fp_get_data_reg 242 move.l %d0,(%a1) 242 move.l %d0,(%a1) 243 jra fpc_movem_fin 243 jra fpc_movem_fin 244 1: move.l (%a1),%d0 244 1: move.l (%a1),%d0 245 jsr fp_put_data_reg 245 jsr fp_put_data_reg 246 jra fpc_movem_fin 246 jra fpc_movem_fin 247 247 248 fpc_addr: 248 fpc_addr: 249 fp_decode_addr_reg 249 fp_decode_addr_reg 250 printf PDECODE,"a%d",1,%d0 250 printf PDECODE,"a%d",1,%d0 251 btst #13,%d2 251 btst #13,%d2 252 jne 1f 252 jne 1f 253 jsr fp_get_addr_reg 253 jsr fp_get_addr_reg 254 move.l %a0,(FPD_FPIAR,FPDATA) 254 move.l %a0,(FPD_FPIAR,FPDATA) 255 jra fpc_movem_fin 255 jra fpc_movem_fin 256 1: move.l (FPD_FPIAR,FPDATA),%a0 256 1: move.l (FPD_FPIAR,FPDATA),%a0 257 jsr fp_put_addr_reg 257 jsr fp_put_addr_reg 258 jra fpc_movem_fin 258 jra fpc_movem_fin 259 259 260 fpc_indirect: 260 fpc_indirect: 261 fp_mode_addr_indirect 261 fp_mode_addr_indirect 262 jra fpc_do_movem 262 jra fpc_do_movem 263 263 264 fpc_postinc: 264 fpc_postinc: 265 fp_mode_addr_indirect_postinc 265 fp_mode_addr_indirect_postinc 266 jra fpc_do_movem 266 jra fpc_do_movem 267 267 268 fpc_predecr: 268 fpc_predecr: 269 fp_mode_addr_indirect_predec 269 fp_mode_addr_indirect_predec 270 jra fpc_do_movem 270 jra fpc_do_movem 271 271 272 fpc_disp16: 272 fpc_disp16: 273 fp_mode_addr_indirect_disp16 273 fp_mode_addr_indirect_disp16 274 jra fpc_do_movem 274 jra fpc_do_movem 275 275 276 fpc_extmode0: 276 fpc_extmode0: 277 fp_mode_addr_indirect_extmode0 277 fp_mode_addr_indirect_extmode0 278 jra fpc_do_movem 278 jra fpc_do_movem 279 279 280 fpc_extmode1: 280 fpc_extmode1: 281 fp_decode_addr_reg 281 fp_decode_addr_reg 282 jmp ([0f:w,%pc,%d0*4]) 282 jmp ([0f:w,%pc,%d0*4]) 283 283 284 .align 4 284 .align 4 285 0: 285 0: 286 .long fpc_absolute_short, fpc_absolu 286 .long fpc_absolute_short, fpc_absolute_long 287 .long fpc_disp16, fpc_extmode0 287 .long fpc_disp16, fpc_extmode0 288 .long fpc_immediate, fp_ill 288 .long fpc_immediate, fp_ill 289 .long fp_ill, fp_ill 289 .long fp_ill, fp_ill 290 290 291 fpc_absolute_short: 291 fpc_absolute_short: 292 fp_mode_abs_short 292 fp_mode_abs_short 293 jra fpc_do_movem 293 jra fpc_do_movem 294 294 295 fpc_absolute_long: 295 fpc_absolute_long: 296 fp_mode_abs_long 296 fp_mode_abs_long 297 jra fpc_do_movem 297 jra fpc_do_movem 298 298 299 fpc_immediate: 299 fpc_immediate: 300 fp_get_pc %a0 300 fp_get_pc %a0 301 lea (%a0,%d1.w*4),%a1 301 lea (%a0,%d1.w*4),%a1 302 fp_put_pc %a1 302 fp_put_pc %a1 303 printf PDECODE,"#imm" 303 printf PDECODE,"#imm" 304 | jra fpc_do_movem 304 | jra fpc_do_movem 305 #if 0 305 #if 0 306 swap %d1 306 swap %d1 307 lsl.l #5,%d1 307 lsl.l #5,%d1 308 lea (FPD_FPCR,FPDATA),%a0 308 lea (FPD_FPCR,FPDATA),%a0 309 jra 3f 309 jra 3f 310 1: move.l %d0,(%a0) 310 1: move.l %d0,(%a0) 311 2: addq.l #4,%a0 311 2: addq.l #4,%a0 312 3: lsl.b #1,%d1 312 3: lsl.b #1,%d1 313 jcs 1b 313 jcs 1b 314 jne 2b 314 jne 2b 315 jra fpc_movem_fin 315 jra fpc_movem_fin 316 #endif 316 #endif 317 317 318 fpc_do_movem: 318 fpc_do_movem: 319 swap %d1 | get 319 swap %d1 | get fpu register list 320 lsl.l #5,%d1 320 lsl.l #5,%d1 321 lea (FPD_FPCR,FPDATA),%a1 321 lea (FPD_FPCR,FPDATA),%a1 322 1: btst #13,%d2 322 1: btst #13,%d2 323 jne 4f 323 jne 4f 324 324 325 | move register from memory into fpu 325 | move register from memory into fpu 326 jra 3f 326 jra 3f 327 1: printf PMOVEM,"(%p>%p)",2,%a0,%a1 327 1: printf PMOVEM,"(%p>%p)",2,%a0,%a1 328 getuser.l (%a0)+,%d0,fp_err_ua1,%a0 328 getuser.l (%a0)+,%d0,fp_err_ua1,%a0 329 move.l %d0,(%a1) 329 move.l %d0,(%a1) 330 2: addq.l #4,%a1 330 2: addq.l #4,%a1 331 3: lsl.b #1,%d1 331 3: lsl.b #1,%d1 332 jcs 1b 332 jcs 1b 333 jne 2b 333 jne 2b 334 jra fpc_movem_fin 334 jra fpc_movem_fin 335 335 336 | move register from fpu into memory 336 | move register from fpu into memory 337 1: printf PMOVEM,"(%p>%p)",2,%a1,%a0 337 1: printf PMOVEM,"(%p>%p)",2,%a1,%a0 338 move.l (%a1),%d0 338 move.l (%a1),%d0 339 putuser.l %d0,(%a0)+,fp_err_ua1,%a0 339 putuser.l %d0,(%a0)+,fp_err_ua1,%a0 340 2: addq.l #4,%a1 340 2: addq.l #4,%a1 341 4: lsl.b #1,%d1 341 4: lsl.b #1,%d1 342 jcs 1b 342 jcs 1b 343 jne 2b 343 jne 2b 344 344 345 fpc_movem_fin: 345 fpc_movem_fin: 346 and.l #0x0000fff0,(FPD_FPCR,FPDATA) 346 and.l #0x0000fff0,(FPD_FPCR,FPDATA) 347 and.l #0x0ffffff8,(FPD_FPSR,FPDATA) 347 and.l #0x0ffffff8,(FPD_FPSR,FPDATA) 348 move.l (FPD_FPCR,FPDATA),%d0 348 move.l (FPD_FPCR,FPDATA),%d0 349 lsr.l #4,%d0 349 lsr.l #4,%d0 350 moveq #3,%d1 350 moveq #3,%d1 351 and.l %d0,%d1 351 and.l %d0,%d1 352 move.w %d1,(FPD_RND,FPDATA) 352 move.w %d1,(FPD_RND,FPDATA) 353 lsr.l #2,%d0 353 lsr.l #2,%d0 354 moveq #3,%d1 354 moveq #3,%d1 355 and.l %d0,%d1 355 and.l %d0,%d1 356 move.w %d1,(FPD_PREC,FPDATA) 356 move.w %d1,(FPD_PREC,FPDATA) 357 printf PDECODE,"\n" 357 printf PDECODE,"\n" 358 #if 0 358 #if 0 359 printf PMOVEM,"fpcr : %08x\n",1,FPDAT 359 printf PMOVEM,"fpcr : %08x\n",1,FPDATA@(FPD_FPCR) 360 printf PMOVEM,"fpsr : %08x\n",1,FPDAT 360 printf PMOVEM,"fpsr : %08x\n",1,FPDATA@(FPD_FPSR) 361 printf PMOVEM,"fpiar: %08x\n",1,FPDAT 361 printf PMOVEM,"fpiar: %08x\n",1,FPDATA@(FPD_FPIAR) 362 clr.l %d0 362 clr.l %d0 363 move.w (FPD_PREC,FPDATA),%d0 363 move.w (FPD_PREC,FPDATA),%d0 364 printf PMOVEM,"prec : %04x\n",1,%d0 364 printf PMOVEM,"prec : %04x\n",1,%d0 365 move.w (FPD_RND,FPDATA),%d0 365 move.w (FPD_RND,FPDATA),%d0 366 printf PMOVEM,"rnd : %04x\n",1,%d0 366 printf PMOVEM,"rnd : %04x\n",1,%d0 367 #endif 367 #endif 368 jra fp_end 368 jra fp_end
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.