The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/amd64/vmm/x86.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
    3  *
    4  * Copyright (c) 2011 NetApp, Inc.
    5  * All rights reserved.
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions
    9  * are met:
   10  * 1. Redistributions of source code must retain the above copyright
   11  *    notice, this list of conditions and the following disclaimer.
   12  * 2. Redistributions in binary form must reproduce the above copyright
   13  *    notice, this list of conditions and the following disclaimer in the
   14  *    documentation and/or other materials provided with the distribution.
   15  *
   16  * THIS SOFTWARE IS PROVIDED BY NETAPP, INC ``AS IS'' AND
   17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   19  * ARE DISCLAIMED.  IN NO EVENT SHALL NETAPP, INC OR CONTRIBUTORS BE LIABLE
   20  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   22  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   24  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   25  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   26  * SUCH DAMAGE.
   27  *
   28  * $FreeBSD$
   29  */
   30 
   31 #ifndef _X86_H_
   32 #define _X86_H_
   33 
   34 #define CPUID_0000_0000 (0x0)
   35 #define CPUID_0000_0001 (0x1)
   36 #define CPUID_0000_0002 (0x2)
   37 #define CPUID_0000_0003 (0x3)
   38 #define CPUID_0000_0004 (0x4)
   39 #define CPUID_0000_0006 (0x6)
   40 #define CPUID_0000_0007 (0x7)
   41 #define CPUID_0000_000A (0xA)
   42 #define CPUID_0000_000B (0xB)
   43 #define CPUID_0000_000D (0xD)
   44 #define CPUID_0000_000F (0xF)
   45 #define CPUID_0000_0010 (0x10)
   46 #define CPUID_0000_0015 (0x15)
   47 #define CPUID_8000_0000 (0x80000000)
   48 #define CPUID_8000_0001 (0x80000001)
   49 #define CPUID_8000_0002 (0x80000002)
   50 #define CPUID_8000_0003 (0x80000003)
   51 #define CPUID_8000_0004 (0x80000004)
   52 #define CPUID_8000_0006 (0x80000006)
   53 #define CPUID_8000_0007 (0x80000007)
   54 #define CPUID_8000_0008 (0x80000008)
   55 #define CPUID_8000_001D (0x8000001D)
   56 #define CPUID_8000_001E (0x8000001E)
   57 
   58 /*
   59  * CPUID instruction Fn0000_0001:
   60  */
   61 #define CPUID_0000_0001_APICID_MASK                     (0xff<<24)
   62 #define CPUID_0000_0001_APICID_SHIFT                    24
   63 
   64 /*
   65  * CPUID instruction Fn0000_0001 ECX
   66  */
   67 #define CPUID_0000_0001_FEAT0_VMX       (1<<5)
   68 
   69 int x86_emulate_cpuid(struct vcpu *vcpu, uint64_t *rax, uint64_t *rbx,
   70     uint64_t *rcx, uint64_t *rdx);
   71 
   72 enum vm_cpuid_capability {
   73         VCC_NONE,
   74         VCC_NO_EXECUTE,
   75         VCC_FFXSR,
   76         VCC_TCE,
   77         VCC_LAST
   78 };
   79 
   80 /*
   81  * Return 'true' if the capability 'cap' is enabled in this virtual cpu
   82  * and 'false' otherwise.
   83  */
   84 bool vm_cpuid_capability(struct vcpu *vcpu, enum vm_cpuid_capability);
   85 
   86 #define VMM_MTRR_VAR_MAX 10
   87 #define VMM_MTRR_DEF_MASK \
   88         (MTRR_DEF_ENABLE | MTRR_DEF_FIXED_ENABLE | MTRR_DEF_TYPE)
   89 #define VMM_MTRR_PHYSBASE_MASK (MTRR_PHYSBASE_PHYSBASE | MTRR_PHYSBASE_TYPE)
   90 #define VMM_MTRR_PHYSMASK_MASK (MTRR_PHYSMASK_PHYSMASK | MTRR_PHYSMASK_VALID)
   91 struct vm_mtrr {
   92         uint64_t def_type;
   93         uint64_t fixed4k[8];
   94         uint64_t fixed16k[2];
   95         uint64_t fixed64k;
   96         struct {
   97                 uint64_t base;
   98                 uint64_t mask;
   99         } var[VMM_MTRR_VAR_MAX];
  100 };
  101 
  102 int vm_rdmtrr(struct vm_mtrr *mtrr, u_int num, uint64_t *val);
  103 int vm_wrmtrr(struct vm_mtrr *mtrr, u_int num, uint64_t val);
  104 
  105 #endif

Cache object: 472df583736dc7bad2299c36ca605677


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.