Path: blob/main/system/lib/compiler-rt/stack_limits.S
6162 views
.globl emscripten_stack_init1.globl emscripten_stack_set_limits2.globl emscripten_stack_get_free3.globl emscripten_stack_get_base4.globl emscripten_stack_get_end56#ifdef __wasm64__7#define PTR i648#define ALIGN 39#define PTRSTORE .int6410#else11#define PTR i3212#define ALIGN 213#define PTRSTORE .int3214#endif1516.globaltype __stack_pointer, PTR1718.section .globals,"",@1920# TODO(sbc): It would be nice if these were initialized directly21# using PTR.const rather than using the `emscripten_stack_init`22.globaltype __stack_end, PTR23__stack_end:24.globaltype __stack_base, PTR25__stack_base:2627.section .text,"",@2829emscripten_stack_get_base:30.functype emscripten_stack_get_base () -> (PTR)31global.get __stack_base32end_function3334emscripten_stack_get_end:35.functype emscripten_stack_get_end () -> (PTR)36global.get __stack_end37end_function3839emscripten_stack_init:40# Initialize __stack_end and __stack_base.41# This must be called before emscripten_stack_get_end,42# emscripten_stack_get_base, or emscripten_stack_get_free are called43.functype emscripten_stack_init () -> ()4445# What llvm calls __stack_high is the high address from where it grows46# downwards. We call this the stack base here in emscripten.47#ifdef __PIC__48global.get __stack_high@GOT49#else50PTR.const __stack_high51#endif52global.set __stack_base5354# What llvm calls __stack_low is that end of the stack55#ifdef __PIC__56global.get __stack_low@GOT57#else58PTR.const __stack_low59#endif60# Align up to 16 bytes61PTR.const 0xf62PTR.add63PTR.const -0x1064PTR.and65global.set __stack_end6667end_function6869emscripten_stack_set_limits:70.functype emscripten_stack_set_limits (PTR, PTR) -> ()71local.get 072global.set __stack_base73local.get 174global.set __stack_end75end_function7677emscripten_stack_get_free:78.functype emscripten_stack_get_free () -> (PTR)79global.get __stack_pointer80global.get __stack_end81PTR.sub82end_function8384# Add emscripten_stack_init to static ctors85.section .init_array.1,"",@86.p2align ALIGN87PTRSTORE emscripten_stack_init888990