diff options
author | Christopher Faylor <me@cgf.cx> | 2003-04-16 03:03:45 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2003-04-16 03:03:45 +0000 |
commit | c448f78fd56ef8d34474adc2678d6394a4d088ec (patch) | |
tree | 8b0177d10bddf05d3648e296b07ab13e218115e8 /winsup/cygwin/cpuid.h | |
parent | 9eed5df6392240b46c2506dcb37227ee73f5a806 (diff) | |
download | cygnal-c448f78fd56ef8d34474adc2678d6394a4d088ec.tar.gz cygnal-c448f78fd56ef8d34474adc2678d6394a4d088ec.tar.bz2 cygnal-c448f78fd56ef8d34474adc2678d6394a4d088ec.zip |
* termios.cc (setspeed): New function.
(cfsetospeed): Use setspeed to set speed.
(cfsetispeed): Use setspeed to set speed.
* autoload.cc: Add load statement for UuidCreate, and UuidCreateSequential.
* cpuid.h: New file.
* cygwin.din: Export gethostid.
* fhandler_proc.cc (cpuid): Move to cpuid.h.
(can_set_flag): Move to cpuid.h.
* syscalls.cc (gethostid): New function.
* version.h: Bump DLL minor version number to 83.
Diffstat (limited to 'winsup/cygwin/cpuid.h')
-rw-r--r-- | winsup/cygwin/cpuid.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/winsup/cygwin/cpuid.h b/winsup/cygwin/cpuid.h new file mode 100644 index 000000000..1f0cc5006 --- /dev/null +++ b/winsup/cygwin/cpuid.h @@ -0,0 +1,35 @@ +#ifndef CPUID_H +#define CPUID_H + +extern inline void +cpuid (unsigned *a, unsigned *b, unsigned *c, unsigned *d, unsigned in) +{ + asm ("cpuid" + : "=a" (*a), + "=b" (*b), + "=c" (*c), + "=d" (*d) + : "a" (in)); +} + +extern inline bool +can_set_flag (unsigned flag) +{ + unsigned r1, r2; + asm("pushfl\n" + "popl %0\n" + "movl %0, %1\n" + "xorl %2, %0\n" + "pushl %0\n" + "popfl\n" + "pushfl\n" + "popl %0\n" + "pushl %1\n" + "popfl\n" + : "=&r" (r1), "=&r" (r2) + : "ir" (flag) + ); + return ((r1 ^ r2) & flag) != 0; +} + +#endif // !CPUID_H |