blob: 66d9d09bb7a88e5ebaa6246226dff4ae9090afe9 [file]
/*
* Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
*
* SPDX-License-Identifier: GPL-2.0-only
*/
#include <armv/machine.h>
#include <types.h>
/* we only care about the affinity bits */
#define MPIDR_MASK (0xff00ffffff)
word_t read_cpuid_mpidr(void)
{
uint64_t val;
asm volatile("mrs %x0, mpidr_el1" : "=r"(val) :: "cc");
return val & MPIDR_MASK;
}
#define CURRENTEL_EL2 (2 << 2)
word_t is_hyp_mode(void)
{
uint32_t val;
asm volatile("mrs %x0, CurrentEL" : "=r"(val) :: "cc");
return (val == CURRENTEL_EL2);
}
uint32_t read_cpuid_id(void)
{
uint32_t val;
asm volatile("mrs %x0, midr_el1" : "=r"(val) :: "cc");
return val;
}