rust-lang / rust-lang/stdarch

ACLE Module implementation status

Open
#759 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
694
Forks
336
Avg merge
5d 14h
Merged PRs (30d)
9

Description

The ACLE module appears to be woefully incomplete in terms of features, documentation, and tests.

I wanted to replace the following line of inline assembly:

unsafe { asm!("mrs $0, ID_AA64PFR0_EL1" : "=r"(aa64pfr0)); }

in libstd with the C intrinsic _arm__rsr64("ID_AA64PFR0_EL1");. There is a core::arch::aarch64::__rsr64 intrinsic, but it errored for "ID_AA64PFR0_EL1" with "trait bound not satisfied" and I had to look at the code to discover that the intrinsic is generic, is bounded by the sealed RSR64 trait, and this trait is not implemented for any types (does this mean that the intrinsic is useless?).

I suppose that the register type and trait implementations are missing, but taking a look at the available system and co-processor registers, it appears that dozens of them are missing. We have, however, no list of missing features, nor any document explaining how to implement them.

AFAICT, this problem would have been avoided had we exposed the same API as C.

It would be useful if those knowledgable with the ARM C intrinsics could post or point to comprehensive list of the types that would need to be implemented to support the C API.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the core::arch::aarch64::__rsr64 intrinsic, its sealed RSR64 trait, and the related libstd inline assembly mentioned in the issue. Compare these with the ARM C intrinsic _arm__rsr64 and the available system and coprocessor registers. Done would require a scoped inventory of missing ACLE types and implementations, with corresponding documentation and tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.