Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable vector unit without misa.V #430

Closed
wants to merge 1 commit into from
Closed

Enable vector unit without misa.V #430

wants to merge 1 commit into from

Conversation

nick-knight
Copy link

@nick-knight nick-knight commented Nov 8, 2021

This PR attempts to resolve #429 by the techniques described therein:

  • switching to the __riscv_vector macro;
  • using the mstatus.VS trick.

My implementation does introduce a subtle change in the semantics. Previously, if I'm understanding it correctly, this code implemented the following state transition of mstatus.VS (when misa.V was set):

 Before |  After
-----------------
    Off | Initial
Initial | Initial
  Clean |   Dirty
  Dirty |   Dirty

Now, this code unconditionally sets mstatus.VS to Dirty.

I'm not sure I understand the previous Freedom-Metal behavior (nor the similar behavior of mstatus.FS). I feel like it would be most sensible to set these bits to Initial. Perhaps the assumption is that these bits are guaranteed to be Off at this point in execution, so they will always transition to Initial? I welcome the Freedom Metal developers to clarify their intention, and take over this PR.

@paul-walmsley-sifive
Copy link
Contributor

Hi @nick-knight , I just noticed that this pull request should be filed against the freedom-e-sdk-private project instead. Could you move it there? Can discuss further on Slack to describe what changed here. Thanks :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Vector unit fails to initialize for Zve* targets
3 participants