Correct typo [ci skip]
[ruby.git] / wasm / setjmp_core.S
blob4a7194056efc63c0a697f4becbdddf9457363ac4
1         # extern int _rb_wasm_setjmp_internal(rb_wasm_jmp_buf *env);
2         .functype       _rb_wasm_setjmp_internal (i32) -> (i32)
3         # extern int __stack_pointer;
4         .globaltype     __stack_pointer, i32
6         # A wrapper of _rb_wasm_setjmp_internal to save and restore stack pointer
7         # This cannot be implemented in C because there is no way to manipulate stack pointer
8         # without C-epilogue.
10         # extern int _rb_wasm_setjmp(rb_wasm_jmp_buf *env);
11         .section        .text._rb_wasm_setjmp,"",@
12         .globl          _rb_wasm_setjmp
13         .type           _rb_wasm_setjmp,@function
14 _rb_wasm_setjmp:
15         .functype       _rb_wasm_setjmp (i32) -> (i32)
16         .local          i32, i32
17         # save sp (this local is stored in asyncify stack and restored when rewinding)
18         global.get      __stack_pointer
19         local.set       1
21         local.get       0
22         call            _rb_wasm_setjmp_internal
24         # restore sp
25         local.get       1
26         global.set      __stack_pointer
27         end_function