Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/tools/testing/selftests/powerpc/dexcr/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  dexcr.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * POWER Dynamic Execution Control Facility (DEXCR)
 *
 * This header file contains helper functions and macros
 * required for all the DEXCR related test cases.
 */

#ifndef _SELFTESTS_POWERPC_DEXCR_DEXCR_H
#define _SELFTESTS_POWERPC_DEXCR_DEXCR_H

#include <stdbool.h>
#include <sys/prctl.h>
#include <sys/types.h>

#include "reg.h"

#define DEXCR_PR_BIT(aspect) __MASK(63 - (32 + (aspect)))
#define DEXCR_PR_SBHE  DEXCR_PR_BIT(0)
#define DEXCR_PR_IBRTPD  DEXCR_PR_BIT(3)
#define DEXCR_PR_SRAPD  DEXCR_PR_BIT(4)
#define DEXCR_PR_NPHIE  DEXCR_PR_BIT(5)

#define PPC_RAW_HASH_ARGS(b, i, a) \
 ((((i) >> 3) & 0x1F) << 21 | (a) << 16 | (b) << 11 | (((i) >> 8) & 0x1))
#define PPC_RAW_HASHST(b, i, a) \
 str(.long (0x7C0005A4 | PPC_RAW_HASH_ARGS(b, i, a));)
#define PPC_RAW_HASHCHK(b, i, a) \
 str(.long (0x7C0005E4 | PPC_RAW_HASH_ARGS(b, i, a));)

struct dexcr_aspect {
 const char *name; /* Short display name */
 const char *opt; /* Option name for chdexcr */
 const char *desc; /* Expanded aspect meaning */
 unsigned int index; /* Aspect bit index in DEXCR */
 unsigned long prctl; /* 'which' value for get/set prctl */
};

static const struct dexcr_aspect aspects[] = {
 {
  .name = "SBHE",
  .opt = "sbhe",
  .desc = "Speculative branch hint enable",
  .index = 0,
  .prctl = PR_PPC_DEXCR_SBHE,
 },
 {
  .name = "IBRTPD",
  .opt = "ibrtpd",
  .desc = "Indirect branch recurrent target prediction disable",
  .index = 3,
  .prctl = PR_PPC_DEXCR_IBRTPD,
 },
 {
  .name = "SRAPD",
  .opt = "srapd",
  .desc = "Subroutine return address prediction disable",
  .index = 4,
  .prctl = PR_PPC_DEXCR_SRAPD,
 },
 {
  .name = "NPHIE",
  .opt = "nphie",
  .desc = "Non-privileged hash instruction enable",
  .index = 5,
  .prctl = PR_PPC_DEXCR_NPHIE,
 },
 {
  .name = "PHIE",
  .opt = "phie",
  .desc = "Privileged hash instruction enable",
  .index = 6,
  .prctl = -1,
 },
};

bool dexcr_exists(void);

bool pr_dexcr_aspect_supported(unsigned long which);

bool pr_dexcr_aspect_editable(unsigned long which);

int pr_get_dexcr(unsigned long pr_aspect);

int pr_set_dexcr(unsigned long pr_aspect, unsigned long ctrl);

unsigned int pr_which_to_aspect(unsigned long which);

bool hashchk_triggers(void);

enum dexcr_source {
 DEXCR,  /* Userspace DEXCR value */
 HDEXCR,  /* Hypervisor enforced DEXCR value */
 EFFECTIVE, /* Bitwise OR of UDEXCR and ENFORCED DEXCR bits */
};

unsigned int get_dexcr(enum dexcr_source source);

void await_child_success(pid_t pid);

void hashst(unsigned long lr, void *sp);

void hashchk(unsigned long lr, void *sp);

void do_bad_hashchk(void);

#endif  /* _SELFTESTS_POWERPC_DEXCR_DEXCR_H */

Messung V0.5
C=95 H=94 G=94

¤ Dauer der Verarbeitung: 0.2 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.