From mboxrd@z Thu Jan 1 00:00:00 1970 From: linux@arm.linux.org.uk (Russell King - ARM Linux) Date: Wed, 26 May 2010 21:10:17 +0100 Subject: [PATCH] ARM:VFPv3:enable {d16-d31} access In-Reply-To: <5A47E75E594F054BAF48C5E4FC4B92AB0322FA8E37@dbde02.ent.ti.com> References: <1274818736-26597-1-git-send-email-tarun.kanti@ti.com> <5A47E75E594F054BAF48C5E4FC4B92AB0322FA884E@dbde02.ent.ti.com> <20100525185741.GB16204@n2100.arm.linux.org.uk> <5A47E75E594F054BAF48C5E4FC4B92AB0322FA8E37@dbde02.ent.ti.com> Message-ID: <20100526201017.GE6232@n2100.arm.linux.org.uk> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Wed, May 26, 2010 at 05:13:24PM +0530, DebBarma, Tarun Kanti wrote: > 1) With the existing implementation I am not able to correctly > write/read {d0-d15} but not the {d16-d31} set > > 2) With my changes I am able to write/read correctly. The reason this happens is simple. In vfp_get_double(), we have: 1: fmrrd r0, r1, d\dr 1: mrrc p11, 3, r0, r1, c\dr @ fmrrd r0, r1, d\dr but in vfp_put_double(), we have: 1: fmdrr d\dr, r0, r1 1: mcrr p11, 3, r1, r2, c\dr @ fmdrr r1, r2, d\dr Note the different registers. Change "r1, r2" to "r0, r1" and it should work.