1/* 2 * Copyright 2020, Data61, CSIRO (ABN 41 687 119 230) 3 * 4 * SPDX-License-Identifier: GPL-2.0-only 5 */ 6 7#include <armv/machine.h> 8#include <types.h> 9 10/* we only care about the affinity bits */ 11#define MPIDR_MASK (0xff00ffffff) 12 13word_t read_cpuid_mpidr(void) 14{ 15 uint64_t val; 16 asm volatile("mrs %x0, mpidr_el1" : "=r"(val) :: "cc"); 17 return val & MPIDR_MASK; 18} 19 20#define CURRENTEL_EL2 (2 << 2) 21word_t is_hyp_mode(void) 22{ 23 uint32_t val; 24 asm volatile("mrs %x0, CurrentEL" : "=r"(val) :: "cc"); 25 return (val == CURRENTEL_EL2); 26} 27 28uint32_t read_cpuid_id(void) 29{ 30 uint32_t val; 31 asm volatile("mrs %x0, midr_el1" : "=r"(val) :: "cc"); 32 return val; 33} 34