Peter Maydell <peter.mayd...@linaro.org> writes:
> The GITS_TYPE_PHYSICAL define is the value we set the > GITS_TYPER.Physical field to -- this is 1 to indicate that we support > physical LPIs. (Support for virtual LPIs is the GITS_TYPER.Virtual > field.) We also use this define as the *value* that we write into an > interrupt translation table entry's INTTYPE field, which should be 1 > for a physical interrupt and 0 for a virtual interrupt. Finally, we > use it as a *mask* when we read the interrupt translation table entry > INTTYPE field. > > Untangle this confusion: define an ITE_INTTYPE_VIRTUAL and > ITE_INTTYPE_PHYSICAL to be the valid values of the ITE INTTYPE > field, and replace the ad-hoc collection of ITE_ENTRY_* defines with > use of the FIELD() macro to define the fields of an ITE and the > FIELD_EX64() and FIELD_DP64() macros to read and write them. > We use ITE in the new setup, rather than ITE_ENTRY, because > ITE stands for "Interrupt translation entry" and so the extra > "entry" would be redundant. > > We take the opportunity to correct the name of the field that holds > the GICv4 'doorbell' interrupt ID (this is always the value 1023 in a > GICv3, which is why we were calling it the 'spurious' field). > > The GITS_TYPE_PHYSICAL define is then used in only one place, where > we set the initial GITS_TYPER value. Since GITS_TYPER.Physical is > essentially a boolean, hiding the '1' value behind a macro is more > confusing than helpful, so expand out the macro there and remove the > define entirely. > > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> Reviewed-by: Alex Bennée <alex.ben...@linaro.org> -- Alex Bennée