Comments (6)
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.
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.
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.
@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.
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.
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)
- Specify relocation overflow checks HOT 1
- Specify a platform reserved register HOT 20
- Should calling convention also define ptrdiff_t? HOT 1
- Should we use lw/sw in push pop when we used ILP32, whether it's RV32 or RV64 HOT 3
- Operation semantics of __bf16 datatype HOT 2
- representation of GNU C fixed-size vectors HOT 4
- Deprecate R_RISCV_RVC_LUI? HOT 4
- Define GOT-Relative data relocation HOT 8
- Embedding R_RISCV_RELAX to another relocations HOT 7
- Define gp(x3) as global VLENB HOT 4
- Bitfield integer calling convention garbled
- Calling convention uses RV64GQ without definition or reference HOT 3
- Calling convention description of va_list et al. are unclear HOT 2
- Interpretation of floating-point types
- Linux ABI for Pointer Masking HOT 19
- New ABI for stack layout and frame pointer scheme HOT 4
- Change branch from "master" to "main" HOT 1
- Add CREL support HOT 3
- Add RELR support HOT 6
- Question about medlow's single 2 GiB address range HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from riscv-elf-psabi-doc.