diff --git a/vm/callstack.h b/vm/callstack.h index ff68a8ba26..564dea9738 100644 --- a/vm/callstack.h +++ b/vm/callstack.h @@ -1,5 +1,5 @@ F_FASTCALL void save_callstack_bottom(F_STACK_FRAME *callstack_bottom); -__attribute__((noinline)) void save_callstack_top(F_STACK_FRAME *callstack_top); +F_FASTCALL __attribute__((noinline)) void save_callstack_top(F_STACK_FRAME *callstack_top); #define FIRST_STACK_FRAME(stack) (F_STACK_FRAME *)((stack) + 1) diff --git a/vm/os-windows-nt.c b/vm/os-windows-nt.c index 8f7513a32a..f6aa314819 100644 --- a/vm/os-windows-nt.c +++ b/vm/os-windows-nt.c @@ -29,7 +29,7 @@ long exception_handler(PEXCEPTION_POINTERS pe) CONTEXT *c = (CONTEXT*)pe->ContextRecord; if(in_code_heap_p(c->Eip)) - signal_callstack_top = (void*)c->Esp; + signal_callstack_top = (void *)(c->Esp - CELLS); else signal_callstack_top = NULL;