\r
**/\r
\r
-\r
#include "BaseLibInternals.h"\r
\r
-\r
-\r
-\r
/**\r
Used to serialize load and store operations.\r
\r
__asm__ __volatile__ ("":::"memory");\r
}\r
\r
-\r
/**\r
Requests CPU to pause for a short period of time.\r
\r
__asm__ __volatile__ ("pause");\r
}\r
\r
-\r
/**\r
Generates a breakpoint on the CPU.\r
\r
__asm__ __volatile__ ("int $3");\r
}\r
\r
-\r
/**\r
Reads the current value of the EFLAGS register.\r
\r
VOID\r
)\r
{\r
- UINTN Eflags;\r
+ UINTN Eflags;\r
\r
__asm__ __volatile__ (\r
"pushfq \n\t"\r
"pop %0 "\r
: "=r" (Eflags) // %0\r
- );\r
+ );\r
\r
return Eflags;\r
}\r
VOID\r
EFIAPI\r
InternalX86FxSave (\r
- OUT IA32_FX_BUFFER *Buffer\r
+ OUT IA32_FX_BUFFER *Buffer\r
)\r
{\r
__asm__ __volatile__ (\r
"fxsave %0"\r
:\r
: "m" (*Buffer) // %0\r
- );\r
+ );\r
}\r
\r
-\r
/**\r
Restores the current floating point/SSE/SSE2 context from a buffer.\r
\r
VOID\r
EFIAPI\r
InternalX86FxRestore (\r
- IN CONST IA32_FX_BUFFER *Buffer\r
+ IN CONST IA32_FX_BUFFER *Buffer\r
)\r
{\r
__asm__ __volatile__ (\r
"fxrstor %0"\r
:\r
: "m" (*Buffer) // %0\r
- );\r
+ );\r
}\r
\r
-\r
/**\r
Reads the current value of 64-bit MMX Register #0 (MM0).\r
\r
__asm__ __volatile__ (\r
"movd %%mm0, %0 \n\t"\r
: "=r" (Data) // %0\r
- );\r
+ );\r
\r
return Data;\r
}\r
\r
-\r
/**\r
Reads the current value of 64-bit MMX Register #1 (MM1).\r
\r
__asm__ __volatile__ (\r
"movd %%mm1, %0 \n\t"\r
: "=r" (Data) // %0\r
- );\r
+ );\r
\r
return Data;\r
}\r
\r
-\r
/**\r
Reads the current value of 64-bit MMX Register #2 (MM2).\r
\r
__asm__ __volatile__ (\r
"movd %%mm2, %0 \n\t"\r
: "=r" (Data) // %0\r
- );\r
+ );\r
\r
return Data;\r
}\r
\r
-\r
/**\r
Reads the current value of 64-bit MMX Register #3 (MM3).\r
\r
__asm__ __volatile__ (\r
"movd %%mm3, %0 \n\t"\r
: "=r" (Data) // %0\r
- );\r
+ );\r
\r
return Data;\r
}\r
\r
-\r
/**\r
Reads the current value of 64-bit MMX Register #4 (MM4).\r
\r
__asm__ __volatile__ (\r
"movd %%mm4, %0 \n\t"\r
: "=r" (Data) // %0\r
- );\r
+ );\r
\r
return Data;\r
}\r
\r
-\r
/**\r
Reads the current value of 64-bit MMX Register #5 (MM5).\r
\r
__asm__ __volatile__ (\r
"movd %%mm5, %0 \n\t"\r
: "=r" (Data) // %0\r
- );\r
+ );\r
\r
return Data;\r
}\r
\r
-\r
/**\r
Reads the current value of 64-bit MMX Register #6 (MM6).\r
\r
__asm__ __volatile__ (\r
"movd %%mm6, %0 \n\t"\r
: "=r" (Data) // %0\r
- );\r
+ );\r
\r
return Data;\r
}\r
\r
-\r
/**\r
Reads the current value of 64-bit MMX Register #7 (MM7).\r
\r
__asm__ __volatile__ (\r
"movd %%mm7, %0 \n\t"\r
: "=r" (Data) // %0\r
- );\r
+ );\r
\r
return Data;\r
}\r
\r
-\r
/**\r
Writes the current value of 64-bit MMX Register #0 (MM0).\r
\r
VOID\r
EFIAPI\r
AsmWriteMm0 (\r
- IN UINT64 Value\r
+ IN UINT64 Value\r
)\r
{\r
__asm__ __volatile__ (\r
"movd %0, %%mm0" // %0\r
:\r
: "m" (Value)\r
- );\r
+ );\r
}\r
\r
-\r
/**\r
Writes the current value of 64-bit MMX Register #1 (MM1).\r
\r
VOID\r
EFIAPI\r
AsmWriteMm1 (\r
- IN UINT64 Value\r
+ IN UINT64 Value\r
)\r
{\r
__asm__ __volatile__ (\r
"movd %0, %%mm1" // %0\r
:\r
: "m" (Value)\r
- );\r
+ );\r
}\r
\r
-\r
/**\r
Writes the current value of 64-bit MMX Register #2 (MM2).\r
\r
VOID\r
EFIAPI\r
AsmWriteMm2 (\r
- IN UINT64 Value\r
+ IN UINT64 Value\r
)\r
{\r
__asm__ __volatile__ (\r
"movd %0, %%mm2" // %0\r
:\r
: "m" (Value)\r
- );\r
+ );\r
}\r
\r
-\r
/**\r
Writes the current value of 64-bit MMX Register #3 (MM3).\r
\r
VOID\r
EFIAPI\r
AsmWriteMm3 (\r
- IN UINT64 Value\r
+ IN UINT64 Value\r
)\r
{\r
__asm__ __volatile__ (\r
"movd %0, %%mm3" // %0\r
:\r
: "m" (Value)\r
- );\r
+ );\r
}\r
\r
-\r
/**\r
Writes the current value of 64-bit MMX Register #4 (MM4).\r
\r
VOID\r
EFIAPI\r
AsmWriteMm4 (\r
- IN UINT64 Value\r
+ IN UINT64 Value\r
)\r
{\r
__asm__ __volatile__ (\r
"movd %0, %%mm4" // %0\r
:\r
: "m" (Value)\r
- );\r
+ );\r
}\r
\r
-\r
/**\r
Writes the current value of 64-bit MMX Register #5 (MM5).\r
\r
VOID\r
EFIAPI\r
AsmWriteMm5 (\r
- IN UINT64 Value\r
+ IN UINT64 Value\r
)\r
{\r
__asm__ __volatile__ (\r
"movd %0, %%mm5" // %0\r
:\r
: "m" (Value)\r
- );\r
+ );\r
}\r
\r
-\r
/**\r
Writes the current value of 64-bit MMX Register #6 (MM6).\r
\r
VOID\r
EFIAPI\r
AsmWriteMm6 (\r
- IN UINT64 Value\r
+ IN UINT64 Value\r
)\r
{\r
__asm__ __volatile__ (\r
"movd %0, %%mm6" // %0\r
:\r
: "m" (Value)\r
- );\r
+ );\r
}\r
\r
-\r
/**\r
Writes the current value of 64-bit MMX Register #7 (MM7).\r
\r
VOID\r
EFIAPI\r
AsmWriteMm7 (\r
- IN UINT64 Value\r
+ IN UINT64 Value\r
)\r
{\r
__asm__ __volatile__ (\r
"movd %0, %%mm7" // %0\r
:\r
: "m" (Value)\r
- );\r
+ );\r
}\r
\r
-\r
/**\r
Reads the current value of Time Stamp Counter (TSC).\r
\r
"rdtsc"\r
: "=a" (LowData),\r
"=d" (HiData)\r
- );\r
+ );\r
\r
return (((UINT64)HiData) << 32) | LowData;\r
}\r