RE: How can I jump to non-linux address space?

From: Ian Thompson (ithompso@stargateip.com)
Date: Thu Oct 04 2001 - 14:40:01 EST


Helge,

Thanks for your advice! It's brought up a couple of other question, if you
don't mind:

> The kernel can get to know - all you need is code that maps the
> ROM address range into some available virtual address range.
> Look at device driver code - they do such mapping for ROM and/or
> memory-based io regions.

I've seen the mapping of the single RAM address range, but I don't see where
it is possible to add in another range for ROM. What functions should I
look for that do this mapping?

> Do that ROM code work when the MMU has remapped its adresses so it
> appears at some adress completely different from the bus address? (only
> if it contains relative jumps only - no absolute addresses.) Does
> it work with 4G segments? Does it work at all in protected mode,
> with all interrupts routed to the linux kernel instead of the bios?
> Does this code expect to find something (data, device interfaces,
> vga memory) at certain addresses? If so, this must be mapped too.

I've run this code (in ROM) successfully before starting the kernel. I
believe the cache is disabled, and interrupts are not needed (and are off).
The code does not refer to anything within the kernel. I've tried turning
off the MMU completely before branching, but this seems to hang the system.
=(

Any ideas of what I should look for to turn off, aside from just shutting
down the MMU? If I map the ROM address range into a virtual addr range,
won't I run into problems once I'm running the code, such as physical
addresses being interpreted by virtual ones?

btw, this is running on an XScale (strongARM).

Thanks again,
-ian

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sun Oct 07 2001 - 21:00:33 EST