alternative
#include <asm/alternative.h>
.pushsection .alternative, "a"
__decompressor_handled_param(debug_alternative, debug-alternative);
u64 alternative;
.alternative =
config_match = p4_event_aliases[i].alternative;
} else if (config_match == p4_event_aliases[i].alternative) {
#define barrier_nospec() alternative("", "lfence", X86_FEATURE_LFENCE_RDTSC)
alternative("mfence; lfence", "", ALT_NOT(X86_FEATURE_APIC_MSRS_FENCE));
alternative("", "clac", X86_FEATURE_SMAP);
alternative("", "stac", X86_FEATURE_SMAP);
alternative("", "clac", X86_FEATURE_LASS);
alternative("", "stac", X86_FEATURE_LASS);
alternative("wbinvd", ASM_WBNOINVD, X86_FEATURE_WBNOINVD);
#define mb() alternative("lock addl $0,0(%%esp)", "mfence", X86_FEATURE_XMM2)
#define rmb() alternative("lock addl $0,0(%%esp)", "lfence", X86_FEATURE_XMM2)
#define wmb() alternative("lock addl $0,0(%%esp)", "sfence", X86_FEATURE_XMM)
static PDCSPATH_ENTRY(PDCS_ADDR_PALT, alternative);
#include <asm/alternative.h>
struct alternative *alt;
struct alternative *a;
struct alternative *alt;
struct alternative *alt;
struct alternative *alt;
struct alternative *alt;
struct alternative *alt; /* alternative or NULL if default code */
struct alternative *alt;
char *disas_alt_name(struct alternative *alt)
struct alternative *alt)
struct alternative *next;
struct alternative *alts;
char *disas_alt_name(struct alternative *alt);
static inline char *disas_alt_name(struct alternative *alt)
struct alternative;
void trace_alt_begin(struct instruction *orig_insn, struct alternative *alt,
void trace_alt_end(struct instruction *orig_insn, struct alternative *alt,
struct alternative *alt,
struct alternative *alt,
void trace_alt_begin(struct instruction *orig_insn, struct alternative *alt,
void trace_alt_end(struct instruction *orig_insn, struct alternative *alt,