: At some point we might have to code a more flexible loading system anyway.
: ARC systems only guarantee to have 4k (or was it even less) of memory at
: physical address 0x0; the rest of their memory might as well be at some
: different address. When we want to have a universal kernel for all R4000
: machines we'll have to write a real ELF loader anyway.
I'm not sure that I follow this. If the memory on these machines is
scattered all over the place, then how will ELF help? I know that ELF
cna have segments and the like, and that those segments can be loaded
aat different locations in memory. What I don't understand is how the
loader will know enough to load the right things in the right
locations. It seems to me that MILO would need to know what to load
and where and that the "what" and "where" are more complicated than
I'm looking at, btw, using some NetBSD tools called elf2ecoff and
elf2aout that will hopefully enable us to have one compiler (the ELF
one) and then use these tools to post process the results for MILO and
maybe the kernel. This should save a lot of baggage that would
otherwise be required to build the whole system.
: I'm currently tweaking the R4000 stuff from mips2 to mips3/mips4 to
: build a new execution model for user mode stuff. R3000 binaries
: (all the currently distributed user stuff) will run unchanged but
: using 64 bit CPU features will be possible; some disabled code in
: the kernel can be reenabled and other code can run again with
: interrupts enabled.
So does this mean I shouldn't try to do the kernel copy stuff or that
I should. I'm confused. I guess I'm back to not doing this and
trying to build a root disk and configure more of the kernel (like
the SCSI code and BUSTEC drivers).
BTW, in trying to build a root disk, I can't help but notice that we
have no shared libc. What's the status on this for Linux/MIPS? From
the OpenBSD list (or was that the pmax port list), I know that GNU
libc doesn't support ld.so on the mips and that was the biggest block
to getting shared libraries there.
A minimal root disk has to be something like /bin/sh, /sbin/mount*,
and tar or cp to get the OS onto the hard disk.