Code Monkey home page Code Monkey logo

Comments (6)

aswaterman avatar aswaterman commented on July 20, 2024

Most of those only show up for embedded systems, which only need to support one ABI.

Unix systems generally use only RV32G and RV64G (and later RV64GQ). So I don't think this is actually a problem.

from riscv-elf-psabi-doc.

asb avatar asb commented on July 20, 2024

I think embedded systems can't totally be written off - a proliferation of ABIs is still a challenge if they use code that's not written in C. I agree it's not a huge deal though. I suppose the real fix here is perhaps making it clear what the common ABIs that are expected to be RV32G and RV64G are the common ABIs supported by the majority of tools. Then there's the additional question of whether it's really worth introducing a new ABI for the Q extension. For instance, an option available to us is to recommend that implementers of Q stick to the RV64G ABI.

from riscv-elf-psabi-doc.

aswaterman avatar aswaterman commented on July 20, 2024

Yeah, I don't mean to dismiss embedded systems. But, as you said, we should make it clear what ABIs we expect people to actually use. My guess is that means RV32G/RV64G for Unix-like systems, and RV32I/RV32IF/RV64I/RV64G for embedded systems.

You're probably right about the Q ABI. For some applications, it will even be more performant to use the G ABI, because the stack frames will be more compact. Most applications will never put a long double in a callee-saved register, yet will always have to spill 128 bits.

from riscv-elf-psabi-doc.

aaronfranke avatar aaronfranke commented on July 20, 2024

@asb What do you mean by mutually incompatible? I thought RV64I software can run on RV64IF, RV64G, and RV64GQ, etc? Same with RV64IF software, it should run on RV64G, RV64GQ, and any other RV64 architecture that supports IF, right?

from riscv-elf-psabi-doc.

jrtc27 avatar jrtc27 commented on July 20, 2024

The terminology in this issue is very old (I assume). RV64I software can run on RV64IF, but it will use the LP64 ABI whereas RV64IF software can use either the LP64 ABI or the LP64F ABI, and the two are not compatible.

from riscv-elf-psabi-doc.

asb avatar asb commented on July 20, 2024

I don't think there's really anything more to discuss on this issue so I'll mark it closed.

ABIs like LP64F probably get very little real-world testing, but on the other hand it's implemented as a fairly straight-forward parameterisation of the standard ABI rules so hopefully isn't overly bug-prone.

from riscv-elf-psabi-doc.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.