[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Possible GSoC idea: MIPS N32 ABI Port



On 03/01/2013 11:24 AM, Aron Xu wrote:
Hi,

On Sat, Mar 2, 2013 at 3:01 AM, Matt Turner <mattst88@gmail.com> wrote:
On Fri, Mar 1, 2013 at 10:35 AM, Aron Xu <happyaron.xu@gmail.com> wrote:
This was a project in GSoC 2009, however the project wasn't completed
due to various reasons. I'm raising it here again because there are
interests of doing it around us again.

Original description from the GSoC2009 project:
This project first focuses on creating a new MIPS N32 ABI port for
Debian. Different from O32 and N64, N32 is an address model which has
most 64-bit capabilities but using 32-bit data structures to save
space and process time. A second focus will be given on making such a
“mipsn32el” arch fully optimized for the Loongson 2F CPU which gains
more and more popularity in subnotebooks/netbooks in many countries.

Multiarch support is almost landed in Debian, and Multiarch cross
build is on its way, so we are in a position to make use of such
technology during bootstrap (still not working that well, though) and
daily use. A user can run an n64 kernel + mixed n32/n64 userland, so
that he/she can take advantage of the performance and large memory as
needed (like i386/amd64 in some degree).



I am not a Debian developer either, however I am a user.

If the project is accepted, and if it would help, We (Cavium, Inc.) can supply a machine for you to use for development. This would be a Cavium OCTEON based system (MIPS64r2 x 12 CPU SMP w/ 4GB RAM and 1TB SATA disk).

I am also quite familiar with n32 and can answer most questions about this ABI.

David Daney


--
Regards,
Aron Xu

Disclaimer: I'm not a Debian developer or even a user.

I am, however, a Gentoo/MIPS developer who completed our n32 port.
There were some annoying bits, like packages that hardcode 'lib', but
overall it's not a difficult task. Other distributions are already
n32, so there's not much if any package porting to do.

The scope of this project would be entirely within Debian, getting
Debian's infrastructure going for n32. I don't personally think that's
a SoC project, but I don't know. Maybe a Debian/n32 port involves lots
of work I don't know about, but for Gentoo it was mostly recompile a
bunch of stuff and fix things that break. IIRC, I was *terribly*
unimpressed with the 2009 Port Debian to N32 project. It was just a
recompile everything and see what breaks endeavor, which is what other
people have done with much more success (see: Gentoo, Parabola).


I think the scope of this project is bootstrapping the port for
Debian, which is mostly to properly bootstrap a sbuild and get the
base chroot (build-essential) running. If the project can go further,
then pushing the port to debian-ports.org will be good.

Rebuilding packages cost mostly just some time, while I think
bootstrapping a Debian port is a candidate for SoC, so it's not for
porting applications, but bring n32/n64 to Debian users.

As far as an 'mipsn32el' port for Loongson 2F hardware goes: what does
this entail? Recompiling everything with -march=loongson2f? Gentoo
(and I think Parabola?) already do this. Besides questionable
usefulness, since the hardware is sort of obsoleted by new Loongson 3A
hardware, the actual work to do involves getting code upstream that
Lemote was too lazy to upstream. This is a whole other project by
itself, again, of questionable usefulness and too nebulous to be a SoC
project.

If you do this project, a suggestion: Ship gcc as an n64 binary. n32
has a virtual memory limit of 2G, so a n32 gcc binary would be unable
to build large projects like webkit.

As mentioned about the availability of Multiarch support in my initial
email, the project itself should not be limited to N32. It's worthy to
discuss further on details of this idea.



Reply to: