use core::mem::{align_of, size_of};
use ax_cpu::registers::CpuEntryState;
use crate::{CPU_AREA_ARCH_STATE_OFFSET, CPU_AREA_ARCH_STATE_SIZE};
const _: () = {
assert!(size_of::<CpuEntryState>() <= CPU_AREA_ARCH_STATE_SIZE);
assert!(CPU_AREA_ARCH_STATE_OFFSET.is_multiple_of(align_of::<CpuEntryState>()));
assert!(CPU_AREA_ARCH_STATE_OFFSET + size_of::<CpuEntryState>() <= 0x800);
};
core::arch::global_asm!(
".global __AX_CPU_AREA_ARCH_STATE_OFFSET",
".hidden __AX_CPU_AREA_ARCH_STATE_OFFSET",
".set __AX_CPU_AREA_ARCH_STATE_OFFSET, {offset}",
offset = const CPU_AREA_ARCH_STATE_OFFSET,
);
#[cfg(target_arch = "riscv64")]
const _: () = {
use ax_cpu::registers::TaskEntryState;
use crate::{
EXECUTION_CONTEXT_ARCH_STATE_OFFSET, EXECUTION_CONTEXT_ARCH_STATE_SIZE,
EXECUTION_CONTEXT_CPU_BASE_OFFSET,
};
assert!(size_of::<TaskEntryState>() <= EXECUTION_CONTEXT_ARCH_STATE_SIZE);
assert!(EXECUTION_CONTEXT_ARCH_STATE_OFFSET.is_multiple_of(align_of::<TaskEntryState>()));
assert!(EXECUTION_CONTEXT_ARCH_STATE_OFFSET + size_of::<TaskEntryState>() <= 0x800);
assert!(EXECUTION_CONTEXT_CPU_BASE_OFFSET + size_of::<usize>() <= 0x800);
};
#[cfg(target_arch = "riscv64")]
core::arch::global_asm!(
".global __AX_CPU_TASK_ARCH_STATE_OFFSET",
".hidden __AX_CPU_TASK_ARCH_STATE_OFFSET",
".set __AX_CPU_TASK_ARCH_STATE_OFFSET, {state}",
".global __AX_CPU_TASK_CPU_BASE_OFFSET",
".hidden __AX_CPU_TASK_CPU_BASE_OFFSET",
".set __AX_CPU_TASK_CPU_BASE_OFFSET, {cpu}",
state = const crate::EXECUTION_CONTEXT_ARCH_STATE_OFFSET,
cpu = const crate::EXECUTION_CONTEXT_CPU_BASE_OFFSET,
);