Subject: Re: What's difference between ARM_VECTORS_LOW and ARM_VECTORS_HIGH?
To: Toru Nishimura <email@example.com>
From: Richard Earnshaw <firstname.lastname@example.org>
Date: 04/13/2007 08:49:57
On Fri, 2007-04-13 at 14:31 +0900, Toru Nishimura wrote:
> M. Warner Losh <email@example.com> comments;
> > My guess is so that you can either map the memory low or high.
> Yes, they want to mimic MIPS/PPC way, but the feature makes the
> complicated story worse, and I think not a relevant feature in practice.
> It would be nicer just to have "reset entry at high addr", not the entire
> exception vector.
No, its more to do with the memory mappings for a kernel. It's far
easier if your operating system pages live at the top of the Virtual
memory range to have the vectors at a high address than to have them at
a lower one (where the vectors are pretty much in the user pages
(particularly, part of the user level1 look up).
When the vectors live at the high memory address, then the mapping can
be shared with the kernel pages and life becomes much easier.
NetBSD at one time had a nasty bug related to low vectors where a
process could swap out the vector page and unmap it. A kernel trap in
that process would then result in the machine going completely catatonic
with no way into the debugger to find out why.
What complicates things overall for NetBSD is that we still need to
support both models of operation... for now!