From dae84f282f792da104830a3e0b2cec52dae183a9 Mon Sep 17 00:00:00 2001 From: florian Date: Sat, 24 Dec 2005 17:43:57 +0000 Subject: [PATCH] * fixed handling of doubles in softemu mode if they are split between register and memory git-svn-id: trunk@2047 - --- compiler/arm/cgcpu.pas | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/compiler/arm/cgcpu.pas b/compiler/arm/cgcpu.pas index c1b497c252..0d3522e0df 100644 --- a/compiler/arm/cgcpu.pas +++ b/compiler/arm/cgcpu.pas @@ -212,10 +212,16 @@ unit cgcpu; a_load_ref_reg(list,location^.size,location^.size,tmpref,location^.register); LOC_REFERENCE: begin - reference_reset_base(ref,location^.reference.index,location^.reference.offset); - g_concatcopy(list,tmpref,ref,sizeleft); - if assigned(location^.next) then - internalerror(2005010710); + reference_reset_base(ref,location^.reference.index,location^.reference.offset); + { doubles in softemu mode have a strange order of registers and references } + if location^.size=OS_32 then + g_concatcopy(list,tmpref,ref,4) + else + begin + g_concatcopy(list,tmpref,ref,sizeleft); + if assigned(location^.next) then + internalerror(2005010710); + end; end; LOC_FPUREGISTER,LOC_CFPUREGISTER: case location^.size of