blob: 37725d76e3fbc2f2e97f9acb038e7682eb64d389 [file] [log] [blame] [edit]
// Copyright 2021 The Fuchsia Authors
//
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT
#include <lib/arch/arm64/cache.h>
#include <lib/arch/arm64/system.h>
#include <hwreg/asm.h>
int main(int argc, char** argv) {
return hwreg::AsmHeader() //
.Register<arch::ArmCacheTypeEl0>("CTR_EL0_")
.Register<arch::ArmCurrentEl>("CURRENT_EL_")
.Register<arch::ArmDaif>("DAIF_")
.Register<arch::ArmDaifSetClr>("DAIFSETCLR_")
.Register<arch::ArmCnthctlEl2NoEl2Host>("CNTHCTL_EL2_")
.Register<arch::ArmCptrEl2NoEl2Host>("CPTR_EL2_")
// The CPTR bits unknown to hwreg are those intended to be reserved as one.
.Macro("CPTR_EL2_RES1", "CPTR_EL2_UNKNOWN")
.Register<arch::ArmCurrentEl>("CURRENT_EL_")
.Register<arch::ArmHcrEl2>("HCR_EL2_")
.Register<arch::ArmHcrxEl2>("HCRX_EL2_")
.Register<arch::ArmIccSreEl2>("ICC_SRE_EL2_")
.Register<arch::ArmSctlrEl1>("SCTLR_EL1_")
.Register<arch::ArmSctlrEl2>("SCTLR_EL2_")
.Register<arch::ArmSpsrEl2>("SPSR_EL2_")
// Disables all interrupts.
.Macro("SPSR_EL2_DAIF", "SPSR_EL2_D | SPSR_EL2_A | SPSR_EL2_I | SPSR_EL2_F")
// 0b101 signifies returning to EL1 with SP_EL1.
.Macro("SPSR_EL2_M_EL1H", "SPSR_EL2_M_FIELD(0b101)")
.Main(argc, argv);
}