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

fixup! target/hexagon: Add guest, system reg number defs #113

Open
wants to merge 126 commits into
base: hex-next
Choose a base branch
from

Conversation

SidManning
Copy link

No description provided.

androm3da and others added 30 commits March 7, 2025 09:56
The BADVA reg is referred to with the wrong identifier.  The
CAUSE reg field of SSR is not yet modeled, we will dump
the SSR in a subsequent commit.

Signed-off-by: Brian Cain <[email protected]>
These registers are defined in the Qualcomm Hexagon V71 Programmer's
Reference Manual -
https://docs.qualcomm.com/bundle/publicresource/80-N2040-51_REV_AB_Hexagon_V71_ProgrammerS_Reference_Manual.pdf
Refer to §11.9.1 SYSTEM GUEST, §11.9.2 SYSTEM MONITOR.

Signed-off-by: Brian Cain <[email protected]>
Also: add nop TCG overrides for break,unpause,fetchbo,dczeroa

break: this hardware breakpoint instruction is used with the in-silicon
debugger feature, this is not modeled.

unpause: this instruction is used to resume hardware threads that are
stalled by pause instructions.  pause is modeled as a nop, or in RR
mode as an EXCP_YIELD.  This instruction is safe to ignore.

Since cache/prefetch functions are not modeled, dczero and fetchbo are
safe to ignore.

Signed-off-by: Brian Cain <[email protected]>
This commit provides handlers to generate TCG for guest and system
register reads and writes.  They will be leveraged by a future commit.

Signed-off-by: Brian Cain <[email protected]>
Define the register fields for ssr, schedcfg, stid, bestwait, ccr,
modectl, imask, ipendad.

Define the fields for TLB entries.

Signed-off-by: Brian Cain <[email protected]>
Define TCG overrides for setprio(), crswap(,sgp{0,1,1:0}).

Signed-off-by: Brian Cain <[email protected]>
Define TCG overrides for {c,}swi {c,s}iad, iassign{r,w}, {s,g}etimask
instructions.

Signed-off-by: Brian Cain <[email protected]>
Define TCG overrides for start, stop, wait, resume instructions.

Signed-off-by: Brian Cain <[email protected]>
Co-authored-by: Sid Manning <[email protected]>
Signed-off-by: Brian Cain <[email protected]>
quic-mathbern and others added 19 commits March 7, 2025 10:01
Signed-off-by: Matheus Tavares Bernardino <[email protected]>
Signed-off-by: Matheus Tavares Bernardino <[email protected]>
Signed-off-by: Matheus Tavares Bernardino <[email protected]>
Signed-off-by: Matheus Tavares Bernardino <[email protected]>
Add the #if defined (TARGET_HEXAGON) to hmp-commands-info.hx
Prefix each TLB entry with the index

Signed-off-by: Taylor Simpson <[email protected]>
The number of parameters for `DEF_MACRO` changed and needed to be
updated too.

Signed-off-by: Marco Liebel <[email protected]>
A single mapping is made by qct-qtimer.c and the extraneous
region caused confusion.

Signed-off-by: Sid Manning <[email protected]>
* TODO: forward the instruction tag to the unimp log?
* TODO: why do we need_env() for these?
* TODO: filter out some attributes?

These instructions are unimplemented for now, they are used by h2.
@SidManning SidManning self-assigned this Mar 13, 2025
@SidManning
Copy link
Author

A related change would be to update REG_WRITES_MAX from 32 to 12:

#define REG_WRITES_MAX 12 /* 4 pair + sa[01]/lc[01] */

I didn't add it here since this was a fixup but this change is in our local repo already.

@quic-mathbern
Copy link

A related change would be to update REG_WRITES_MAX from 32 to 12:

#define REG_WRITES_MAX 12 /* 4 pair + sa[01]/lc[01] */

I didn't add it here since this was a fixup but this change is in our local repo already.

Makes sense! Do you want to send the REG_WRITES_MAX patch upstream as a standalone patch? I think it would be a nice fix, and also help with the parity.

@SidManning
Copy link
Author

A related change would be to update REG_WRITES_MAX from 32 to 12:
#define REG_WRITES_MAX 12 /* 4 pair + sa[01]/lc[01] */
I didn't add it here since this was a fixup but this change is in our local repo already.

Makes sense! Do you want to send the REG_WRITES_MAX patch upstream as a standalone patch? I think it would be a nice fix, and also help with the parity.

Sounds good will give it a try.

@androm3da androm3da force-pushed the hex-next branch 4 times, most recently from 7191bcd to 806002a Compare March 18, 2025 20:27
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.

5 participants