File tree Expand file tree Collapse file tree 1 file changed +7
-0
lines changed Expand file tree Collapse file tree 1 file changed +7
-0
lines changed Original file line number Diff line number Diff line change @@ -53,6 +53,9 @@ pub unsafe extern "C" fn __rust_probestack() {
5353 // The ABI here is that the stack frame size is located in `%eax`. Upon
5454 // return we're not supposed to modify `%esp` or `%eax`.
5555 asm ! ( "
56+ pushq %rbp
57+ movq %rsp, %rbp
58+
5659 mov %rax,%r11 // duplicate %rax as we're clobbering %r11
5760
5861 // Main loop, taken in one page increments. We're decrementing rsp by
@@ -89,6 +92,7 @@ pub unsafe extern "C" fn __rust_probestack() {
8992 // return.
9093 add %rax,%rsp
9194
95+ leave
9296 ret
9397 " :: : "memory" : "volatile" ) ;
9498 :: core:: intrinsics:: unreachable ( ) ;
@@ -104,6 +108,8 @@ pub unsafe extern "C" fn __rust_probestack() {
104108 //
105109 // The ABI here is the same as x86_64, except everything is 32-bits large.
106110 asm ! ( "
111+ push %ebp
112+ mov %esp, %ebp
107113 push %ecx
108114 mov %eax,%ecx
109115
@@ -122,6 +128,7 @@ pub unsafe extern "C" fn __rust_probestack() {
122128
123129 add %eax,%esp
124130 pop %ecx
131+ leave
125132 ret
126133 " :: : "memory" : "volatile" ) ;
127134 :: core:: intrinsics:: unreachable ( ) ;
You can’t perform that action at this time.
0 commit comments