aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/runtime/os_windows.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/runtime/os_windows.c')
-rw-r--r--src/pkg/runtime/os_windows.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/pkg/runtime/os_windows.c b/src/pkg/runtime/os_windows.c
index d867b0d50e..6c9d687b70 100644
--- a/src/pkg/runtime/os_windows.c
+++ b/src/pkg/runtime/os_windows.c
@@ -291,7 +291,14 @@ runtime·stdcall(void *fn, int32 count, ...)
m->libcall.fn = fn;
m->libcall.n = count;
m->libcall.args = (uintptr*)&count + 1;
+ if(m->profilehz != 0) {
+ // leave pc/sp for cpu profiler
+ m->libcallpc = (uintptr)runtime·getcallerpc(&fn);
+ m->libcallsp = (uintptr)runtime·getcallersp(&fn);
+ m->libcallg = g;
+ }
runtime·asmcgocall(runtime·asmstdcall, &m->libcall);
+ m->libcallsp = 0;
return (void*)m->libcall.r1;
}