zig/lib/std / c/darwin/aarch64.zig

// See C headers in
// lib/libc/include/aarch64-macos.12-gnu/mach/arm/_structs.h
// lib/libc/include/aarch64-macos.13-none/arm/_mcontext.h

mcontext_t

pub const mcontext_t = extern struct {
    es: exception_state,
    ss: thread_state,
    ns: neon_state,
};

exception_state

pub const exception_state = extern struct {
    far: u64, // Virtual Fault Address
    esr: u32, // Exception syndrome
    exception: u32, // Number of arm exception taken
};

thread_state

pub const thread_state = extern struct {
    regs: [29]u64, // General purpose registers
    fp: u64, // Frame pointer x29
    lr: u64, // Link register x30
    sp: u64, // Stack pointer x31
    pc: u64, // Program counter
    cpsr: u32, // Current program status register
    __pad: u32,
};

neon_state

pub const neon_state = extern struct {
    q: [32]u128,
    fpsr: u32,
    fpcr: u32,
};

EXC_TYPES_COUNT

pub const EXC_TYPES_COUNT = 14;

EXC_MASK_MACHINE

pub const EXC_MASK_MACHINE = 0;

ARM_THREAD_STATE

pub const ARM_THREAD_STATE = 1;

ARM_UNIFIED_THREAD_STATE

pub const ARM_UNIFIED_THREAD_STATE = ARM_THREAD_STATE;

ARM_VFP_STATE

pub const ARM_VFP_STATE = 2;

ARM_EXCEPTION_STATE

pub const ARM_EXCEPTION_STATE = 3;

ARM_DEBUG_STATE

pub const ARM_DEBUG_STATE = 4;

THREAD_STATE_NONE

pub const THREAD_STATE_NONE = 5;

ARM_THREAD_STATE64

pub const ARM_THREAD_STATE64 = 6;

ARM_EXCEPTION_STATE64

pub const ARM_EXCEPTION_STATE64 = 7;

ARM_THREAD_STATE_LAST

pub const ARM_THREAD_STATE_LAST = 8;

ARM_THREAD_STATE32

pub const ARM_THREAD_STATE32 = 9;

ARM_DEBUG_STATE32

pub const ARM_DEBUG_STATE32 = 14;

ARM_DEBUG_STATE64

pub const ARM_DEBUG_STATE64 = 15;

ARM_NEON_STATE

pub const ARM_NEON_STATE = 16;

ARM_NEON_STATE64

pub const ARM_NEON_STATE64 = 17;

ARM_CPMU_STATE64

pub const ARM_CPMU_STATE64 = 18;

ARM_PAGEIN_STATE

pub const ARM_PAGEIN_STATE = 27;