diff options
author | Simon Marlow <marlowsd@gmail.com> | 2011-03-30 10:19:34 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2011-03-30 10:19:34 +0000 |
commit | 035b8ebb5405efbcbfd3474821a877add1feca1e (patch) | |
tree | 21268304729a0b1f118593ae912516a0d3070308 /rts/RtsUtils.c | |
parent | 41147ad2a9ca84ebe66386b3b0043cb7b48ddcd8 (diff) | |
download | haskell-035b8ebb5405efbcbfd3474821a877add1feca1e.tar.gz |
Add a debug check for a non-empty FPU stack on x86 (see #4914)
Diffstat (limited to 'rts/RtsUtils.c')
-rw-r--r-- | rts/RtsUtils.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/rts/RtsUtils.c b/rts/RtsUtils.c index 3df688f401..8ef6c0d6f2 100644 --- a/rts/RtsUtils.c +++ b/rts/RtsUtils.c @@ -323,3 +323,18 @@ int rts_isProfiled(void) return 0; #endif } + +// Used for detecting a non-empty FPU stack on x86 (see #4914) +void checkFPUStack(void) +{ +#ifdef x86_HOST_ARCH + static unsigned char buf[108]; + asm("FSAVE %0":"=m" (buf)); + + if(buf[8]!=255 || buf[9]!=255) { + errorBelch("NONEMPTY FPU Stack, TAG = %x %x\n",buf[8],buf[9]); + abort(); + } +#endif +} + |