pub struct CONTEXT_ARM64_OLD {
    pub context_flags: u64,
    pub iregs: [u64; 31],
    pub sp: u64,
    pub pc: u64,
    pub cpsr: u32,
    pub fpsr: u32,
    pub fpcr: u32,
    pub float_regs: [u128; 32],
}
Expand description

An old (breakpad-style) aarch64 (arm64) CPU context.

This is a breakpad extension, but contrary to what the name might suggest, it isn’t completely out of service. I believe all non-windows platforms still prefer emitting this format to avoid needless churn.

Semantically this type agrees with the “new” CONTEXT_ARM64 and can generally be handled with all the same logic. i.e. the general purpose iregs are the same. It’s just that the other fields are shuffled around.

As I understand it, this is basically an artifact of breakpad getting to arm64 “first” (Android would be first in line for it!) and picking a definition they thought was reasonable. Thankfully they picked an “out of the way” context id so that when Microsoft came along and picked their own definition, there wouldn’t be a conflict.

Note that we have inlined the fields of the “float save” struct from breakpad’s definition to be more uniform with CONTEXT_ARM64.

NOTE: if you ever decide to try to make this repr(C) and get really clever, this type is actually non-trivially repr(packed(4)) in the headers!

Fields

context_flags: u64iregs: [u64; 31]

[x0, x1, ..., x28, fp, lr]. See Arm64RegisterNumbers.

sp: u64pc: u64cpsr: u32fpsr: u32

FPU status register.

fpcr: u32

FPU control register.

float_regs: [u128; 32]

float/NEON registers [d0, d1, ..., d31]

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

The word size of general-purpose registers in the context.

General purpose registers in this context type.

Gets a static version of the given register name, if possible. Read more

Gets whether the given register is valid Read more

Get a register value regardless of whether it is valid.

Set a register value, if that register name it exists. Read more

Gets the name of the stack pointer register (for use with get_register/set_register).

Gets the name of the instruction pointer register (for use with get_register/set_register).

Get a register value if it is valid. Read more

Return a String containing the value of reg formatted to its natural width.

An iterator over all registers in this context. Read more

An iterator over valid registers in this context. Read more

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.