Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2)  * fp_move.S
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  * Copyright Roman Zippel, 1997.  All rights reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  * Redistribution and use in source and binary forms, with or without
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  * modification, are permitted provided that the following conditions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8)  * are met:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9)  * 1. Redistributions of source code must retain the above copyright
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10)  *    notice, and the entire permission notice in its entirety,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11)  *    including the disclaimer of warranties.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12)  * 2. Redistributions in binary form must reproduce the above copyright
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13)  *    notice, this list of conditions and the following disclaimer in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14)  *    documentation and/or other materials provided with the distribution.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15)  * 3. The name of the author may not be used to endorse or promote
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16)  *    products derived from this software without specific prior
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17)  *    written permission.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19)  * ALTERNATIVELY, this product may be distributed under the terms of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20)  * the GNU General Public License, in which case the provisions of the GPL are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21)  * required INSTEAD OF the above restrictions.  (This clause is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22)  * necessary due to a potential bad interaction between the GPL and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23)  * the restrictions contained in a BSD-style copyright.)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25)  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26)  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27)  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28)  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29)  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30)  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31)  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32)  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33)  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34)  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35)  * OF THE POSSIBILITY OF SUCH DAMAGE.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) #include "fp_emu.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) #include "fp_decode.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) do_no_pc_mode=1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 	.globl	fp_fmove_fp2mem
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) fp_fmove_fp2mem:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	clr.b	(2+FPD_FPSR,FPDATA)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	fp_decode_dest_format
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	move.w	%d0,%d1			| store data size twice in %d1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	swap	%d1			| one can be trashed below
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	move.w	%d0,%d1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) #ifdef FPU_EMU_DEBUG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	lea	0f,%a0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 	clr.l	%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 	move.b	(%a0,%d1.w),%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	printf	PDECODE,"fmove.%c ",1,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	fp_decode_src_reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	printf	PDECODE,"fp%d,",1,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	.data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 0:	.byte	'l','s','x','p','w','d','b','p'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 	.previous
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	| encode addressing mode for dest
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	fp_decode_addr_mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 	.long	fp_data, fp_ill
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 	.long	fp_indirect, fp_postinc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 	.long	fp_predecr, fp_disp16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	.long	fp_extmode0, fp_extmode1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	| addressing mode: data register direct
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) fp_data:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	fp_mode_data_direct
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 	move.w	%d0,%d1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 	fp_decode_src_reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 	fp_get_fp_reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) 	lea	(FPD_TEMPFP1,FPDATA),%a1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 	move.l	(%a0)+,(%a1)+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 	move.l	(%a0)+,(%a1)+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	move.l	(%a0),(%a1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 	lea	(-8,%a1),%a0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 	swap	%d1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 	move.l	%d1,%d2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 	printf	PDECODE,"\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) 	jmp	([0f:w,%pc,%d1.w*4])
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 	.align	4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 0:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 	.long	fp_data_long, fp_data_single
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 	.long	fp_ill, fp_ill
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) 	.long	fp_data_word, fp_ill
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 	.long	fp_data_byte, fp_ill
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) fp_data_byte:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	jsr	fp_normalize_ext
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 	jsr	fp_conv_ext2byte
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 	move.l	%d0,%d1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 	swap	%d2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) 	move.w	%d2,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 	jsr	fp_get_data_reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 	move.b	%d1,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 	move.w	%d2,%d1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 	jsr	fp_put_data_reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 	jra	fp_final
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) fp_data_word:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	jsr	fp_normalize_ext
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 	jsr	fp_conv_ext2short
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 	move.l	%d0,%d1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 	swap	%d2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 	move.w	%d2,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 	jsr	fp_get_data_reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 	move.w	%d1,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 	move.l	%d2,%d1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 	jsr	fp_put_data_reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 	jra	fp_final
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) fp_data_long:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 	jsr	fp_normalize_ext
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 	jsr	fp_conv_ext2long
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 	swap	%d2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 	move.w	%d2,%d1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 	jsr	fp_put_data_reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 	jra	fp_final
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) fp_data_single:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 	jsr	fp_normalize_ext
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 	jsr	fp_conv_ext2single
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 	swap	%d2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 	move.w	%d2,%d1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 	jsr	fp_put_data_reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 	jra	fp_final
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 	| addressing mode: address register indirect
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) fp_indirect:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) 	fp_mode_addr_indirect
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 	jra	fp_putdest
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 	| addressing mode: address register indirect with postincrement
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) fp_postinc:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 	fp_mode_addr_indirect_postinc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) 	jra	fp_putdest
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 	| addressing mode: address register indirect with predecrement
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) fp_predecr:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 	fp_mode_addr_indirect_predec
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 	jra	fp_putdest
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) 	| addressing mode: address register indirect with 16bit displacement
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) fp_disp16:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 	fp_mode_addr_indirect_disp16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) 	jra     fp_putdest
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) fp_extmode0:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) 	fp_mode_addr_indirect_extmode0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 	jra	fp_putdest
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) fp_extmode1:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 	fp_decode_addr_reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) 	jmp	([0f:w,%pc,%d0*4])
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 	.align	4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) 0:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 	.long	fp_abs_short, fp_abs_long
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) 	.long	fp_ill, fp_ill
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) 	.long	fp_ill, fp_ill
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 	.long	fp_ill, fp_ill
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) fp_abs_short:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 	fp_mode_abs_short
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) 	jra	fp_putdest
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) fp_abs_long:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) 	fp_mode_abs_long
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 	jra	fp_putdest
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) fp_putdest:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 	move.l	%a0,%a1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 	fp_decode_src_reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) 	move.l	%d1,%d2			| save size
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 	fp_get_fp_reg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) 	printf	PDECODE,"\n"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 	addq.l	#8,%a0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 	move.l	(%a0),-(%sp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 	move.l	-(%a0),-(%sp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 	move.l	-(%a0),-(%sp)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 	move.l	%sp,%a0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) 	jsr	fp_normalize_ext
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) 	swap	%d2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) 	jmp	([0f:w,%pc,%d2.w*4])
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 	.align	4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 0:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) 	.long	fp_format_long, fp_format_single
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 	.long	fp_format_extended, fp_format_packed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) 	.long	fp_format_word, fp_format_double
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) 	.long	fp_format_byte, fp_format_packed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) fp_format_long:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) 	jsr	fp_conv_ext2long
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) 	putuser.l %d0,(%a1),fp_err_ua1,%a1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) 	jra	fp_finish_move
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) fp_format_single:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) 	jsr	fp_conv_ext2single
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) 	putuser.l %d0,(%a1),fp_err_ua1,%a1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 	jra	fp_finish_move
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) fp_format_extended:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) 	move.l	(%a0)+,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 	lsl.w	#1,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) 	lsl.l	#7,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) 	lsl.l	#8,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) 	putuser.l %d0,(%a1)+,fp_err_ua1,%a1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) 	move.l	(%a0)+,%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) 	putuser.l %d0,(%a1)+,fp_err_ua1,%a1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) 	move.l	(%a0),%d0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 	putuser.l %d0,(%a1),fp_err_ua1,%a1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) 	jra	fp_finish_move
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) fp_format_packed:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) 	/* not supported yet */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) 	lea	(12,%sp),%sp
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) 	jra	fp_ill
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) fp_format_word:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) 	jsr	fp_conv_ext2short
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) 	putuser.w %d0,(%a1),fp_err_ua1,%a1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) 	jra	fp_finish_move
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) fp_format_double:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) 	jsr	fp_conv_ext2double
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) 	jra	fp_finish_move
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) fp_format_byte:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) 	jsr	fp_conv_ext2byte
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) 	putuser.b %d0,(%a1),fp_err_ua1,%a1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) |	jra	fp_finish_move
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) fp_finish_move:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) 	lea	(12,%sp),%sp
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) 	jra	fp_final