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

📄 htab.h

📁 xen 3.2.2 源码
💻 H
字号:
/* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that 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, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA. * * Copyright (C) IBM Corp. 2005 * * Authors: Hollis Blanchard <hollisb@us.ibm.com> */#ifndef _ASM_HTAB_H_#define _ASM_HTAB_H_#include <xen/config.h>#include <xen/types.h>/***** general PowerPC architecture limits ******//* 256KB, from PowerPC Architecture specification */#define HTAB_MIN_LOG_SIZE 18#define LOG_NUM_PTES_IN_PTEG    3#define NUM_PTES_IN_PTEG        (1 << LOG_NUM_PTES_IN_PTEG)#define LOG_PTE_SIZE            4#define LOG_PTEG_SIZE           (LOG_NUM_PTES_IN_PTEG + LOG_PTE_SIZE)#define LOG_HTAB_HASH           (LOG_HTAB_SIZE - LOG_PTEG_SIZE)/* real page number shift to create the rpn field of the pte */#define RPN_SHIFT 12/* page protection bits in pp1 (name format: MSR:PR=0 | MSR:PR=1) */#define PP_RWxx 0x0UL#define PP_RWRW 0x2UL#define PP_RWRx 0x4UL#define PP_RxRx 0x6UL/***** 64-bit PowerPC architecture limits ******/#define SDR1_HTABORG_MASK   0xfffffffffff80000ULL#define SDR1_HTABSIZE_MASK  0x1fUL#define SDR1_HTABSIZE_MAX   46#define SDR1_HTABSIZE_BASEBITS 11/* used to turn a vsid into a number usable in the hash function */#define VSID_HASH_MASK 0x0000007fffffffffUL/* used to turn a vaddr into an api for a pte */#define VADDR_TO_API(vaddr) (((vaddr) & API_MASK) >> API_SHIFT)#define API_VEC   0x1fUL#define API_SHIFT 23#define API_MASK  (API_VEC << API_SHIFT)/***** hypervisor internals ******//* 64M: reasonable hypervisor limit? */#define HTAB_MAX_LOG_SIZE 26#define GET_HTAB(domain) ((domain)->arch.htab.sdr1 & SDR1_HTABORG_MASK)union pte {    struct pte_words {        ulong vsid;        ulong rpn;    } words;    struct pte_bits {        /* *INDENT-OFF* */        /* high word */        ulong avpn:     57; /* [0-56] abbreviated virtual page number */        ulong lock:     1;  /* [57] hypervisor lock bit */        ulong res:      1;  /* [58] reserved for hypervisor */        ulong bolted:   1;  /* [59] XXX software-reserved; temp hack */        ulong sw:       1;  /* [60] reserved for software */        ulong l:        1;  /* [61] Large Page */        ulong h:        1;  /* [62] hash function id */        ulong v:        1;  /* [63] valid */        /* low word */        ulong pp0:  1;  /* [0] page protection bit 0 (current PowerPC                         *     specification says it can always be 0) */        ulong ts:   1;  /* [1] tag select */        ulong rpn:  50; /* [2-51] real page number */        ulong res2: 2;  /* [52,53] reserved */        ulong ac:   1;  /* [54] address compare */        ulong r:    1;  /* [55] referenced */        ulong c:    1;  /* [56] changed */        ulong w:    1;  /* [57] write through */        ulong i:    1;  /* [58] cache inhibited */        ulong m:    1;  /* [59] memory coherent */        ulong g:    1;  /* [60] guarded */        ulong n:    1;  /* [61] no-execute */        ulong pp1:  2;  /* [62,63] page protection bits 1:2 */        /* *INDENT-ON* */    } bits;};union ptel {    ulong word;    struct ptel_bits {        /* *INDENT-OFF* */        ulong pp0:  1;  /* page protection bit 0 (current PPC                         *   AS says it can always be 0) */        ulong ts:   1;  /* tag select */        ulong rpn:  50; /* real page number */        ulong res2: 2;  /* reserved */        ulong ac:   1;  /* address compare */        ulong r:    1;  /* referenced */        ulong c:    1;  /* changed */        ulong w:    1;  /* write through */        ulong i:    1;  /* cache inhibited */        ulong m:    1;  /* memory coherent */        ulong g:    1;  /* guarded */        ulong n:    1;  /* no-execute */        ulong pp1:  2;  /* page protection bits 1:2 */        /* *INDENT-ON* */    } bits;};struct domain_htab {    ulong sdr1;    uint log_num_ptes;  /* log number of PTEs in HTAB. */    uint order;         /* order for freeing. */    union pte *map;     /* access the htab like an array */    ulong *shadow;      /* idx -> logical translation array */};#endif

⌨️ 快捷键说明

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