diff options
Diffstat (limited to 'wasm/machine_core.S')
-rw-r--r-- | wasm/machine_core.S | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/wasm/machine_core.S b/wasm/machine_core.S new file mode 100644 index 0000000000..f0050536f5 --- /dev/null +++ b/wasm/machine_core.S @@ -0,0 +1,25 @@ + # extern int __stack_pointer; + .globaltype __stack_pointer, i32 + + # NOTE: Implement this in raw assembly to avoid stack pointer + # operations in C-prologue and epilogue. + + # void *rb_wasm_get_stack_pointer(void); + .section .text.rb_wasm_get_stack_pointer,"",@ + .globl rb_wasm_get_stack_pointer + .type rb_wasm_get_stack_pointer,@function +rb_wasm_get_stack_pointer: + .functype rb_wasm_get_stack_pointer () -> (i32) + global.get __stack_pointer + end_function + + # void rb_wasm_set_stack_pointer(void *sp); + .section .text.rb_wasm_set_stack_pointer,"",@ + .globl rb_wasm_set_stack_pointer + .type rb_wasm_set_stack_pointer,@function +rb_wasm_set_stack_pointer: + .functype rb_wasm_set_stack_pointer (i32) -> () + local.get 0 + global.set __stack_pointer + end_function + |