xenvar.h revision 185637
155714Skris/* 255714Skris * Copyright (c) 2008 Kip Macy 355714Skris * All rights reserved. 455714Skris * 555714Skris * Redistribution and use in source and binary forms, with or without 655714Skris * modification, are permitted provided that the following conditions 755714Skris * are met: 855714Skris * 955714Skris * 1. Redistributions of source code must retain the above copyright 1055714Skris * notice, this list of conditions and the following disclaimer. 1155714Skris * 1255714Skris * 2. Redistributions in binary form must reproduce the above copyright 1355714Skris * notice, this list of conditions and the following disclaimer in the 1455714Skris * documentation and/or other materials provided with the distribution. 1555714Skris * 1655714Skris * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 1755714Skris * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 1855714Skris * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 1955714Skris * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 2055714Skris * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2155714Skris * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2255714Skris * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2355714Skris * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2455714Skris * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2555714Skris * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2655714Skris * 2755714Skris * 2855714Skris * $FreeBSD: user/dfr/xenhvm/6/sys/amd64/include/xen/xenvar.h 185637 2008-12-05 15:00:59Z dfr $ 2955714Skris */ 3055714Skris#ifndef XENVAR_H_ 3155714Skris#define XENVAR_H_ 3255714Skris#define XBOOTUP 0x1 3355714Skris#define XPMAP 0x2 3455714Skrisextern int xendebug_flags; 3555714Skris#ifndef NOXENDEBUG 3655714Skris#define XENPRINTF printk 3755714Skris#else 3855714Skris#define XENPRINTF printf 3955714Skris#endif 4055714Skris#include <xen/features.h> 4155714Skris 4255714Skris#if 0 4355714Skris#define TRACE_ENTER XENPRINTF("(file=%s, line=%d) entered %s\n", __FILE__, __LINE__, __FUNCTION__) 4455714Skris#define TRACE_EXIT XENPRINTF("(file=%s, line=%d) exiting %s\n", __FILE__, __LINE__, __FUNCTION__) 4555714Skris#define TRACE_DEBUG(argflags, _f, _a...) \ 4655714Skrisif (xendebug_flags & argflags) XENPRINTF("(file=%s, line=%d) " _f "\n", __FILE__, __LINE__, ## _a); 4755714Skris#else 4855714Skris#define TRACE_ENTER 4955714Skris#define TRACE_EXIT 5055714Skris#define TRACE_DEBUG(argflags, _f, _a...) 5155714Skris#endif 5255714Skris 5355714Skris#ifdef XENHVM 5455714Skris 5555714Skrisstatic inline vm_paddr_t 5655714Skrisphystomach(vm_paddr_t pa) 5755714Skris{ 5855714Skris 5955714Skris return (pa); 6055714Skris} 6155714Skris 6255714Skrisstatic inline vm_paddr_t 6355714Skrismachtophys(vm_paddr_t ma) 6468651Skris{ 6568651Skris 6668651Skris return (ma); 6768651Skris} 6868651Skris 6955714Skris#define vtomach(va) pmap_kextract((vm_offset_t) (va)) 7055714Skris#define PFNTOMFN(pa) (pa) 7168651Skris 7279998Skris#define set_phys_to_machine(pfn, mfn) ((void)0) 7355714Skris#define PT_UPDATES_FLUSH() ((void)0) 7455714Skris 7555714Skris#else 7655714Skris 7755714Skrisextern xen_pfn_t *xen_phys_machine; 7855714Skris 7955714Skris 8055714Skrisextern xen_pfn_t *xen_machine_phys; 8155714Skris/* Xen starts physical pages after the 4MB ISA hole - 8255714Skris * FreeBSD doesn't 8355714Skris */ 8455714Skris 8559191Skris 8655714Skris#undef ADD_ISA_HOLE /* XXX */ 8755714Skris 8855714Skris#ifdef ADD_ISA_HOLE 8955714Skris#define ISA_INDEX_OFFSET 1024 9055714Skris#define ISA_PDR_OFFSET 1 9155714Skris#else 9255714Skris#define ISA_INDEX_OFFSET 0 9355714Skris#define ISA_PDR_OFFSET 0 9455714Skris#endif 9555714Skris 9655714Skris 9768651Skris#define PFNTOMFN(i) (xen_phys_machine[(i)]) 9855714Skris#define MFNTOPFN(i) ((vm_paddr_t)xen_machine_phys[(i)]) 9968651Skris 10068651Skris#define VTOP(x) ((((uintptr_t)(x))) - KERNBASE) 10168651Skris#define PTOV(x) (((uintptr_t)(x)) + KERNBASE) 10268651Skris 10355714Skris#define VTOPFN(x) (VTOP(x) >> PAGE_SHIFT) 10455714Skris#define PFNTOV(x) PTOV((vm_paddr_t)(x) << PAGE_SHIFT) 10555714Skris 10655714Skris#define VTOMFN(va) (vtomach(va) >> PAGE_SHIFT) 10755714Skris#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT) 10855714Skris 10955714Skris#define phystomach(pa) (((vm_paddr_t)(PFNTOMFN((pa) >> PAGE_SHIFT))) << PAGE_SHIFT) 11055714Skris#define machtophys(ma) (((vm_paddr_t)(MFNTOPFN((ma) >> PAGE_SHIFT))) << PAGE_SHIFT) 11155714Skris 11255714Skris#endif 11355714Skris 11455714Skrisvoid xpq_init(void); 11555714Skris 11655714Skrisint xen_create_contiguous_region(vm_page_t pages, int npages); 11755714Skris 11855714Skrisvoid xen_destroy_contiguous_region(void * addr, int npages); 11955714Skris 12055714Skris#endif 12155714Skris