Struct TdxTrampolineContext

Source
#[repr(C)]
pub struct TdxTrampolineContext {
Show 29 fields pub mailbox_command: u16, pub mailbox_reserved: u16, pub mailbox_apic_id: u32, pub mailbox_wakeup_vector: u64, pub padding_1: u32, pub data_selector: u16, pub static_gdt_limit: u16, pub static_gdt_base: u32, pub task_selector: u16, pub idtr_limit: u16, pub idtr_base: u64, pub initial_rip: u64, pub code_selector: u16, pub padding_2: [u16; 2], pub gdtr_limit: u16, pub gdtr_base: u64, pub rsp: u64, pub rbp: u64, pub rsi: u64, pub r8: u64, pub r9: u64, pub r10: u64, pub r11: u64, pub cr0: u64, pub cr3: u64, pub cr4: u64, pub transition_cr3: u32, pub padding_3: u32, pub static_gdt: [u8; 16],
}
Expand description

This structure describes the initial state of the TD VP. When a VP (both BSP and AP) starts at ResetVector (RV), this is loaded at the beginning of the RV page. Fields in the trampoline context must be loaded from memory by the trampoline code.

Note that this trampoline context must also be used for bringing up APs, as the code placed in the reset vector will use this format to figure out what register state to load.

Fields§

§mailbox_command: u16

Mailbox command

§mailbox_reserved: u16

Reserved

§mailbox_apic_id: u32

Mailbox APIC ID

§mailbox_wakeup_vector: u64

AP wakeup vector

§padding_1: u32

Padding

§data_selector: u16

Data selector

§static_gdt_limit: u16

Static GDT limit

§static_gdt_base: u32

Static GDT base

§task_selector: u16

Task selector

§idtr_limit: u16

IDTR limit

§idtr_base: u64

IDTR base

§initial_rip: u64

Initial RIP

§code_selector: u16

CS

§padding_2: [u16; 2]

Padding

§gdtr_limit: u16

GDTR limit

§gdtr_base: u64

GDTR base

§rsp: u64

RSP

§rbp: u64

RBP

§rsi: u64

RSI

§r8: u64

R8

§r9: u64

R9

§r10: u64

R10

§r11: u64

R11

§cr0: u64

CR0

§cr3: u64

CR3

§cr4: u64

CR4

§transition_cr3: u32

Transistion CR3

§padding_3: u32

Padding

§static_gdt: [u8; 16]

Statuc GDT

Trait Implementations§

Source§

impl Clone for TdxTrampolineContext

Source§

fn clone(&self) -> TdxTrampolineContext

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TdxTrampolineContext

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for TdxTrampolineContext

Source§

fn default() -> TdxTrampolineContext

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

impl IntoBytes for TdxTrampolineContext
where u16: IntoBytes, u32: IntoBytes, u64: IntoBytes, [u16; 2]: IntoBytes, [u8; 16]: IntoBytes, (): PaddingFree<Self, { _ }>,

§

fn as_bytes(&self) -> &[u8]
where Self: Immutable,

Gets the bytes of this value. Read more
§

fn write_to(&self, dst: &mut [u8]) -> Result<(), SizeError<&Self, &mut [u8]>>
where Self: Immutable,

Writes a copy of self to dst. Read more
§

fn write_to_prefix( &self, dst: &mut [u8], ) -> Result<(), SizeError<&Self, &mut [u8]>>
where Self: Immutable,

Writes a copy of self to the prefix of dst. Read more
§

fn write_to_suffix( &self, dst: &mut [u8], ) -> Result<(), SizeError<&Self, &mut [u8]>>
where Self: Immutable,

Writes a copy of self to the suffix of dst. Read more
Source§

impl Copy for TdxTrampolineContext

Source§

impl Immutable for TdxTrampolineContext
where u16: Immutable, u32: Immutable, u64: Immutable, [u16; 2]: Immutable, [u8; 16]: Immutable,

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

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

fn clone_into(&self, target: &mut T)

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

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more