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

📄 arch-ia64.h

📁 xen 3.2.2 源码
💻 H
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************** * arch-ia64/hypervisor-if.h *  * Guest OS interface to IA64 Xen. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to * deal in the Software without restriction, including without limitation the * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or * sell copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. * */#include "xen.h"#ifndef __HYPERVISOR_IF_IA64_H__#define __HYPERVISOR_IF_IA64_H__#if !defined(__GNUC__) || defined(__STRICT_ANSI__)#error "Anonymous structs/unions are a GNU extension."#endif/* Structural guest handles introduced in 0x00030201. */#if __XEN_INTERFACE_VERSION__ >= 0x00030201#define ___DEFINE_XEN_GUEST_HANDLE(name, type) \    typedef struct { type *p; } __guest_handle_ ## name#else#define ___DEFINE_XEN_GUEST_HANDLE(name, type) \    typedef type * __guest_handle_ ## name#endif#define __DEFINE_XEN_GUEST_HANDLE(name, type) \    ___DEFINE_XEN_GUEST_HANDLE(name, type)#define DEFINE_XEN_GUEST_HANDLE(name)   __DEFINE_XEN_GUEST_HANDLE(name, name)#define XEN_GUEST_HANDLE(name)          __guest_handle_ ## name#define XEN_GUEST_HANDLE_64(name)       XEN_GUEST_HANDLE(name)#define uint64_aligned_t                uint64_t#define set_xen_guest_handle(hnd, val)  do { (hnd).p = val; } while (0)#ifdef __XEN_TOOLS__#define get_xen_guest_handle(val, hnd)  do { val = (hnd).p; } while (0)#endif#ifndef __ASSEMBLY__/* Guest handles for primitive C types. */__DEFINE_XEN_GUEST_HANDLE(uchar, unsigned char);__DEFINE_XEN_GUEST_HANDLE(uint,  unsigned int);__DEFINE_XEN_GUEST_HANDLE(ulong, unsigned long);__DEFINE_XEN_GUEST_HANDLE(u64,   unsigned long);DEFINE_XEN_GUEST_HANDLE(char);DEFINE_XEN_GUEST_HANDLE(int);DEFINE_XEN_GUEST_HANDLE(long);DEFINE_XEN_GUEST_HANDLE(void);typedef unsigned long xen_pfn_t;DEFINE_XEN_GUEST_HANDLE(xen_pfn_t);#define PRI_xen_pfn "lx"#endif/* Arch specific VIRQs definition */#define VIRQ_ITC        VIRQ_ARCH_0 /* V. Virtual itc timer */#define VIRQ_MCA_CMC    VIRQ_ARCH_1 /* MCA cmc interrupt */#define VIRQ_MCA_CPE    VIRQ_ARCH_2 /* MCA cpe interrupt *//* Maximum number of virtual CPUs in multi-processor guests. *//* WARNING: before changing this, check that shared_info fits on a page */#define MAX_VIRT_CPUS 64#ifndef __ASSEMBLY__typedef unsigned long xen_ulong_t;#ifdef __XEN_TOOLS__#define XEN_PAGE_SIZE XC_PAGE_SIZE#else#define XEN_PAGE_SIZE PAGE_SIZE#endif#define INVALID_MFN       (~0UL)#define MEM_G   (1UL << 30)#define MEM_M   (1UL << 20)#define MEM_K   (1UL << 10)/* Guest physical address of IO ports space.  */#define IO_PORTS_PADDR          0x00000ffffc000000UL#define IO_PORTS_SIZE           0x0000000004000000UL#define MMIO_START       (3 * MEM_G)#define MMIO_SIZE        (512 * MEM_M)#define VGA_IO_START     0xA0000UL#define VGA_IO_SIZE      0x20000#define LEGACY_IO_START  (MMIO_START + MMIO_SIZE)#define LEGACY_IO_SIZE   (64*MEM_M)#define IO_PAGE_START (LEGACY_IO_START + LEGACY_IO_SIZE)#define IO_PAGE_SIZE  XEN_PAGE_SIZE#define STORE_PAGE_START (IO_PAGE_START + IO_PAGE_SIZE)#define STORE_PAGE_SIZE  XEN_PAGE_SIZE#define BUFFER_IO_PAGE_START (STORE_PAGE_START + STORE_PAGE_SIZE)#define BUFFER_IO_PAGE_SIZE  XEN_PAGE_SIZE#define BUFFER_PIO_PAGE_START (BUFFER_IO_PAGE_START + BUFFER_IO_PAGE_SIZE)#define BUFFER_PIO_PAGE_SIZE  XEN_PAGE_SIZE#define IO_SAPIC_START   0xfec00000UL#define IO_SAPIC_SIZE    0x100000#define PIB_START 0xfee00000UL#define PIB_SIZE 0x200000#define GFW_START        (4*MEM_G -16*MEM_M)#define GFW_SIZE         (16*MEM_M)/* Nvram belongs to GFW memory space  */#define NVRAM_SIZE       (MEM_K * 64)#define NVRAM_START      (GFW_START + 10 * MEM_M)#define NVRAM_VALID_SIG 0x4650494e45584948 		// "HIXENIPF"struct nvram_save_addr {    unsigned long addr;    unsigned long signature;};struct pt_fpreg {    union {        unsigned long bits[2];        long double __dummy;    /* force 16-byte alignment */    } u;};union vac {    unsigned long value;    struct {        int a_int:1;        int a_from_int_cr:1;        int a_to_int_cr:1;        int a_from_psr:1;        int a_from_cpuid:1;        int a_cover:1;        int a_bsw:1;        long reserved:57;    };};typedef union vac vac_t;union vdc {    unsigned long value;    struct {        int d_vmsw:1;        int d_extint:1;        int d_ibr_dbr:1;        int d_pmc:1;        int d_to_pmd:1;        int d_itm:1;        long reserved:58;    };};typedef union vdc vdc_t;struct mapped_regs {    union vac   vac;    union vdc   vdc;    unsigned long  virt_env_vaddr;    unsigned long  reserved1[29];    unsigned long  vhpi;    unsigned long  reserved2[95];    union {        unsigned long  vgr[16];        unsigned long bank1_regs[16]; // bank1 regs (r16-r31) when bank0 active    };    union {        unsigned long  vbgr[16];        unsigned long bank0_regs[16]; // bank0 regs (r16-r31) when bank1 active    };    unsigned long  vnat;    unsigned long  vbnat;    unsigned long  vcpuid[5];    unsigned long  reserved3[11];    unsigned long  vpsr;    unsigned long  vpr;    unsigned long  reserved4[76];    union {        unsigned long  vcr[128];        struct {            unsigned long dcr;  // CR0            unsigned long itm;            unsigned long iva;            unsigned long rsv1[5];            unsigned long pta;  // CR8            unsigned long rsv2[7];            unsigned long ipsr;  // CR16            unsigned long isr;            unsigned long rsv3;            unsigned long iip;            unsigned long ifa;            unsigned long itir;            unsigned long iipa;            unsigned long ifs;            unsigned long iim;  // CR24            unsigned long iha;            unsigned long rsv4[38];            unsigned long lid;  // CR64            unsigned long ivr;            unsigned long tpr;            unsigned long eoi;            unsigned long irr[4];            unsigned long itv;  // CR72            unsigned long pmv;            unsigned long cmcv;            unsigned long rsv5[5];            unsigned long lrr0;  // CR80            unsigned long lrr1;            unsigned long rsv6[46];        };    };    union {        unsigned long  reserved5[128];        struct {            unsigned long precover_ifs;            unsigned long unat;  // not sure if this is needed until NaT arch is done            int interrupt_collection_enabled; // virtual psr.ic            /* virtual interrupt deliverable flag is evtchn_upcall_mask in             * shared info area now. interrupt_mask_addr is the address             * of evtchn_upcall_mask for current vcpu             */            unsigned char *interrupt_mask_addr;            int pending_interruption;            unsigned char vpsr_pp;            unsigned char vpsr_dfh;            unsigned char hpsr_dfh;            unsigned char hpsr_mfh;            unsigned long reserved5_1[4];            int metaphysical_mode; // 1 = use metaphys mapping, 0 = use virtual            int banknum; // 0 or 1, which virtual register bank is active            unsigned long rrs[8]; // region registers            unsigned long krs[8]; // kernel registers            unsigned long tmp[16]; // temp registers (e.g. for hyperprivops)        };    };};typedef struct mapped_regs mapped_regs_t;struct vpd {    struct mapped_regs vpd_low;    unsigned long  reserved6[3456];    unsigned long  vmm_avail[128];    unsigned long  reserved7[4096];};typedef struct vpd vpd_t;struct arch_vcpu_info {};typedef struct arch_vcpu_info arch_vcpu_info_t;/* * This structure is used for magic page in domain pseudo physical address * space and the result of XENMEM_machine_memory_map. * As the XENMEM_machine_memory_map result, * xen_memory_map::nr_entries indicates the size in bytes  * including struct xen_ia64_memmap_info. Not the number of entries. */struct xen_ia64_memmap_info {    uint64_t efi_memmap_size;       /* size of EFI memory map */    uint64_t efi_memdesc_size;      /* size of an EFI memory map descriptor */    uint32_t efi_memdesc_version;   /* memory descriptor version */    void *memdesc[0];               /* array of efi_memory_desc_t */};typedef struct xen_ia64_memmap_info xen_ia64_memmap_info_t;struct arch_shared_info {    /* PFN of the start_info page.  */    unsigned long start_info_pfn;    /* Interrupt vector for event channel.  */    int evtchn_vector;    /* PFN of memmap_info page */    unsigned int memmap_info_num_pages;/* currently only = 1 case is                                          supported. */    unsigned long memmap_info_pfn;    uint64_t pad[31];};typedef struct arch_shared_info arch_shared_info_t;typedef unsigned long xen_callback_t;struct ia64_tr_entry {    unsigned long pte;    unsigned long itir;    unsigned long vadr;    unsigned long rid;};typedef struct ia64_tr_entry ia64_tr_entry_t;DEFINE_XEN_GUEST_HANDLE(ia64_tr_entry_t);struct vcpu_tr_regs {    struct ia64_tr_entry itrs[12];    struct ia64_tr_entry dtrs[12];};union vcpu_ar_regs {    unsigned long ar[128];    struct {        unsigned long kr[8];        unsigned long rsv1[8];        unsigned long rsc;        unsigned long bsp;        unsigned long bspstore;        unsigned long rnat;        unsigned long rsv2;        unsigned long fcr;        unsigned long rsv3[2];        unsigned long eflag;        unsigned long csd;        unsigned long ssd;        unsigned long cflg;        unsigned long fsr;

⌨️ 快捷键说明

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