Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
emscripten-core
GitHub Repository: emscripten-core/emscripten
Path: blob/main/system/lib/compiler-rt/stack_ops.S
6162 views
1
.globl _emscripten_stack_restore
2
.globl _emscripten_stack_alloc
3
.globl emscripten_stack_get_current
4
5
#ifdef __wasm64__
6
#define PTR i64
7
#define MASK 0xfffffffffffffff0
8
#else
9
#define PTR i32
10
#define MASK 0xfffffff0
11
#endif
12
13
.globaltype __stack_pointer, PTR
14
15
_emscripten_stack_restore:
16
.functype _emscripten_stack_restore(PTR) -> ()
17
local.get 0
18
global.set __stack_pointer
19
end_function
20
21
_emscripten_stack_alloc:
22
.functype _emscripten_stack_alloc(PTR) -> (PTR)
23
.local PTR, PTR
24
global.get __stack_pointer
25
# Get arg 0 -> number of bytes to allocate
26
local.get 0
27
# Stack grows down. Subtract arg0 from __stack_pointer
28
PTR.sub
29
# Align result by anding with ~15
30
PTR.const MASK
31
PTR.and
32
local.tee 1
33
global.set __stack_pointer
34
local.get 1
35
end_function
36
37
emscripten_stack_get_current:
38
.functype emscripten_stack_get_current () -> (PTR)
39
global.get __stack_pointer
40
end_function
41
42