linux/arch/arm64/include/asm/alternative.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef __ASM_ALTERNATIVE_H
   3#define __ASM_ALTERNATIVE_H
   4
   5#include <asm/alternative-macros.h>
   6
   7#ifndef __ASSEMBLY__
   8
   9#include <linux/init.h>
  10#include <linux/types.h>
  11#include <linux/stddef.h>
  12
  13struct alt_instr {
  14        s32 orig_offset;        /* offset to original instruction */
  15        s32 alt_offset;         /* offset to replacement instruction */
  16        u16 cpufeature;         /* cpufeature bit set for replacement */
  17        u8  orig_len;           /* size of original instruction(s) */
  18        u8  alt_len;            /* size of new instruction(s), <= orig_len */
  19};
  20
  21typedef void (*alternative_cb_t)(struct alt_instr *alt,
  22                                 __le32 *origptr, __le32 *updptr, int nr_inst);
  23
  24void __init apply_boot_alternatives(void);
  25void __init apply_alternatives_all(void);
  26bool alternative_is_applied(u16 cpufeature);
  27
  28#ifdef CONFIG_MODULES
  29void apply_alternatives_module(void *start, size_t length);
  30#else
  31static inline void apply_alternatives_module(void *start, size_t length) { }
  32#endif
  33
  34#endif /* __ASSEMBLY__ */
  35#endif /* __ASM_ALTERNATIVE_H */
  36