From a35bfa2e9bc73cbdd420588dd098f91cd7afa172 Mon Sep 17 00:00:00 2001 From: klutzy Date: Sun, 11 Aug 2013 17:56:37 +0900 Subject: [PATCH] rt: Add {get,record}_sp_limit on Win64 Uses ArbitraryUserPointer area at gs:0x28. --- src/rt/arch/x86_64/sp.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/rt/arch/x86_64/sp.h b/src/rt/arch/x86_64/sp.h index bf011f4d0197..764927759fe6 100644 --- a/src/rt/arch/x86_64/sp.h +++ b/src/rt/arch/x86_64/sp.h @@ -43,6 +43,10 @@ extern "C" CDECL ALWAYS_INLINE uintptr_t get_sp_limit() { asm volatile ( "movq %%fs:24, %0" : "=r"(limit)); +#elif defined(_WIN64) + asm volatile ( + "movq %%gs:0x28, %0" + : "=r"(limit)); #endif return limit; @@ -65,6 +69,10 @@ extern "C" CDECL ALWAYS_INLINE void record_sp_limit(void *limit) { asm volatile ( "movq %0, %%fs:24" :: "r"(limit)); +#elif defined(_WIN64) + asm volatile ( + "movq %0, %%gs:0x28" + :: "r"(limit)); #endif }