Skip to content

Conversation

bdash
Copy link
Contributor

@bdash bdash commented Sep 20, 2025

Alongside the update I also added support for decoding:

  • LDR / STR (table)
  • PMULLB / PMULLT
  • ABS / CNT / CTZ
  • SMIN / SMAX / UMIN / UMAX
  • RPRFM
  • PSEL

Note that while these instructions will now be disassembled, they are not yet lifted to LLIL.

Additionally, I fixed a number of errors in the decoding of some less commonly occurring instructions.

Fixes #7402.

@bdash bdash force-pushed the test_aarch64_2025_06 branch from 609269f to c51ca2f Compare September 20, 2025 04:53
Alongside this I also added support for decoding:

* LDR / STR (table)
* PMULLB / PMULLT
* ABS / CNT / CTZ
* SMIN / SMAX / UMIN / UMAX
* RPRFM
* PSEL

Note that while these instructions will now be disassembled, they are
not yet lifted to LLIL.

Additionally, I fixed a number of errors in the decoding of some less
commonly occurring instructions.
@bdash bdash force-pushed the test_aarch64_2025_06 branch from c51ca2f to ea2dae8 Compare September 22, 2025 04:22
@plafosse
Copy link
Member

Just marking down my observations:
Removing sysreg.h - I assume this is due to how we're handling these as enums now, and this is no longer needed?
You fixed FPOne and FPTwo - Surprised that code wasn't throwing a warning....
New register REG_ZT0?
Looks like sysregs_gen.h has not been updated was this intentional?
Looks like there are ~500 more instruction in operations.h were we really missing that many?

@plafosse plafosse self-assigned this Sep 23, 2025
@bdash
Copy link
Contributor Author

bdash commented Sep 23, 2025

The large number of new operations is due to many features being picked up for the first time. And many of the new instructions have multiple variants.

  • FEAT_LSFE, FEAT_LSE128, and FEAT_LSUI add new atomic operations with multiple variants for the different combinations of acquire / release semantics. These account for between half and two thirds of the new instructions.
  • FEAT_MOPS adds 40 different memory set / memory copy instructions that each have 3 variants.
  • FEAT_CMPBR adds 36 different comparison instructions (6 base instructions with 6 different condition codes).
  • FEAT_THE adds 12 instructions related to TLB handling that each have 4 variants.
  • FEAT_CSSC adds 22 new instructions.

The code related to sysregs was changed to be generated in b095215 but the old version of the code was not removed.

ZT0 is added as part of FEAT_SME2.

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.

Unhandled iPhone Air 26.0 kernel instructions
2 participants