In message <[EMAIL PROTECTED]> Kenneth Albanowski 
writes:
: This is two separate issues. The mmap() syscall is still available for
: anything that has a fixed address within an addressible memory area.
: Depending on how the system is arranged, this can include the video frame
: buffer, and even "files" store in a ROM file-system. uClinux has a bit of
: magic for this that works fairly well, given that it is an ad hoc hack.
: You'd be surprised how much of mmap() can be implemented without an MMU,
: though. Shared anonymous maps just work out to be a sort of malloc().
: Indeed, the user-level malloc() and free() routines are implemented in
: terms of mmap() and munmap(), which is, in turn, implemented in terms of
: the kernel's kmalloc() system.

That's not true for the Vr4650.  It's base and bounds registers were
based on Physical addresses, not virtual ones.  It didn't have an MMU
to create virtual addresses.  You had a base, and you had bounds. And
you had only one.  That's it.  You couldn't map in parts of ROM, parts
of this and parts of that.

: Actually, no, exec() is trivial, though you do need to use vfork() to
: create the a new sub-process, instead of fork().

On the Vr4650 can't create a new address space.  There is only one.
To do the exec, you'd have to copy the entire binary into a contiguous 
chunk of memory, relocate it (it would have to be PIC code) and adjust
the base and bounds.  And lord help you then if the previous process
needed to grow in size.

I guess I should have said that the Vr4650 doesn't have a TLB
either...

Warner

--
To unsubscribe from this list, send a message to [EMAIL PROTECTED]
with the command "unsubscribe linux-embedded" in the message body.
For more information, see <http://waste.org/mail/linux-embedded>.

Reply via email to