1#include "pedigree/kernel/processor/StackFrame.h"
2#include "pedigree/kernel/processor/state.h"
11 return reinterpret_cast<const uintptr_t*
>(
m_State.sp)[n - 8];
15void Arm64StackFrame::construct(ProcessorState& state, uintptr_t returnAddress,
16 unsigned int nParams, ...) {
18 va_start(args, nParams);
20 uintptr_t stack = state.sp & ~uintptr_t(15);
21 const size_t stackParams = nParams > 8 ? nParams - 8 : 0;
22 stack -= ((stackParams *
sizeof(uintptr_t) + 15) & ~size_t(15));
23 auto* stackArguments =
reinterpret_cast<uintptr_t*
>(stack);
25 for (
size_t i = 0; i < nParams; ++i) {
26 uintptr_t value = va_arg(args, uintptr_t);
30 stackArguments[i - 8] = value;
35 state.x[30] = returnAddress;
uintptr_t getParameter(size_t n) override
const ProcessorState & m_State