⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vmx_mm_def.h

📁 xen虚拟机源代码安装包
💻 H
字号:
/* -*-  Mode:C; c-basic-offset:4; tab-width:4; indent-tabs-mode:nil -*- *//* * vmx_mm_def.h:  * Copyright (c) 2004, Intel Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, * version 2, as published by the Free Software Foundation. * * This program is distributed in the hope it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 59 Temple * Place - Suite 330, Boston, MA 02111-1307 USA. * *      Kun Tian (Kevin Tian) (kevin.tian@intel.com) */#ifndef _MM_DEF_H_#define _MM_DEF_H_/* VHPT size 4M *///#define VHPT_SIZE_PS    22//#define VHPT_SIZE   (1 << VHPT_SIZE_PS)#define ARCH_PAGE_SHIFT   12#define ARCH_PAGE_SIZE    PSIZE(ARCH_PAGE_SHIFT)#define MAX_PHYS_ADDR_BITS  50#define GUEST_IMPL_VA_MSB   59#define PMASK(size)         (~((size) - 1))#define PSIZE(size)         (1UL<<(size))//#define PAGE_SIZE_4K        PSIZE(12)#define POFFSET(vaddr, ps)  ((vaddr) & (PSIZE(ps) - 1))#define PPN_2_PA(ppn)       ((ppn)<<12)#define CLEARLSB(ppn, nbits)    ((((uint64_t)ppn) >> (nbits)) << (nbits))#define PAGEALIGN(va, ps)	CLEARLSB(va, ps)#define TLB_AR_R        0#define TLB_AR_RX       1#define TLB_AR_RW       2#define TLB_AR_RWX      3#define TLB_AR_R_RW     4#define TLB_AR_RX_RWX       5#define TLB_AR_RWX_RW       6#define TLB_AR_XP       7#define IA64_ISR_CODE_MASK0     0xf#define IA64_UNIMPL_DADDR_FAULT     0x30#define IA64_UNIMPL_IADDR_TRAP      0x10#define IA64_RESERVED_REG_FAULT     0x30#define IA64_REG_NAT_CONSUMPTION_FAULT  0x10#define IA64_NAT_CONSUMPTION_FAULT  0x20#define IA64_PRIV_OP_FAULT      0x10#define DEFER_NONE      0#define DEFER_ALWAYS        0x1#define DEFER_DM        0x100       /* bit 8 */#define DEFER_DP        0X200       /* bit 9 */#define DEFER_DK        0x400       /* bit 10 */#define DEFER_DX        0x800       /* bit 11 */#define DEFER_DR        0x1000      /* bit 12 */#define DEFER_DA        0x2000      /* bit 13 */#define DEFER_DD        0x4000      /* bit 14 */#define ACCESS_RIGHT(a) ((a) & (ACCESS_FETCHADD - 1))#define ACCESS_READ     0x1#define ACCESS_WRITE        0x2#define ACCESS_EXECUTE      0x4#define ACCESS_XP0      0x8#define ACCESS_XP1      0x10#define ACCESS_XP2      0x20#define ACCESS_FETCHADD     0x40#define ACCESS_XCHG     0x80#define ACCESS_CMPXCHG      0x100#define ACCESS_SIZE_1       0x10000 #define ACCESS_SIZE_2       0x20000#define ACCESS_SIZE_4       0x40000#define ACCESS_SIZE_8       0x80000#define ACCESS_SIZE_10      0x100000#define ACCESS_SIZE_16      0x200000#define STLB_TC         0#define STLB_TR         1#define IA64_RR_SHIFT       61#define PHYS_PAGE_SHIFT     PPN_SHIFT#define STLB_SZ_SHIFT       8       // 256#define STLB_SIZE       (1UL<<STLB_SZ_SHIFT)#define STLB_PPS_SHIFT      12#define STLB_PPS        (1UL<<STLB_PPS_SHIFT)#define GUEST_TRNUM     8/* Virtual address memory attributes encoding */#define VA_MATTR_WB     0x0#define VA_MATTR_UC     0x4#define VA_MATTR_UCE        0x5#define VA_MATTR_WC     0x6#define VA_MATTR_NATPAGE    0x7#define VRN_MASK        0xe000000000000000#define PTA_BASE_MASK       0x3fffffffffffL#define PTA_BASE_SHIFT      15#define VHPT_OFFSET_MASK    0x7fff#define BITS_SHIFT_256MB    28#define SIZE_256MB      (1UL<<BITS_SHIFT_256MB)#define TLB_GR_RV_BITS      ((1UL<<1) | (3UL<<50))#define HPA_MAPPING_ATTRIBUTE   0x61  //ED:0;AR:0;PL:0;D:1;A:1;P:1#define VPN_2_VRN(vpn)  ((vpn << PPN_SHIFT) >> IA64_VRN_SHIFT)#ifndef __ASSEMBLY__typedef enum { INSTRUCTION, DATA, REGISTER } miss_type;//typedef enum { MVHPT, STLB } vtlb_loc_type_t;typedef enum { DATA_REF, NA_REF, INST_REF, RSE_REF } vhpt_ref_t;static __inline__ uint64_tbits_v(uint64_t v, uint32_t bs, uint32_t be){    uint64_t    result;    __asm __volatile("shl %0=%1, %2;; shr.u %0=%0, %3;;"        : "=r" (result): "r"(v), "r"(63-be), "r" (bs+63-be) );    return result;}#define bits(val, bs, be)                                         \({                                                              \        u64        ret;                                    \                                                                \        __asm __volatile("extr.u %0=%1, %2, %3"                 \                : "=r" (ret): "r"(val),                           \                  "M" ((bs)),                                   \                  "M" ((be) - (bs) + 1) );                      \        ret;                                                    \})/* * clear bits (pos, len) from v. * */#define clearbits(v, pos, len)                                  \({                                                              \        u64        ret;                                    \                                                                \        __asm __volatile("dep.z %0=%1, %2, %3"                  \                : "=r" (ret): "r"(v),                           \                  "M" ((pos)),                                  \                  "M" ((len)));                                 \         ret;                                                   \ })#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -