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

pmu.y (1318B)


      1
      2%parse-param {struct list_head *format}
      3%parse-param {char *name}
      4
      5%{
      6
      7#include <linux/compiler.h>
      8#include <linux/list.h>
      9#include <linux/bitmap.h>
     10#include <string.h>
     11#include "pmu.h"
     12
     13extern int perf_pmu_lex (void);
     14
     15#define ABORT_ON(val) \
     16do { \
     17        if (val) \
     18                YYABORT; \
     19} while (0)
     20
     21%}
     22
     23%token PP_CONFIG PP_CONFIG1 PP_CONFIG2
     24%token PP_VALUE PP_ERROR
     25%type <num> PP_VALUE
     26%type <bits> bit_term
     27%type <bits> bits
     28
     29%union
     30{
     31	unsigned long num;
     32	DECLARE_BITMAP(bits, PERF_PMU_FORMAT_BITS);
     33}
     34
     35%%
     36
     37format:
     38format format_term
     39|
     40format_term
     41
     42format_term:
     43PP_CONFIG ':' bits
     44{
     45	ABORT_ON(perf_pmu__new_format(format, name,
     46				      PERF_PMU_FORMAT_VALUE_CONFIG,
     47				      $3));
     48}
     49|
     50PP_CONFIG1 ':' bits
     51{
     52	ABORT_ON(perf_pmu__new_format(format, name,
     53				      PERF_PMU_FORMAT_VALUE_CONFIG1,
     54				      $3));
     55}
     56|
     57PP_CONFIG2 ':' bits
     58{
     59	ABORT_ON(perf_pmu__new_format(format, name,
     60				      PERF_PMU_FORMAT_VALUE_CONFIG2,
     61				      $3));
     62}
     63
     64bits:
     65bits ',' bit_term
     66{
     67	bitmap_or($$, $1, $3, 64);
     68}
     69|
     70bit_term
     71{
     72	memcpy($$, $1, sizeof($1));
     73}
     74
     75bit_term:
     76PP_VALUE '-' PP_VALUE
     77{
     78	perf_pmu__set_format($$, $1, $3);
     79}
     80|
     81PP_VALUE
     82{
     83	perf_pmu__set_format($$, $1, 0);
     84}
     85
     86%%
     87
     88void perf_pmu_error(struct list_head *list __maybe_unused,
     89		    char *name __maybe_unused,
     90		    char const *msg __maybe_unused)
     91{
     92}