Richard Sandiford 4abb672ac1 aarch64: Restructure feature flag handling
The AArch64 feature-flag code is currently limited to a maximum
of 64 features.  This patch reworks it so that the limit can be
increased more easily.  The basic idea is:

(1) Turn the ARM_FEATURE_FOO macros into an enum, with the enum
    counting bit positions.

(2) Make the feature-list macros take an array index argument
    (currently always 0).  The macros then return the
    aarch64_feature_set contents for that array index.

    An N-element array would then be initialised as:

      { MACRO (0), ..., MACRO (N - 1) }

(3) Provide convenience macros for initialising an
    aarch64_feature_set for:

    - a single feature
    - a list of individual features
    - an architecture version
    - an architecture version + a list of additional features

(2) and (3) use the preprocessor to generate static initialisers.
The main restriction was that uses of the same preprocessor macro
cannot be nested.  So if a macro wants to do something for N individual
arguments, it needs to use a chain of N macros to do it.  There then
needs to be a way of deriving N, as a preprocessor token suitable for
pasting.

The easiest way of doing that was to precede each list of features
by the number of features in the list.  So an aarch64_feature_set
initialiser for three features A, B and C would be written:

  AARCH64_FEATURES (3, A, B, C)

This scheme makes it difficult to keep AARCH64_FEATURE_CRYPTO as a
synonym for SHA2+AES, so the patch expands the former to the latter.
2023-09-26 15:01:21 +01:00
..
2023-08-16 14:22:54 +01:00
2022-07-09 20:10:47 +09:30
2023-08-02 12:06:23 +01:00
2023-08-02 12:06:23 +01:00
2023-08-26 13:09:38 -06:00
2023-08-26 13:09:38 -06:00
2021-01-01 10:31:02 +10:30
2022-01-01 12:49:07 -05:00
2023-08-03 21:20:33 +09:30
2023-08-16 14:22:54 +01:00
2023-08-02 12:06:23 +01:00
2023-08-02 12:06:23 +01:00
2023-09-15 09:57:05 +02:00
2023-09-15 09:57:05 +02:00
2023-08-02 12:06:23 +01:00
2023-09-15 09:57:05 +02:00
2023-09-14 08:44:13 +02:00
2023-09-15 09:57:05 +02:00
2023-08-24 12:36:25 +09:30
2023-08-16 14:22:54 +01:00
2023-03-16 17:30:19 +10:30
2023-03-16 17:30:19 +10:30