Subject: CVS commit: src/sys/arch/arm/arm
To: None <source-changes@NetBSD.org>
From: Steve Woodford <scw@netbsd.org>
List: source-changes
Date: 12/15/2003 09:27:18
Module Name:	src
Committed By:	scw
Date:		Mon Dec 15 09:27:18 UTC 2003

Modified Files:
	src/sys/arch/arm/arm: bcopyinout_xscale.S

Log Message:
Work-around an obscure bug (reported by a couple of people, and reproduced
exactly twice by me) which causes the code at the top of copyin which
word-aligns the destination pointer to copy more bytes than necessary,
resulting in an alignment fault later on.

The bug is difficult to reproduce, but as far as I can tell it seems
to be as a result of the condition codes being corrupted, possibly
following a page fault caused by the first ldrbt/strb instructions.
The subsequent ldr<cc>bt/str<cc>b instructions then _always_ execute.
I can't think of any obvious reason why this would happen, though.


To generate a diff of this commit:
cvs rdiff -r1.2 -r1.3 src/sys/arch/arm/arm/bcopyinout_xscale.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.