mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 03:11:39 +01:00 
			
		
		
		
	m68k: instead of the FPU, use CPU instructions to copy cgparas to stack
git-svn-id: trunk@36289 -
This commit is contained in:
		
							parent
							
								
									744facb7fc
								
							
						
					
					
						commit
						7ed9b9f188
					
				| @ -1079,7 +1079,7 @@ unit cgcpu; | |||||||
| 
 | 
 | ||||||
|     procedure tcg68k.a_loadfpu_ref_cgpara(list : TAsmList; size : tcgsize;const ref : treference;const cgpara : TCGPara); |     procedure tcg68k.a_loadfpu_ref_cgpara(list : TAsmList; size : tcgsize;const ref : treference;const cgpara : TCGPara); | ||||||
|       var |       var | ||||||
|         href : treference; |         href, href2 : treference; | ||||||
|         freg : tregister; |         freg : tregister; | ||||||
|       begin |       begin | ||||||
|         if current_settings.fputype = fpu_soft then |         if current_settings.fputype = fpu_soft then | ||||||
| @ -1101,12 +1101,25 @@ unit cgcpu; | |||||||
|         else |         else | ||||||
|           if use_push(cgpara) and (current_settings.fputype in [fpu_68881,fpu_coldfire]) then |           if use_push(cgpara) and (current_settings.fputype in [fpu_68881,fpu_coldfire]) then | ||||||
|             begin |             begin | ||||||
|               { fmove can't do <ea> -> <ea>, so move it to an fpreg first } |               //list.concat(tai_comment.create(strpnew('a_loadfpu_ref_cgpara copy'))); | ||||||
|               freg:=getfpuregister(list,size); |               cgpara.check_simple_location; | ||||||
|               a_loadfpu_ref_reg(list,size,size,ref,freg); |  | ||||||
|               reference_reset_base(href, NR_STACK_POINTER_REG, 0, cgpara.alignment, []); |               reference_reset_base(href, NR_STACK_POINTER_REG, 0, cgpara.alignment, []); | ||||||
|               href.direction := dir_dec; |               href.direction := dir_dec; | ||||||
|               list.concat(taicpu.op_reg_ref(A_FMOVE,tcgsize2opsize[cgpara.location^.size],freg,href)); |               case size of | ||||||
|  |                 OS_F64: | ||||||
|  |                   begin | ||||||
|  |                     href2:=ref; | ||||||
|  |                     inc(href2.offset,8); | ||||||
|  |                     fixref(list,href2,true); | ||||||
|  |                     href2.direction := dir_dec; | ||||||
|  |                     cg.a_load_ref_ref(list,OS_32,OS_32,href2,href); | ||||||
|  |                     cg.a_load_ref_ref(list,OS_32,OS_32,href2,href); | ||||||
|  |                   end; | ||||||
|  |                 OS_F32: | ||||||
|  |                   cg.a_load_ref_ref(list,OS_32,OS_32,ref,href); | ||||||
|  |                 else | ||||||
|  |                   internalerror(2017052110); | ||||||
|  |               end; | ||||||
|             end |             end | ||||||
|           else |           else | ||||||
|             begin |             begin | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Károly Balogh
						Károly Balogh