linux/arch/arm64/kernel/cpufeature.c
<<
>>
Prefs
   1/*
   2 * Contains CPU feature definitions
   3 *
   4 * Copyright (C) 2015 ARM Ltd.
   5 *
   6 * This program is free software; you can redistribute it and/or modify
   7 * it under the terms of the GNU General Public License version 2 as
   8 * published by the Free Software Foundation.
   9 *
  10 * This program is distributed in the hope that it will be useful,
  11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13 * GNU General Public License for more details.
  14 *
  15 * You should have received a copy of the GNU General Public License
  16 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  17 */
  18
  19#define pr_fmt(fmt) "alternatives: " fmt
  20
  21#include <linux/types.h>
  22#include <asm/cpu.h>
  23#include <asm/cpufeature.h>
  24
  25static const struct arm64_cpu_capabilities arm64_features[] = {
  26        {},
  27};
  28
  29void check_cpu_capabilities(const struct arm64_cpu_capabilities *caps,
  30                            const char *info)
  31{
  32        int i;
  33
  34        for (i = 0; caps[i].desc; i++) {
  35                if (!caps[i].matches(&caps[i]))
  36                        continue;
  37
  38                if (!cpus_have_cap(caps[i].capability))
  39                        pr_info("%s %s\n", info, caps[i].desc);
  40                cpus_set_cap(caps[i].capability);
  41        }
  42}
  43
  44void check_local_cpu_features(void)
  45{
  46        check_cpu_capabilities(arm64_features, "detected feature");
  47}
  48