Subject: CVS commit: src/sys/arch/arm/arm32
To: None <source-changes@NetBSD.org>
From: Christos Zoulas <christos@netbsd.org>
List: source-changes
Date: 01/06/2007 00:40:48
Module Name:	src
Committed By:	christos
Date:		Sat Jan  6 00:40:48 UTC 2007

Modified Files:
	src/sys/arch/arm/arm32: pmap.c

Log Message:
From Scott Allen in http://mail-index.netbsd.org/port-arm/2006/07/26/0000.html
I ran into a problem when I tried to set up a mapping that started at virtual
address 0xFFF00000 and was 0x00100000 long.  In other words, the mapping
should have gone to the end of the 32 bit address space.  The mapping was made
with no problem, but pmap_devmap_find_va() wouldn't find an address within the
mapping.  For example, if I told it to find a mapping for 0x1000 bytes at
0xFFF01000, it would try to make sure that 0xFFF01000 was greater than
0xFFF00000 and that (0xFFF01000+0x1000) was less than (0xFFF00000+0x00100000).
However, that last expression (0xFFF00000+0x00100000) wrapped around to be
simply 0x00000000 so it wasn't found.  This patch fixes this problem in
pmap_devmap_find_va() and pmap_devmap_find_pa() by subtracting one off of the
sizes to be compared, so in my example, (0xFFF01000+0x1000-1) will be less
than (0xFFF00000+0x00100000-1).


To generate a diff of this commit:
cvs rdiff -r1.157 -r1.158 src/sys/arch/arm/arm32/pmap.c

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