From: Jacob Lifshay <programmerjake@gmail.com>
To: Libre-RISCV General Development <libre-riscv-dev@lists.libre-riscv.org>
Subject: Re: [libre-riscv-dev] LibreSOC - RISCV and POWER dual architecture feasibility
Date: Sat, 14 Mar 2020 23:13:23 -0700
Message-ID: <CAC2bXD7h90TXSCeFAM41NW-VbTizpWVueDu8KrmLHxBaX-7a=A@mail.gmail.com> (raw)
In-Reply-To: <20200315051018.svaw4aor7ifwn725@topoi.pooq.com>
On Sat, Mar 14, 2020, 22:10 Hendrik Boom <hendrik@topoi.pooq.com> wrote:
> On Sat, Mar 14, 2020 at 08:17:07PM -0700, Jacob Lifshay wrote:
> > The software side will be a little harder but still relatively easy, we
> > need to implement support for translating Linux system calls from the
> > RISC-V interface to the internal calls, as well as implementing the
> > syscalls for switching modes between ISAs -- that's like 80% of the work
> on
> > the Linux Kernel side. For userspace, we can have just executing RISC-V
> ELF
> > executables as a MVP, later, we can implement the stuff in the dynamic
> > linker to handle having both Power and RV code loaded in the same process
> > -- I'm thinking we should use a system similar to Wine and Darling (like
> > Wine but macOS on Linux) where they have two dynamic linkers in the same
> > process. Will have to figure that out.
>
> Is the multiarch feature of Linux of any use here?
I don't think so, since it would allow switching between ppc64le and
ppc32le (or some other 32-bit variant of Power).
I think it
> allows a choice of architecture for each *process*. So we'd
> just have to have two sets of libraries. We wouldn't have to link
> any code that contains both architectures.
>
We can do that just fine, however, since all our custom extensions are only
in the Power side, RISC-V programs wouldn't be able to use the custom
extensions so that means Vulkan (and our other user-space drivers) would be
very slow or not run at all.
Therefore, we should build ISA to ISA interfaces to allow a RISC-V function
to call and be called by a Power function -- my current plan is to have the
program make a syscall to switch between ISAs.
maybe have syscalls something like:
// Power side
void call_riscv_from_power(void (*riscv_function)(void *), void *arg);
// RISC-V side
void call_power_from_riscv(void (*power_function)(void *), void *arg);
We would still have to worry about the differences between RISC-V and Power
ABIs such as memory layouts and handling stack unwinding and backtraces.
The current plan is for Kernel-mode to be entirely Power and it can switch
to RV when switching to user mode as well as any interrupt, exception, or
syscall will switch to Power mode and run the appropriate Kernel code.
Jacob
_______________________________________________
libre-riscv-dev mailing list
libre-riscv-dev@lists.libre-riscv.org
http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev
next prev parent reply index
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <6AC4EFD4-AA30-42C7-855A-CE68A62F107F@gatech.edu>
2020-03-15 3:17 ` Jacob Lifshay
2020-03-15 4:00 ` Luke Kenneth Casson Leighton
2020-03-15 7:59 ` Jacob Lifshay
2020-03-15 11:22 ` Luke Kenneth Casson Leighton
2020-03-15 12:09 ` [libre-riscv-dev] pearpc simulator running Luke Kenneth Casson Leighton
2020-03-15 5:10 ` [libre-riscv-dev] LibreSOC - RISCV and POWER dual architecture feasibility Hendrik Boom
2020-03-15 6:13 ` Jacob Lifshay [this message]
2020-03-15 7:18 ` Immanuel, Yehowshua U
2020-03-15 11:20 ` Luke Kenneth Casson Leighton
2020-03-15 18:19 ` Immanuel, Yehowshua U
2020-03-15 18:21 ` Immanuel, Yehowshua U
2020-03-15 18:26 ` Immanuel, Yehowshua U
2020-03-15 19:11 ` Luke Kenneth Casson Leighton
2020-03-15 19:16 ` Immanuel, Yehowshua U
2020-03-15 19:20 ` Immanuel, Yehowshua U
2020-03-15 19:24 ` Luke Kenneth Casson Leighton
2020-03-15 19:25 ` Luke Kenneth Casson Leighton
2020-03-15 19:23 ` Luke Kenneth Casson Leighton
2020-03-15 19:32 ` Immanuel, Yehowshua U
2020-03-15 19:43 ` Jacob Lifshay
2020-03-15 19:52 ` Immanuel, Yehowshua U
2020-03-15 19:57 ` Luke Kenneth Casson Leighton
2020-03-15 20:00 ` Immanuel, Yehowshua U
2020-03-15 20:05 ` Luke Kenneth Casson Leighton
2020-03-15 22:04 ` Staf Verhaegen
2020-03-15 22:10 ` Jacob Lifshay
2020-03-15 22:23 ` Adam Van Ymeren
2020-03-15 22:32 ` Luke Kenneth Casson Leighton
2020-03-16 0:25 ` Immanuel, Yehowshua U
2020-03-15 19:56 ` Luke Kenneth Casson Leighton
2020-03-16 7:14 ` Lauri Kasanen
2020-03-16 7:28 ` Jacob Lifshay
2020-03-16 8:53 ` Staf Verhaegen
2020-03-16 9:27 ` Lauri Kasanen
2020-03-16 10:34 ` Luke Kenneth Casson Leighton
2020-03-16 11:00 ` Staf Verhaegen
2020-03-15 19:51 ` Luke Kenneth Casson Leighton
2020-03-15 19:37 ` Immanuel, Yehowshua U
2020-03-15 19:07 ` Luke Kenneth Casson Leighton
2020-03-15 16:57 ` Hendrik Boom
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='CAC2bXD7h90TXSCeFAM41NW-VbTizpWVueDu8KrmLHxBaX-7a=A@mail.gmail.com' \
--to=programmerjake@gmail.com \
--cc=libre-riscv-dev@lists.libre-riscv.org \
/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
Libre RISC-V Mailing list Archives (accessible via public-inbox)
Archives are clonable: git clone --mirror https://inbox.libre-soc.org/libre-riscv-dev
Example config snippet for mirrors
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git