65#if defined(Q_CC_GNU) || __has_builtin(__builtin_frame_address)
66 stackPointer = __builtin_frame_address(0);
67#elif defined(Q_CC_MSVC)
68 stackPointer = &stackPointer;
69#elif defined(Q_PROCESSOR_X86_64)
70 __asm__ __volatile__(
"movq %%rsp, %0" :
"=r"(stackPointer) : :);
71#elif defined(Q_PROCESSOR_X86)
72 __asm__ __volatile__(
"movl %%esp, %0" :
"=r"(stackPointer) : :);
73#elif defined(Q_PROCESSOR_ARM_64) && defined(__ILP32__)
74 quint64 stackPointerRegister = 0;
75 __asm__ __volatile__(
"mov %0, sp" :
"=r"(stackPointerRegister) : :);
76 stackPointer =
reinterpret_cast<
void *>(stackPointerRegister);
77#elif defined(Q_PROCESSOR_ARM_64) || defined(Q_PROCESSOR_ARM_32)
78 __asm__ __volatile__(
"mov %0, sp" :
"=r"(stackPointer) : :);
80 stackPointer = &stackPointer;