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

# hv_gic_set_ich_reg(_:_:_:)

Writes to a generic interrupt controller (GIC) ICH virtualization control system register.

## Declaration

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

## Parameters

- `vcpu`: The handle for the vCPU.
- `reg`: The enumeration value that represents the ICH system register.
- `value`: The GIC ICH register value the framework writes to.

## Return Value

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

## Discussion

Discussion ICH registers are only available when EL2 is an enabled state, otherwise the framework 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_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_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)
