Struct d1_pac::iommu::RegisterBlock
source · #[repr(C)]pub struct RegisterBlock {Show 94 fields
pub iommu_reset: IOMMU_RESET,
pub iommu_enable: IOMMU_ENABLE,
pub iommu_bypass: IOMMU_BYPASS,
pub iommu_auto_gating: IOMMU_AUTO_GATING,
pub iommu_wbuf_ctrl: IOMMU_WBUF_CTRL,
pub iommu_ooo_ctrl: IOMMU_OOO_CTRL,
pub iommu_4kb_bdy_prt_ctrl: IOMMU_4KB_BDY_PRT_CTRL,
pub iommu_ttb: IOMMU_TTB,
pub iommu_tlb_enable: IOMMU_TLB_ENABLE,
pub iommu_tlb_prefetch: IOMMU_TLB_PREFETCH,
pub iommu_tlb_flush_enable: IOMMU_TLB_FLUSH_ENABLE,
pub iommu_tlb_ivld_mode_sel: IOMMU_TLB_IVLD_MODE_SEL,
pub iommu_tlb_ivld_sta_addr: IOMMU_TLB_IVLD_STA_ADDR,
pub iommu_tlb_ivld_end_addr: IOMMU_TLB_IVLD_END_ADDR,
pub iommu_tlb_ivld_addr: IOMMU_TLB_IVLD_ADDR,
pub iommu_tlb_ivld_addr_mask: IOMMU_TLB_IVLD_ADDR_MASK,
pub iommu_tlb_ivld_enable: IOMMU_TLB_IVLD_ENABLE,
pub iommu_pc_ivld_mode_sel: IOMMU_PC_IVLD_MODE_SEL,
pub iommu_pc_ivld_addr: IOMMU_PC_IVLD_ADDR,
pub iommu_pc_ivld_sta_addr: IOMMU_PC_IVLD_STA_ADDR,
pub iommu_pc_ivld_enable: IOMMU_PC_IVLD_ENABLE,
pub iommu_pc_ivld_end_addr: IOMMU_PC_IVLD_END_ADDR,
pub iommu_dm_aut_ctrl: [IOMMU_DM_AUT_CTRL; 8],
pub iommu_dm_aut_ovwt: IOMMU_DM_AUT_OVWT,
pub iommu_int_enable: IOMMU_INT_ENABLE,
pub iommu_int_clr: IOMMU_INT_CLR,
pub iommu_int_sta: IOMMU_INT_STA,
pub iommu_int_err_addr_tlb: [IOMMU_INT_ERR_ADDR_TLB; 7],
pub iommu_int_err_addr_l: [IOMMU_INT_ERR_ADDR_L; 2],
pub iommu_int_err_data_tlb: [IOMMU_INT_ERR_DATA_TLB; 7],
pub iommu_int_err_data_l: [IOMMU_INT_ERR_DATA_L; 2],
pub iommu_lpg_int: [IOMMU_LPG_INT; 2],
pub iommu_va: IOMMU_VA,
pub iommu_va_data: IOMMU_VA_DATA,
pub iommu_va_config: IOMMU_VA_CONFIG,
pub iommu_pmu_enable: IOMMU_PMU_ENABLE,
pub iommu_pmu_clr: IOMMU_PMU_CLR,
pub iommu_pmu_access_low0: IOMMU_PMU_ACCESS_LOW,
pub iommu_pmu_access_high0: IOMMU_PMU_ACCESS_HIGH,
pub iommu_pmu_hit_low0: IOMMU_PMU_HIT_LOW,
pub iommu_pmu_hit_high0: IOMMU_PMU_HIT_HIGH,
pub iommu_pmu_access_low1: IOMMU_PMU_ACCESS_LOW,
pub iommu_pmu_access_high1: IOMMU_PMU_ACCESS_HIGH,
pub iommu_pmu_hit_low1: IOMMU_PMU_HIT_LOW,
pub iommu_pmu_hit_high1: IOMMU_PMU_HIT_HIGH,
pub iommu_pmu_access_low2: IOMMU_PMU_ACCESS_LOW,
pub iommu_pmu_access_high2: IOMMU_PMU_ACCESS_HIGH,
pub iommu_pmu_hit_low2: IOMMU_PMU_HIT_LOW,
pub iommu_pmu_hit_high2: IOMMU_PMU_HIT_HIGH,
pub iommu_pmu_access_low3: IOMMU_PMU_ACCESS_LOW,
pub iommu_pmu_access_high3: IOMMU_PMU_ACCESS_HIGH,
pub iommu_pmu_hit_low3: IOMMU_PMU_HIT_LOW,
pub iommu_pmu_hit_high3: IOMMU_PMU_HIT_HIGH,
pub iommu_pmu_access_low4: IOMMU_PMU_ACCESS_LOW,
pub iommu_pmu_access_high4: IOMMU_PMU_ACCESS_HIGH,
pub iommu_pmu_hit_low4: IOMMU_PMU_HIT_LOW,
pub iommu_pmu_hit_high4: IOMMU_PMU_HIT_HIGH,
pub iommu_pmu_access_low5: IOMMU_PMU_ACCESS_LOW,
pub iommu_pmu_access_high5: IOMMU_PMU_ACCESS_HIGH,
pub iommu_pmu_hit_low5: IOMMU_PMU_HIT_LOW,
pub iommu_pmu_hit_high5: IOMMU_PMU_HIT_HIGH,
pub iommu_pmu_access_low6: IOMMU_PMU_ACCESS_LOW,
pub iommu_pmu_access_high6: IOMMU_PMU_ACCESS_HIGH,
pub iommu_pmu_hit_low6: IOMMU_PMU_HIT_LOW,
pub iommu_pmu_hit_high6: IOMMU_PMU_HIT_HIGH,
pub iommu_pmu_access_low7: IOMMU_PMU_ACCESS_LOW,
pub iommu_pmu_access_high7: IOMMU_PMU_ACCESS_HIGH,
pub iommu_pmu_hit_low7: IOMMU_PMU_HIT_LOW,
pub iommu_pmu_hit_high7: IOMMU_PMU_HIT_HIGH,
pub iommu_pmu_access_low8: IOMMU_PMU_ACCESS_LOW,
pub iommu_pmu_access_high8: IOMMU_PMU_ACCESS_HIGH,
pub iommu_pmu_hit_low8: IOMMU_PMU_HIT_LOW,
pub iommu_pmu_hit_high8: IOMMU_PMU_HIT_HIGH,
pub iommu_pmu_tl_low0: IOMMU_PMU_TL_LOW,
pub iommu_pmu_tl_high0: IOMMU_PMU_TL_HIGH,
pub iommu_pmu_ml0: IOMMU_PMU_ML,
pub iommu_pmu_tl_low1: IOMMU_PMU_TL_LOW,
pub iommu_pmu_tl_high1: IOMMU_PMU_TL_HIGH,
pub iommu_pmu_ml1: IOMMU_PMU_ML,
pub iommu_pmu_tl_low2: IOMMU_PMU_TL_LOW,
pub iommu_pmu_tl_high2: IOMMU_PMU_TL_HIGH,
pub iommu_pmu_ml2: IOMMU_PMU_ML,
pub iommu_pmu_tl_low3: IOMMU_PMU_TL_LOW,
pub iommu_pmu_tl_high3: IOMMU_PMU_TL_HIGH,
pub iommu_pmu_ml3: IOMMU_PMU_ML,
pub iommu_pmu_tl_low4: IOMMU_PMU_TL_LOW,
pub iommu_pmu_tl_high4: IOMMU_PMU_TL_HIGH,
pub iommu_pmu_ml4: IOMMU_PMU_ML,
pub iommu_pmu_tl_low5: IOMMU_PMU_TL_LOW,
pub iommu_pmu_tl_high5: IOMMU_PMU_TL_HIGH,
pub iommu_pmu_ml5: IOMMU_PMU_ML,
pub iommu_pmu_tl_low6: IOMMU_PMU_TL_LOW,
pub iommu_pmu_tl_high6: IOMMU_PMU_TL_HIGH,
pub iommu_pmu_ml6: IOMMU_PMU_ML,
/* private fields */
}Expand description
Register block
Fields§
§iommu_reset: IOMMU_RESET0x10 - IOMMU Reset Register
iommu_enable: IOMMU_ENABLE0x20 - IOMMU Enable Register
iommu_bypass: IOMMU_BYPASS0x30 - IOMMU Bypass Register
iommu_auto_gating: IOMMU_AUTO_GATING0x40 - IOMMU Auto Gating Register
iommu_wbuf_ctrl: IOMMU_WBUF_CTRL0x44 - IOMMU Write Buffer Control Register
iommu_ooo_ctrl: IOMMU_OOO_CTRL0x48 - IOMMU Out of Order Control Register
iommu_4kb_bdy_prt_ctrl: IOMMU_4KB_BDY_PRT_CTRL0x4c - IOMMU 4KB Boundary Protect Control Register
iommu_ttb: IOMMU_TTB0x50 - IOMMU Translation Table Base Register
iommu_tlb_enable: IOMMU_TLB_ENABLE0x60 - IOMMU TLB Enable Register
iommu_tlb_prefetch: IOMMU_TLB_PREFETCH0x70 - IOMMU TLB Prefetch Register
iommu_tlb_flush_enable: IOMMU_TLB_FLUSH_ENABLE0x80 - IOMMU TLB Flush Enable Register
iommu_tlb_ivld_mode_sel: IOMMU_TLB_IVLD_MODE_SEL0x84 - IOMMU TLB Invalidation Mode Select Register
iommu_tlb_ivld_sta_addr: IOMMU_TLB_IVLD_STA_ADDR0x88 - IOMMU TLB Invalidation Start Address Register
iommu_tlb_ivld_end_addr: IOMMU_TLB_IVLD_END_ADDR0x8c - IOMMU TLB Invalidation End Address Register
iommu_tlb_ivld_addr: IOMMU_TLB_IVLD_ADDR0x90 - IOMMU TLB Invalidation Address Register
iommu_tlb_ivld_addr_mask: IOMMU_TLB_IVLD_ADDR_MASK0x94 - IOMMU TLB Invalidation Address Mask Register
iommu_tlb_ivld_enable: IOMMU_TLB_IVLD_ENABLE0x98 - IOMMU TLB Invalidation Enable Register
iommu_pc_ivld_mode_sel: IOMMU_PC_IVLD_MODE_SEL0x9c - IOMMU PC Invalidation Mode Select Register
iommu_pc_ivld_addr: IOMMU_PC_IVLD_ADDR0xa0 - IOMMU PC Invalidation Address Register
iommu_pc_ivld_sta_addr: IOMMU_PC_IVLD_STA_ADDR0xa4 - IOMMU PC Invalidation Start Address Register
iommu_pc_ivld_enable: IOMMU_PC_IVLD_ENABLE0xa8 - IOMMU PC Invalidation Enable Register
iommu_pc_ivld_end_addr: IOMMU_PC_IVLD_END_ADDR0xac - IOMMU PC Invalidation End Address Register
iommu_dm_aut_ctrl: [IOMMU_DM_AUT_CTRL; 8]0xb0..0xd0 - IOMMU Domain Authority Control [i] Register
Software can set 15 different permission control types in IOMMU_DM_AUT_CTRL0-7. A default access control type is DOMAIN0. The read/write operation of DOMAIN1-15 is unlimited by default.
Software needs to set the index of the permission control domain corresponding to the page table item in the bit[7:4] of the Level2 page table, the default value is 0 (use domain 0), that is, the read/write operation is not controlled.
Setting REG_ARD_OVWT can mask the Domain control defined by IOMMU_DM_AUT_CTRL0-7. All Level2 page table type are covered by the type of REG_ARD_OVWT. The read/write operation is permitted by default.
iommu_dm_aut_ovwt: IOMMU_DM_AUT_OVWT0xd0 - IOMMU Domain Authority Overwrite Register
iommu_int_enable: IOMMU_INT_ENABLE0x100 - IOMMU Interrupt Enable Register
iommu_int_clr: IOMMU_INT_CLR0x104 - IOMMU Interrupt Clear Register
iommu_int_sta: IOMMU_INT_STA0x108 - IOMMU Interrupt Status Register
iommu_int_err_addr_tlb: [IOMMU_INT_ERR_ADDR_TLB; 7]0x110..0x12c - IOMMU Interrupt Error Address [i]
iommu_int_err_addr_l: [IOMMU_INT_ERR_ADDR_L; 2]0x130..0x138 - IOMMU Interrupt Error Address L[i]
iommu_int_err_data_tlb: [IOMMU_INT_ERR_DATA_TLB; 7]0x150..0x16c - IOMMU Interrupt Error Data [i] Register
iommu_int_err_data_l: [IOMMU_INT_ERR_DATA_L; 2]0x170..0x178 - IOMMU Interrupt Error Data L[i] Register
iommu_lpg_int: [IOMMU_LPG_INT; 2]0x180..0x188 - IOMMU L[i] Page Table Interrupt Register
iommu_va: IOMMU_VA0x190 - IOMMU Virtual Address Register
iommu_va_data: IOMMU_VA_DATA0x194 - IOMMU Virtual Address Data Register
iommu_va_config: IOMMU_VA_CONFIG0x198 - IOMMU Virtual Address Configuration Register
iommu_pmu_enable: IOMMU_PMU_ENABLE0x200 - IOMMU PMU Enable Register
iommu_pmu_clr: IOMMU_PMU_CLR0x210 - IOMMU PMU Clear Register
iommu_pmu_access_low0: IOMMU_PMU_ACCESS_LOW0x230 - IOMMU PMU Access Low [i] Register
iommu_pmu_access_high0: IOMMU_PMU_ACCESS_HIGH0x234 - IOMMU PMU Access High [i] Register
iommu_pmu_hit_low0: IOMMU_PMU_HIT_LOW0x238 - IOMMU PMU Hit Low [i] Register
iommu_pmu_hit_high0: IOMMU_PMU_HIT_HIGH0x23c - IOMMU PMU Hit High [i] Register
iommu_pmu_access_low1: IOMMU_PMU_ACCESS_LOW0x240 - IOMMU PMU Access Low [i] Register
iommu_pmu_access_high1: IOMMU_PMU_ACCESS_HIGH0x244 - IOMMU PMU Access High [i] Register
iommu_pmu_hit_low1: IOMMU_PMU_HIT_LOW0x248 - IOMMU PMU Hit Low [i] Register
iommu_pmu_hit_high1: IOMMU_PMU_HIT_HIGH0x24c - IOMMU PMU Hit High [i] Register
iommu_pmu_access_low2: IOMMU_PMU_ACCESS_LOW0x250 - IOMMU PMU Access Low [i] Register
iommu_pmu_access_high2: IOMMU_PMU_ACCESS_HIGH0x254 - IOMMU PMU Access High [i] Register
iommu_pmu_hit_low2: IOMMU_PMU_HIT_LOW0x258 - IOMMU PMU Hit Low [i] Register
iommu_pmu_hit_high2: IOMMU_PMU_HIT_HIGH0x25c - IOMMU PMU Hit High [i] Register
iommu_pmu_access_low3: IOMMU_PMU_ACCESS_LOW0x260 - IOMMU PMU Access Low [i] Register
iommu_pmu_access_high3: IOMMU_PMU_ACCESS_HIGH0x264 - IOMMU PMU Access High [i] Register
iommu_pmu_hit_low3: IOMMU_PMU_HIT_LOW0x268 - IOMMU PMU Hit Low [i] Register
iommu_pmu_hit_high3: IOMMU_PMU_HIT_HIGH0x26c - IOMMU PMU Hit High [i] Register
iommu_pmu_access_low4: IOMMU_PMU_ACCESS_LOW0x270 - IOMMU PMU Access Low [i] Register
iommu_pmu_access_high4: IOMMU_PMU_ACCESS_HIGH0x274 - IOMMU PMU Access High [i] Register
iommu_pmu_hit_low4: IOMMU_PMU_HIT_LOW0x278 - IOMMU PMU Hit Low [i] Register
iommu_pmu_hit_high4: IOMMU_PMU_HIT_HIGH0x27c - IOMMU PMU Hit High [i] Register
iommu_pmu_access_low5: IOMMU_PMU_ACCESS_LOW0x280 - IOMMU PMU Access Low [i] Register
iommu_pmu_access_high5: IOMMU_PMU_ACCESS_HIGH0x284 - IOMMU PMU Access High [i] Register
iommu_pmu_hit_low5: IOMMU_PMU_HIT_LOW0x288 - IOMMU PMU Hit Low [i] Register
iommu_pmu_hit_high5: IOMMU_PMU_HIT_HIGH0x28c - IOMMU PMU Hit High [i] Register
iommu_pmu_access_low6: IOMMU_PMU_ACCESS_LOW0x290 - IOMMU PMU Access Low [i] Register
iommu_pmu_access_high6: IOMMU_PMU_ACCESS_HIGH0x294 - IOMMU PMU Access High [i] Register
iommu_pmu_hit_low6: IOMMU_PMU_HIT_LOW0x298 - IOMMU PMU Hit Low [i] Register
iommu_pmu_hit_high6: IOMMU_PMU_HIT_HIGH0x29c - IOMMU PMU Hit High [i] Register
iommu_pmu_access_low7: IOMMU_PMU_ACCESS_LOW0x2a0 - IOMMU PMU Access Low [i] Register
iommu_pmu_access_high7: IOMMU_PMU_ACCESS_HIGH0x2a4 - IOMMU PMU Access High [i] Register
iommu_pmu_hit_low7: IOMMU_PMU_HIT_LOW0x2a8 - IOMMU PMU Hit Low [i] Register
iommu_pmu_hit_high7: IOMMU_PMU_HIT_HIGH0x2ac - IOMMU PMU Hit High [i] Register
iommu_pmu_access_low8: IOMMU_PMU_ACCESS_LOW0x2b0 - IOMMU PMU Access Low [i] Register
iommu_pmu_access_high8: IOMMU_PMU_ACCESS_HIGH0x2b4 - IOMMU PMU Access High [i] Register
iommu_pmu_hit_low8: IOMMU_PMU_HIT_LOW0x2b8 - IOMMU PMU Hit Low [i] Register
iommu_pmu_hit_high8: IOMMU_PMU_HIT_HIGH0x2bc - IOMMU PMU Hit High [i] Register
iommu_pmu_tl_low0: IOMMU_PMU_TL_LOW0x300 - IOMMU Total Latency Low [i] Register
iommu_pmu_tl_high0: IOMMU_PMU_TL_HIGH0x304 - IOMMU Total Latency High [i] Register
iommu_pmu_ml0: IOMMU_PMU_ML0x308 - IOMMU Max Latency [i] Register
iommu_pmu_tl_low1: IOMMU_PMU_TL_LOW0x310 - IOMMU Total Latency Low [i] Register
iommu_pmu_tl_high1: IOMMU_PMU_TL_HIGH0x314 - IOMMU Total Latency High [i] Register
iommu_pmu_ml1: IOMMU_PMU_ML0x318 - IOMMU Max Latency [i] Register
iommu_pmu_tl_low2: IOMMU_PMU_TL_LOW0x320 - IOMMU Total Latency Low [i] Register
iommu_pmu_tl_high2: IOMMU_PMU_TL_HIGH0x324 - IOMMU Total Latency High [i] Register
iommu_pmu_ml2: IOMMU_PMU_ML0x328 - IOMMU Max Latency [i] Register
iommu_pmu_tl_low3: IOMMU_PMU_TL_LOW0x330 - IOMMU Total Latency Low [i] Register
iommu_pmu_tl_high3: IOMMU_PMU_TL_HIGH0x334 - IOMMU Total Latency High [i] Register
iommu_pmu_ml3: IOMMU_PMU_ML0x338 - IOMMU Max Latency [i] Register
iommu_pmu_tl_low4: IOMMU_PMU_TL_LOW0x340 - IOMMU Total Latency Low [i] Register
iommu_pmu_tl_high4: IOMMU_PMU_TL_HIGH0x344 - IOMMU Total Latency High [i] Register
iommu_pmu_ml4: IOMMU_PMU_ML0x348 - IOMMU Max Latency [i] Register
iommu_pmu_tl_low5: IOMMU_PMU_TL_LOW0x350 - IOMMU Total Latency Low [i] Register
iommu_pmu_tl_high5: IOMMU_PMU_TL_HIGH0x354 - IOMMU Total Latency High [i] Register
iommu_pmu_ml5: IOMMU_PMU_ML0x358 - IOMMU Max Latency [i] Register
iommu_pmu_tl_low6: IOMMU_PMU_TL_LOW0x360 - IOMMU Total Latency Low [i] Register
iommu_pmu_tl_high6: IOMMU_PMU_TL_HIGH0x364 - IOMMU Total Latency High [i] Register
iommu_pmu_ml6: IOMMU_PMU_ML0x368 - IOMMU Max Latency [i] Register