arch/arm64/include/asm/insn.h
Source file repositories/reference/linux-study-clean/arch/arm64/include/asm/insn.h
File Facts
- System
- Linux kernel
- Corpus path
arch/arm64/include/asm/insn.h- Extension
.h- Size
- 24094 bytes
- Lines
- 713
- Domain
- Architecture Layer
- Bucket
- arch/arm64
- Inferred role
- Architecture Layer: implementation source
- Status
- source implementation candidate
Why This File Exists
CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
Dependency Surface
linux/build_bug.hlinux/types.hasm/insn-def.h
Detected Declarations
enum aarch64_insn_hint_cr_openum aarch64_insn_imm_typeenum aarch64_insn_register_typeenum aarch64_insn_registerenum aarch64_insn_special_registerenum aarch64_insn_system_registerenum aarch64_insn_variantenum aarch64_insn_conditionenum aarch64_insn_branch_typeenum aarch64_insn_size_typeenum aarch64_insn_ldst_typeenum aarch64_insn_adsb_typeenum aarch64_insn_movewide_typeenum aarch64_insn_bitfield_typeenum aarch64_insn_data1_typeenum aarch64_insn_data2_typeenum aarch64_insn_data3_typeenum aarch64_insn_logic_typeenum aarch64_insn_prfm_typeenum aarch64_insn_prfm_targetenum aarch64_insn_prfm_policyenum aarch64_insn_adr_typeenum aarch64_insn_mem_atomic_openum aarch64_insn_mem_order_typeenum aarch64_insn_mb_typefunction aarch64_insn_is_steppable_hintfunction aarch64_insn_is_branchfunction aarch64_insn_is_branch_immfunction aarch64_insn_is_adr_adrpfunction aarch64_insn_is_dsbfunction aarch64_insn_is_barrierfunction aarch64_insn_is_store_singlefunction aarch64_insn_is_store_pairfunction aarch64_insn_is_load_singlefunction aarch64_insn_is_load_pairfunction aarch64_insn_uses_literalfunction aarch64_insn_gen_hintfunction aarch64_insn_gen_nopfunction aarch64_insn_is_nop
Annotated Snippet
#ifndef __ASM_INSN_H
#define __ASM_INSN_H
#include <linux/build_bug.h>
#include <linux/types.h>
#include <asm/insn-def.h>
#ifndef __ASSEMBLER__
enum aarch64_insn_hint_cr_op {
AARCH64_INSN_HINT_NOP = 0x0 << 5,
AARCH64_INSN_HINT_YIELD = 0x1 << 5,
AARCH64_INSN_HINT_WFE = 0x2 << 5,
AARCH64_INSN_HINT_WFI = 0x3 << 5,
AARCH64_INSN_HINT_SEV = 0x4 << 5,
AARCH64_INSN_HINT_SEVL = 0x5 << 5,
AARCH64_INSN_HINT_XPACLRI = 0x07 << 5,
AARCH64_INSN_HINT_PACIA_1716 = 0x08 << 5,
AARCH64_INSN_HINT_PACIB_1716 = 0x0A << 5,
AARCH64_INSN_HINT_AUTIA_1716 = 0x0C << 5,
AARCH64_INSN_HINT_AUTIB_1716 = 0x0E << 5,
AARCH64_INSN_HINT_PACIAZ = 0x18 << 5,
AARCH64_INSN_HINT_PACIASP = 0x19 << 5,
AARCH64_INSN_HINT_PACIBZ = 0x1A << 5,
AARCH64_INSN_HINT_PACIBSP = 0x1B << 5,
AARCH64_INSN_HINT_AUTIAZ = 0x1C << 5,
AARCH64_INSN_HINT_AUTIASP = 0x1D << 5,
AARCH64_INSN_HINT_AUTIBZ = 0x1E << 5,
AARCH64_INSN_HINT_AUTIBSP = 0x1F << 5,
AARCH64_INSN_HINT_ESB = 0x10 << 5,
AARCH64_INSN_HINT_PSB = 0x11 << 5,
AARCH64_INSN_HINT_TSB = 0x12 << 5,
AARCH64_INSN_HINT_CSDB = 0x14 << 5,
AARCH64_INSN_HINT_CLEARBHB = 0x16 << 5,
AARCH64_INSN_HINT_BTI = 0x20 << 5,
AARCH64_INSN_HINT_BTIC = 0x22 << 5,
AARCH64_INSN_HINT_BTIJ = 0x24 << 5,
AARCH64_INSN_HINT_BTIJC = 0x26 << 5,
};
enum aarch64_insn_imm_type {
AARCH64_INSN_IMM_ADR,
AARCH64_INSN_IMM_26,
AARCH64_INSN_IMM_19,
AARCH64_INSN_IMM_16,
AARCH64_INSN_IMM_14,
AARCH64_INSN_IMM_12,
AARCH64_INSN_IMM_9,
AARCH64_INSN_IMM_7,
AARCH64_INSN_IMM_6,
AARCH64_INSN_IMM_S,
AARCH64_INSN_IMM_R,
AARCH64_INSN_IMM_N,
AARCH64_INSN_IMM_MAX
};
enum aarch64_insn_register_type {
AARCH64_INSN_REGTYPE_RT,
AARCH64_INSN_REGTYPE_RN,
AARCH64_INSN_REGTYPE_RT2,
AARCH64_INSN_REGTYPE_RM,
AARCH64_INSN_REGTYPE_RD,
AARCH64_INSN_REGTYPE_RA,
AARCH64_INSN_REGTYPE_RS,
};
enum aarch64_insn_register {
AARCH64_INSN_REG_0 = 0,
AARCH64_INSN_REG_1 = 1,
AARCH64_INSN_REG_2 = 2,
AARCH64_INSN_REG_3 = 3,
AARCH64_INSN_REG_4 = 4,
AARCH64_INSN_REG_5 = 5,
AARCH64_INSN_REG_6 = 6,
AARCH64_INSN_REG_7 = 7,
AARCH64_INSN_REG_8 = 8,
AARCH64_INSN_REG_9 = 9,
AARCH64_INSN_REG_10 = 10,
AARCH64_INSN_REG_11 = 11,
AARCH64_INSN_REG_12 = 12,
AARCH64_INSN_REG_13 = 13,
AARCH64_INSN_REG_14 = 14,
AARCH64_INSN_REG_15 = 15,
AARCH64_INSN_REG_16 = 16,
AARCH64_INSN_REG_17 = 17,
AARCH64_INSN_REG_18 = 18,
AARCH64_INSN_REG_19 = 19,
Annotation
- Immediate include surface: `linux/build_bug.h`, `linux/types.h`, `asm/insn-def.h`.
- Detected declarations: `enum aarch64_insn_hint_cr_op`, `enum aarch64_insn_imm_type`, `enum aarch64_insn_register_type`, `enum aarch64_insn_register`, `enum aarch64_insn_special_register`, `enum aarch64_insn_system_register`, `enum aarch64_insn_variant`, `enum aarch64_insn_condition`, `enum aarch64_insn_branch_type`, `enum aarch64_insn_size_type`.
- Atlas domain: Architecture Layer / arch/arm64.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.