diff options
author | kib <kib@FreeBSD.org> | 2014-07-02 13:09:26 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2014-07-02 13:09:26 +0000 |
commit | 62024097ea597140238f1338c25f54390d09d619 (patch) | |
tree | a5e6f17acd358da2e1d29cfe34ddb0a2135f6d24 /share | |
parent | 7c0a428b0db8e6f9a5cef2ed889c3eff3c65b649 (diff) | |
download | FreeBSD-src-62024097ea597140238f1338c25f54390d09d619.zip FreeBSD-src-62024097ea597140238f1338c25f54390d09d619.tar.gz |
MFC r267651 (by attilio):
Add the possibility to specify ecx when performing cpuid calls.
MFC r267673:
Restore the ABI of the cpuctl(4) ioctl request CPUCTL_CPUID.
MFC r267814:
Make cpuctl_do_cpuid() and cpuctl_do_cpuid_count() return void.
Diffstat (limited to 'share')
-rw-r--r-- | share/man/man4/cpuctl.4 | 53 |
1 files changed, 46 insertions, 7 deletions
diff --git a/share/man/man4/cpuctl.4 b/share/man/man4/cpuctl.4 index ed80f8a..3cc0138 100644 --- a/share/man/man4/cpuctl.4 +++ b/share/man/man4/cpuctl.4 @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd June 30, 2009 +.Dd June 20, 2014 .Dt CPUCTL 4 .Os .Sh NAME @@ -65,7 +65,7 @@ All of the supported operations are invoked using the .Xr ioctl 2 system call. Currently, the following ioctls are defined: -.Bl -tag -width CPUCTL_UPDATE +.Bl -tag -width CPUCTL_CPUID_COUNT .It Dv CPUCTL_RDMSR Fa cpuctl_msr_args_t *args .It Dv CPUCTL_WRMSR Fa cpuctl_msr_args_t *args Read/write CPU machine specific register. @@ -87,20 +87,59 @@ Set/clear MSR bits according to the mask given in the field. .It Dv CPUCTL_CPUID Fa cpuctl_cpuid_args_t *args Retrieve CPUID information. -Arguments are supplied in -the following struct: +Arguments are supplied in the following structure: .Bd -literal typedef struct { - int level; /* CPUID level */ + int level; /* CPUID level */ uint32_t data[4]; } cpuctl_cpuid_args_t; .Ed -.Pp +It is equivalent to the +.Dv CPUCTL_CPUID_COUNT +request with +.Va level_type +set to 0. +.It Dv CPUCTL_CPUID_COUNT Fa cpuctl_cpuid_count_args_t *args +Retrieve CPUID information. +Arguments are supplied in the following structure: +.Bd -literal +typedef struct { + int level; /* CPUID level */ + int level_type; /* CPUID level type */ + uint32_t data[4]; +} cpuctl_cpuid_count_args_t; +.Ed The .Va level -field indicates the CPUID level to retrieve information for, while the +field indicates the CPUID level to retrieve, +it is loaded into the +.Va %eax +register before the CPUID instruction is executed, +The +.Va level_type +field indicates the CPUID level type to retrieve, +it is loaded into the +.Va %ecx +register. +.Pp +The .Va data field is used to store the received CPUID data. +That is, +.Va data[0] +contains the value of +.Va %eax +register after the CPUID instruction is executed, +.Va data[1] +is for +.Va %ebx , +.Va data[2] +for +.Va %ecx , +and +.Va data[3] +for +.Va %edx . .It Dv CPUCTL_UPDATE cpuctl_update_args_t *args Update CPU firmware (microcode). The structure is defined in |