[Aboriginal] [Toybox] big endian problems
rob at landley.net
Fri Oct 24 19:21:06 PDT 2014
On 10/24/14 19:08, Isaac Dunham wrote:
> On Fri, Oct 24, 2014 at 02:27:46PM -0700, James McMechan wrote:
>>>> TP-Link mr3020 - aboriginal will build MIPS, but static binaries do not run on openwrt kernel
>>>> hoo-too Tripmate Elite - also MIPS not yet tested
>>> mips has a sort of oabi/eabi thing going on, where the old mipsr4k
>>> binaries I'm building (with the hard 256 meg memory constraint) are
>>> being replaced by "mips32" which is some confusing thing I need to read
>>> up on and has some kind of "kernel space code and userspace code aren't
>>> the same thing" weirdness going on that I got half an explanation of and
>>> don't understand.
> I can't explain that, but OpenWRT builds kernels without FPU emulation,
> meaning that most MIPS routers need a soft-float ABI.
I honestly don't remember what the aboriginal mips target is currently
using (whatever gcc 4.2.1 defaults to), but there's a GCC_FLAGS= entry
in sources/targets/mips that we can feed other stuff to. (And tweak the
uclibc and kernel configs to match...)
I really need to get everything switched over to musl by default before
fiddling with this sort of thing much more though. Another round of
toolchain symbol visibility decision path tweaks. (The guts of gcc are
never a fun place to hang out...)
>> According to some of the notes for more than 384MB you need to boot a 64bit kernel
>> MIPS32 looks like MIPS-II + bits from MIPS-III, MIPS-IV & MIPS-V but without the 64bit
>> mode MIPS-III (R4000) and later instruction sets all had.
>> The Indy low cost pizzabox used FPM SIMMs but could only go up to 8x32MB for 256MB
>> Pretty much all others of the ones using standard FPM SIMMs could take more memory
>> even back in the 1990s where is this hard 256MB limit from?
> says it's basically that only 512MB are theoretically addresseable as lowmem,
> and some of that is reserved so only half can be used.
Somebody explained to me (many moons ago, in private email) that mips
uses bits from the 32 bit physical pointers as status bits instead of
having enough bits in the page tables, so only 512 megs of it is left as
actual address space, half of which is used for I/O memory (more or less
another status bit).
So that's 256 megs actual physical memory. (Of course this explanation
could be wrong...)
More information about the Aboriginal