Allocate explicit stack on aarch64

This commit is contained in:
Justine Tunney 2023-08-15 04:40:19 -07:00
parent 0e586c834a
commit de3f3a9e5a
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
10 changed files with 144 additions and 74 deletions

View file

@ -154,19 +154,16 @@ forceinline pureconst bool IsStackFrame(int x) {
}
forceinline pureconst bool IsOldStack(const void *x) {
/* openbsd uses 4mb stack by default */
/* freebsd uses 512mb stack by default */
/* most systems use 8mb stack by default */
size_t foss_stack_size = 1ul * 1024 * 1024;
uintptr_t top = ROUNDUP(__oldstack + 1, foss_stack_size);
uintptr_t bot = ROUNDDOWN(__oldstack, foss_stack_size);
size_t foss_stack_size = 8ul * 1024 * 1024;
uintptr_t top = __oldstack + foss_stack_size;
uintptr_t bot = __oldstack - foss_stack_size;
return bot <= (uintptr_t)x && (uintptr_t)x < top;
}
forceinline pureconst bool IsOldStackFrame(int x) {
size_t foss_stack_size = 1ul * 1024 * 1024;
uintptr_t top = ROUNDUP(__oldstack + 1, foss_stack_size);
uintptr_t bot = ROUNDDOWN(__oldstack, foss_stack_size);
size_t foss_stack_size = 8ul * 1024 * 1024;
uintptr_t top = __oldstack + foss_stack_size;
uintptr_t bot = __oldstack - foss_stack_size;
return (int)(bot >> 16) <= x && x <= (int)((top >> 16) - 1);
}