mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Bobby Bingham <koorogi@koorogi.info>
To: musl@lists.openwall.com
Subject: Re: porting musl to RISCV-64
Date: Wed, 11 May 2016 13:48:28 -0500	[thread overview]
Message-ID: <20160511184828.GA13552@gordon> (raw)
In-Reply-To: <CA+mdN-E0jiW3ervFRj4KmA5O6VNbjA1_SqoJwjoeKbE3rcV7dQ@mail.gmail.com>

On Wed, May 11, 2016 at 09:32:16AM -0700, Gry Gunvor wrote:
> On Wed, May 11, 2016 at 4:25 AM, Szabolcs Nagy <nsz@port70.net> wrote:
>
> > newlib is for baremetal development, you don't
> > need to use threading with it
>
> It's attempt at reentrancy support is causing me problems.
>
> > musl now has 32bit mips, mips64 and mipsn32 support as well.
> > these are different abis so they have to be separate ports,
> > same is true for the riscv targets.
>
> Your documentation does not seem to mention the MIPS64 port, but now
> that I look in arch, I see the directory for it.

This is a pretty new port.  The documentation just hasn't been updated
yet.

>
> > there is a google summer of code project to add riscv support
> > http://www.openwall.com/lists/musl/2016/04/27/3
> > i think it is supposed to provide a working port within 1-2
> > months (?) so if you can wait you don't need to do much work.
>
> Suppose I can't wait and I attempt this myself.  Right now I'm just
> trying to get a generic libc working.  I do not want to handle
> multi-threading or signals.  What can I omit?  Are the
> non-portabilities isolated in arch/ ?  That is, is there much more to
> it than cloning the arch/mips64 directory and hacking on it?

There are some bits of architecture-specific assembly scattered
elsewhere (crti/crtn, setjmp/longjmp, syscall, syscall_cp).

The __clone function which is used to create new threads is also used
internally to implement a couple other functions that aren't strictly
threading-related (eg, posix_spawn and a fallback version of faccessat),
so if you omit it those functions may also not be usable.

>
> atomic_arch.h: I think I can make all of these functions empty as I am
> not going to be using multi-threading, right?

These functions don't really need to be atomic for a single thread to
work, but they do still need to perform the correct operations.  If you're
ignoring the atomicity required for multi-threaded code, these are all
trivial to implement in C.

>
> crt_arch.h: program startup; what is this doing in a libc
> implementation?  doesn't the compiler handle this?

This has the entry point that is invoked by the kernel, and handles the
little bit of setup necessary for handing off control to C code.

>
> ksigaction.h: sorry, I'm not a hardware person; I suppose different
> hardware has a different default layout for a signal object? so this
> is not a thing determined by kernel software?  I don't care to handle
> signals right now anyway.

This needs to match the kernel.  Not all musl ports have this file.
Some use the generic version in src/internal/ksigaction.h

>
> pthread_arch.h: again, I think I can make all of these functions empty
> as I am not going to be using multi-threading.

This is code for working with the thread pointer and thread-local storage.
Even if you only have a single thread, this is still necessary.  For
example, errno is thread-local and is accessed through the thread
pointer (see the definition of __errno_location).

>
> reloc.h: I can't figure out what this is.

It's definitions for the dynamic linker.

>
> syscall_arch.h: I've already written this for RISCV-64 (and so have
> the RISCV people).
>
> bits: to what extent is this MIPS64-specific?  since there is *no*
> inline assembly, how come arch/generic/ doesn't do here?

A small amount of it depends on the hardware (fenv) or on the ABI
(alltypes).  Most of it though just needs to match the kernel, and the
Linux kernel definitions vary by architecture.

--
Bobby


      parent reply	other threads:[~2016-05-11 18:48 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-11  6:05 Gry Gunvor
2016-05-11 11:25 ` Szabolcs Nagy
2016-05-11 16:32   ` Gry Gunvor
2016-05-11 16:40     ` Gry Gunvor
2016-05-11 17:28       ` Szabolcs Nagy
2016-05-11 18:48     ` Bobby Bingham [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160511184828.GA13552@gordon \
    --to=koorogi@koorogi.info \
    --cc=musl@lists.openwall.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).