https://bugs.kde.org/show_bug.cgi?id=414268

Peter Maydell <peter.mayd...@linaro.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |peter.mayd...@linaro.org

--- Comment #4 from Peter Maydell <peter.mayd...@linaro.org> ---
In the attachment of comment #2, this looks odd:

+     #define ID_AA64ISAR0_RDM_MASK             0x1

The ID register fields are all 4 bits wide, so looking at just the least
significant bit will produce wrong answers if in future field value 2 is
defined.

The right way to test fields in these ID registers is to look at the entire
4-bit number and test that it is greater than or equal to the value
representing the feature you're looking for. (See D13.1.3 "Principles of the ID
scheme for fields in ID registers" in the v8A Arm ARM.)

For A-profile my recommendation is as far as you possibly can to avoid having
any "is this v8.1?" or "is this v8.2?" tests and instead to stick strictly to
"is feature X present?". The architecture permits a v8.x implementation to
include any arbitrary set of v8.(x+1) features as well, and pretty much
everything has an ID register feature field you can check for, so it works
better to just look at those. (FWIW QEMU's emulation does not need v8.1, v8.2,
etc feature flags so I would be surprised if valgrind needed to do anything
based on the architecture point version.)

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to