---
title: "hv_gic_get_ich_reg(_:_:_:)"
framework: Hypervisor
role: symbol
role_heading: Function
platforms: [macOS 15.0+]
path: "hypervisor/hv_gic_get_ich_reg(_:_:_:)"
---

# hv_gic_get_ich_reg(_:_:_:)

Reads a generic interrupt controller’s (GIC) ICH virtualization control system register.

## Declaration

```swift
func hv_gic_get_ich_reg(_ vcpu: hv_vcpu_t, _ reg: hv_gic_ich_reg_t, _ value: UnsafeMutablePointer<UInt64>) -> hv_return_t
```

## Parameters

- `vcpu`: The handle for the vCPU.
- `reg`: The value that represents the GIC ICH system register.
- `value`: The pointer to ICH register value that the frameworks writes to upon success.

## Return Value

Return Value HV_SUCCESS on success; otherwise, an error code.

## Discussion

Discussion ICH registers are only available when exception level 2 (EL2) is in an enabled state, otherwise the method returns an error. important: Call this method on the owning thread.

## See Also

### 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_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)
