From a9b0a928739e568c7f1649e764d9559f21370491 Mon Sep 17 00:00:00 2001 From: sergei Date: Sun, 16 Mar 2014 22:05:04 +0000 Subject: [PATCH] * cpuid_support: translated to ATT syntax and optimized a bit. git-svn-id: trunk@27168 - --- rtl/i386/i386.inc | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/rtl/i386/i386.inc b/rtl/i386/i386.inc index 246664ea2b..aea16cc115 100644 --- a/rtl/i386/i386.inc +++ b/rtl/i386/i386.inc @@ -22,33 +22,27 @@ var { this variable is set to true, if currently an sse check is executed and no sig ill should be generated } sse_check : boolean; -{$asmmode intel} +{$asmmode ATT} -function cpuid_support : boolean;assembler; +function cpuid_support : boolean;assembler;nostackframe; { Check if the ID-flag can be changed, if changed then CpuID is supported. Tested under go32v1 and Linux on c6x86 with CpuID enabled and disabled (PFV) } asm - push ebx - pushfd - pushfd - pop eax - mov ebx,eax - xor eax,200000h - push eax - popfd - pushfd - pop eax - popfd - and eax,200000h - and ebx,200000h - cmp eax,ebx - setnz al - pop ebx + pushfl + movl (%esp),%eax + xorl $0x200000,%eax + pushl %eax + popfl + pushfl + popl %eax + xorl (%esp),%eax + popfl + testl $0x200000,%eax + setnz %al end; -{$asmmode ATT} procedure check_sse_support; var