cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

smp_plat.h (824B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Definitions specific to SMP platforms.
      4 *
      5 * Copyright (C) 2013 ARM Ltd.
      6 */
      7
      8#ifndef __ASM_SMP_PLAT_H
      9#define __ASM_SMP_PLAT_H
     10
     11#include <linux/cpumask.h>
     12
     13#include <asm/smp.h>
     14#include <asm/types.h>
     15
     16struct mpidr_hash {
     17	u64	mask;
     18	u32	shift_aff[4];
     19	u32	bits;
     20};
     21
     22extern struct mpidr_hash mpidr_hash;
     23
     24static inline u32 mpidr_hash_size(void)
     25{
     26	return 1 << mpidr_hash.bits;
     27}
     28
     29/*
     30 * Retrieve logical cpu index corresponding to a given MPIDR.Aff*
     31 *  - mpidr: MPIDR.Aff* bits to be used for the look-up
     32 *
     33 * Returns the cpu logical index or -EINVAL on look-up error
     34 */
     35static inline int get_logical_index(u64 mpidr)
     36{
     37	int cpu;
     38	for (cpu = 0; cpu < nr_cpu_ids; cpu++)
     39		if (cpu_logical_map(cpu) == mpidr)
     40			return cpu;
     41	return -EINVAL;
     42}
     43
     44#endif /* __ASM_SMP_PLAT_H */