[PATCH] Use CONFIG_VECTORS_BASE instead of hardcoded 0xffff0000.
Linus Walleij
linus.ml.walleij at gmail.com
Tue Oct 20 15:51:35 EDT 2009
2009/10/20 Benoit Fouet <benoit.fouet at free.fr>:
> The configuration option exists but is not used everywhere,
> this patch tries to make it the default instead of the
> hardcoded value.
Previously IIRC these could only be placed at 0x00000000 or
0xffff0000, and I haven't heard of it being changed, and the
code surrounding this surely does not take into account that
it could be anything that 0 or 0xffff0000.
With a recursive
cd arch/arm/ && grep -r CONFIG_VECTORS_BASE .
you see that everybody and his dog is using 0xffff0000
(high vectors).
I think we'd rather get rid of CONFIG_VECTORS_BASE
with that hex value, this config value could for example
be CONFIG_VECTORS_LOW | CONFIG_VECTORS_HIGH, mutually
exclusive instead, and then _LOW will basically never be used
and things become simpler, I think having a hex value for
CONFIG_VECTORS_BASE is actually confusing since that
may give people the (false) idea that this can be set to anything.
> (...)
> /*
> * Create a mapping for the machine vectors at the high-vectors
> - * location (0xffff0000). If we aren't using high-vectors, also
> + * location (CONFIG_VECTORS_BASE). If we aren't using high-vectors, also
> * create a mapping at the low-vectors virtual address.
> */
> map.pfn = __phys_to_pfn(virt_to_phys(vectors));
> - map.virtual = 0xffff0000;
> + map.virtual = CONFIG_VECTORS_BASE;
> map.length = PAGE_SIZE;
> map.type = MT_HIGH_VECTORS;
> create_mapping(&map);
Speaking of this: for machines with TCM (like the U300) we'd probably
like to move our ITCM to 0xffff0000 (CONFIG_VECTORS_BASE) and alter
the code so that iff CONFIG_VECTORS_BASE == __sitcm_text the
vectors page will not be allocated and mapped, and vectors go into
ITCM instead. The idea is that since TCM fast as cache, it's a pretty
good idea to lock them in there. (Seen on other ARM OS:es...)
I'll try to make a patch for that someday.
Linus Walleij
More information about the linux-arm-kernel
mailing list