---
title: GIC functions
framework: Hypervisor
role: collectionGroup
role_heading: API Collection
path: hypervisor/gic-functions
---

# GIC functions

These functions and registers support the creation and operation of a generic interrupt controller.

## Discussion

Discussion For more information on using GICs, see the ARM Generic Interrupt Controller (GIC) v3 architecture specification.

## Topics

### Creating a generic interrupt controller

- [hv_gic_create(_:)](hypervisor/hv_gic_create(_:).md)

### Resetting the generic interrupt controller

- [hv_gic_reset()](hypervisor/hv_gic_reset().md)

### Setting the GIC device configuration

- [hv_gic_config_create()](hypervisor/hv_gic_config_create().md)
- [hv_gic_config_set_distributor_base(_:_:)](hypervisor/hv_gic_config_set_distributor_base(_:_:).md)
- [hv_gic_config_set_redistributor_base(_:_:)](hypervisor/hv_gic_config_set_redistributor_base(_:_:).md)
- [hv_gic_get_redistributor_base(_:_:)](hypervisor/hv_gic_get_redistributor_base(_:_:).md)
- [hv_gic_config_set_msi_region_base(_:_:)](hypervisor/hv_gic_config_set_msi_region_base(_:_:).md)
- [hv_gic_config_set_msi_interrupt_range(_:_:_:)](hypervisor/hv_gic_config_set_msi_interrupt_range(_:_:_:).md)
- [OS_hv_gic_config](hypervisor/os_hv_gic_config.md)
- [hv_gic_config_t](hypervisor/hv_gic_config_t.md)

### Getting GIC device parameters

- [hv_gic_get_redistributor_region_size(_:)](hypervisor/hv_gic_get_redistributor_region_size(_:).md)
- [hv_gic_get_redistributor_size(_:)](hypervisor/hv_gic_get_redistributor_size(_:).md)
- [hv_gic_get_distributor_size(_:)](hypervisor/hv_gic_get_distributor_size(_:).md)
- [hv_gic_get_distributor_base_alignment(_:)](hypervisor/hv_gic_get_distributor_base_alignment(_:).md)
- [hv_gic_get_redistributor_base_alignment(_:)](hypervisor/hv_gic_get_redistributor_base_alignment(_:).md)
- [hv_gic_get_msi_region_base_alignment(_:)](hypervisor/hv_gic_get_msi_region_base_alignment(_:).md)
- [hv_gic_get_msi_region_size(_:)](hypervisor/hv_gic_get_msi_region_size(_:).md)
- [hv_gic_get_spi_interrupt_range(_:_:)](hypervisor/hv_gic_get_spi_interrupt_range(_:_:).md)

### Getting and setting the GIC’s state

- [hv_gic_state_create()](hypervisor/hv_gic_state_create().md)
- [hv_gic_set_state(_:_:)](hypervisor/hv_gic_set_state(_:_:).md)
- [hv_gic_state_get_size(_:_:)](hypervisor/hv_gic_state_get_size(_:_:).md)
- [hv_gic_state_get_data(_:_:)](hypervisor/hv_gic_state_get_data(_:_:).md)
- [hv_gic_state_t](hypervisor/hv_gic_state_t.md)
- [OS_hv_gic_state](hypervisor/os_hv_gic_state.md)

### Sending interrupts

- [hv_gic_send_msi(_:_:)](hypervisor/hv_gic_send_msi(_:_:).md)
- [hv_gic_set_spi(_:_:)](hypervisor/hv_gic_set_spi(_:_:).md)

### Getting and setting registers

- [hv_gic_get_distributor_reg(_:_:)](hypervisor/hv_gic_get_distributor_reg(_:_:).md)
- [hv_gic_get_msi_reg(_:_:)](hypervisor/hv_gic_get_msi_reg(_:_:).md)
- [hv_gic_get_icc_reg(_:_:_:)](hypervisor/hv_gic_get_icc_reg(_:_:_:).md)
- [hv_gic_get_ich_reg(_:_:_:)](hypervisor/hv_gic_get_ich_reg(_:_:_:).md)
- [hv_gic_get_icv_reg(_:_:_:)](hypervisor/hv_gic_get_icv_reg(_:_:_:).md)
- [hv_gic_get_redistributor_reg(_:_:_:)](hypervisor/hv_gic_get_redistributor_reg(_:_:_:).md)
- [hv_gic_set_distributor_reg(_:_:)](hypervisor/hv_gic_set_distributor_reg(_:_:).md)
- [hv_gic_set_icc_reg(_:_:_:)](hypervisor/hv_gic_set_icc_reg(_:_:_:).md)
- [hv_gic_set_ich_reg(_:_:_:)](hypervisor/hv_gic_set_ich_reg(_:_:_:).md)
- [hv_gic_set_icv_reg(_:_:_:)](hypervisor/hv_gic_set_icv_reg(_:_:_:).md)
- [hv_gic_set_msi_reg(_:_:)](hypervisor/hv_gic_set_msi_reg(_:_:).md)
- [hv_gic_set_redistributor_reg(_:_:_:)](hypervisor/hv_gic_set_redistributor_reg(_:_:_:).md)

## See Also

### Generic interrupt controllers (GICs)

- [GIC registers](hypervisor/gic-registers.md)
