This is a collection of Intel®’ IA32® Software Developer's Manuals (URL of the day) and AMD' AMD64 Architecture Programmer's Manual together with the related specifications, application notes, white papers, and change logs. The collection aims to keep all available revisions. It was originally created by Michal Necasek, see OS/2 Museum.

If you have a public document, related to the IA32® specifications and missing from the collection, please mail it to me. The content of this URL and all sub-ULRs is available for convenient bulk download by rsync x86docs password "" (empty).

HACDBSCONS_EL2

HACDBSCONS_EL2, Hardware Accelerator for Cleaning Dirty State Consumer Register

The HACDBSCONS_EL2 characteristics are:

Purpose

Read index for HACDBS structure.

Configuration

This register is present only when FEAT_HACDBS is implemented and FEAT_AA64 is implemented. Otherwise, direct accesses to HACDBSCONS_EL2 are UNDEFINED.

Attributes

HACDBSCONS_EL2 is a 64-bit register.

Field descriptions

6362616059585756555453525150494847464544434241403938373635343332
313029282726252423222120191817161514131211109876543210
ERR_REASONRES0
RES0INDEX

ERR_REASON, bits [63:62]

Reason for HACDBS error.

ERR_REASONMeaning
0b00

The PE has not experienced an error while processing the HACDBS.

0b01

STRUCTF - A read of an entry from the HACDBS has experienced a fault.

0b10

IPAF - A stage 2 walk of an IPA from a HACDBS entry has experienced an MMU fault.

0b11

IPAHACF - An entry from the HACDBS experienced an error that is not an MMU fault.

The reset behavior of this field is:

Bits [61:19]

Reserved, RES0.

INDEX, bits [18:0]

This field indicates the index of the HACDBS entry that will be read from next.

The reset behavior of this field is:

Accessing HACDBSCONS_EL2

Accesses to this register use the following encodings in the System register encoding space:

MRS <Xt>, HACDBSCONS_EL2

op0op1CRnCRmop2
0b110b1000b00100b00110b101

if !(IsFeatureImplemented(FEAT_HACDBS) && IsFeatureImplemented(FEAT_AA64)) then Undefined(); elsif PSTATE.EL == EL0 then Undefined(); elsif PSTATE.EL == EL1 then if EffectiveHCR_EL2_NVx() IN {'1x1'} then X{64}(t) = NVMem(0x308); elsif EffectiveHCR_EL2_NVx() IN {'xx1'} then AArch64_SystemAccessTrap(EL2, 0x18); else Undefined(); end; elsif PSTATE.EL == EL2 then if HaveEL(EL3) && EL3SDDUndefPriority() && SCR_EL3().HACDBSEn == '0' then Undefined(); elsif HaveEL(EL3) && SCR_EL3().HACDBSEn == '0' then if EL3SDDUndef() then Undefined(); else AArch64_SystemAccessTrap(EL3, 0x18); end; else X{64}(t) = HACDBSCONS_EL2(); end; elsif PSTATE.EL == EL3 then X{64}(t) = HACDBSCONS_EL2(); end;

MSR HACDBSCONS_EL2, <Xt>

op0op1CRnCRmop2
0b110b1000b00100b00110b101

if !(IsFeatureImplemented(FEAT_HACDBS) && IsFeatureImplemented(FEAT_AA64)) then Undefined(); elsif PSTATE.EL == EL0 then Undefined(); elsif PSTATE.EL == EL1 then if EffectiveHCR_EL2_NVx() IN {'1x1'} then NVMem(0x308) = X{64}(t); elsif EffectiveHCR_EL2_NVx() IN {'xx1'} then AArch64_SystemAccessTrap(EL2, 0x18); else Undefined(); end; elsif PSTATE.EL == EL2 then if HaveEL(EL3) && EL3SDDUndefPriority() && SCR_EL3().HACDBSEn == '0' then Undefined(); elsif HaveEL(EL3) && SCR_EL3().HACDBSEn == '0' then if EL3SDDUndef() then Undefined(); else AArch64_SystemAccessTrap(EL3, 0x18); end; else HACDBSCONS_EL2() = X{64}(t); end; elsif PSTATE.EL == EL3 then HACDBSCONS_EL2() = X{64}(t); end;


2026-03-26 20:27:25, 2026-03_rel

Copyright © 2010-2026 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.