VirtualBox

Changeset 108762 in vbox for trunk/include


Ignore:
Timestamp:
Mar 27, 2025 10:16:28 AM (4 weeks ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
168189
Message:

VMM/GIC: bugref:10877 GITS work-in-progress.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/gic-its.h

    r108751 r108762  
    11/** @file
    2  * ARMv8 Generic Interrupt Controller (GIC) Interrupt Translation Service (ITS) definitions.
     2 * ARMv8 GIC Interrupt Translation Service (ITS) definitions.
    33 */
    44
     
    4141
    4242#include <iprt/types.h>
    43 #include <iprt/armv8.h>
     43#include <iprt/assertcompile.h>
    4444
    4545/** Size of the ITS register frame. */
     
    200200#define GITS_CTRL_REG_CREADR_OFF                                0x0090
    201201
     202/** GITS_BASER: ITS Table Descriptors - RW. */
    202203#define GITS_CTRL_REG_BASER_OFF_FIRST                           0x0100
     204/** GITS_BASER: Size - Number of pages allocated to the table minus one. */
     205#define GITS_BF_CTRL_REG_BASER_SIZE_SHIFT                       0
     206#define GITS_BF_CTRL_REG_BASER_SIZE_MASK                        UINT64_C(0x00000000000000ff)
     207/** GITS_BASER: Page_Size - Size of the page that the table uses. */
     208#define GITS_BF_CTRL_REG_BASER_PAGESIZE_SHIFT                   8
     209#define GITS_BF_CTRL_REG_BASER_PAGESIZE_MASK                    UINT64_C(0x0000000000000300)
     210/** GITS_BASER: Shareability attributes of the table. */
     211#define GITS_BF_CTRL_REG_BASER_SHAREABILITY_SHIFT               10
     212#define GITS_BF_CTRL_REG_BASER_SHAREABILITY_MASK                UINT64_C(0x0000000000000c00)
     213/** GITS_BASER: Physical_Address - Physical address of the table. */
     214#define GITS_BF_CTRL_REG_BASER_PHYS_ADDR_SHIFT                  12
     215#define GITS_BF_CTRL_REG_BASER_PHYS_ADDR_MASK                   UINT64_C(0x0000fffffffff000)
     216/** GITS_BASER: Entry_Size - Size of each table entry minus one in bytes.   */
     217#define GITS_BF_CTRL_REG_BASER_ENTRY_SIZE_SHIFT                 48
     218#define GITS_BF_CTRL_REG_BASER_ENTRY_SIZE_MASK                  UINT64_C(0x001f000000000000)
     219/** GITS_BASER: OuterCache - Outer cacheability attributes of the table. */
     220#define GITS_BF_CTRL_REG_BASER_OUTER_CACHE_SHIFT                53
     221#define GITS_BF_CTRL_REG_BASER_OUTER_CACHE_MASK                 UINT64_C(0x00e0000000000000)
     222/** GITS_BASER: Type - The type of entity. */
     223#define GITS_BF_CTRL_REG_BASER_TYPE_SHIFT                       56
     224#define GITS_BF_CTRL_REG_BASER_TYPE_MASK                        UINT64_C(0x0700000000000000)
     225/** GITS_BASER: InnerCache - Inner cacheability attribtues of the table. */
     226#define GITS_BF_CTRL_REG_BASER_INNER_CACHE_SHIFT                59
     227#define GITS_BF_CTRL_REG_BASER_INNER_CACHE_MASK                 UINT64_C(0x3800000000000000)
     228/** GITS_BASER: Indirect - Whether this is a single or two-level table. */
     229#define GITS_BF_CTRL_REG_BASER_INDIRECT_SHIFT                   62
     230#define GITS_BF_CTRL_REG_BASER_INDIRECT_MASK                    UINT64_C(0x4000000000000000)
     231/** GITS_BASER: Valid - Whether memory has been allocated for the table. */
     232#define GITS_BF_CTRL_REG_BASER_VALID_SHIFT                      63
     233#define GITS_BF_CTRL_REG_BASER_VALID_MASK                       UINT64_C(0x8000000000000000)
     234/*  Sigh C macros... "PAGE_SIZE" is already defined here, just use "PAGESIZE" instead of temporarily undef, redef. */
     235RT_BF_ASSERT_COMPILE_CHECKS(GITS_BF_CTRL_REG_BASER_, UINT64_C(0), UINT64_MAX,
     236                            (SIZE, PAGESIZE, SHAREABILITY, PHYS_ADDR, ENTRY_SIZE, OUTER_CACHE, TYPE, INNER_CACHE, INDIRECT,
     237                             VALID));
     238
    203239#define GITS_CTRL_REG_BASER_OFF_LAST                            0x0138
    204240#define GITS_CTRL_REG_BASER_RANGE_SIZE                          (GITS_CTRL_REG_BASER_OFF_LAST + sizeof(uint64_t) - GITS_CTRL_REG_BASER_OFF_FIRST)
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette