xenvar.h revision 189699
1295484Semaste/* 2295484Semaste * Copyright (c) 2008 Kip Macy 3295484Semaste * All rights reserved. 4295484Semaste * 5295484Semaste * Redistribution and use in source and binary forms, with or without 6295484Semaste * modification, are permitted provided that the following conditions 7295484Semaste * are met: 8295484Semaste * 9295484Semaste * 1. Redistributions of source code must retain the above copyright 10295484Semaste * notice, this list of conditions and the following disclaimer. 11295484Semaste * 12295484Semaste * 2. Redistributions in binary form must reproduce the above copyright 13295484Semaste * notice, this list of conditions and the following disclaimer in the 14295484Semaste * documentation and/or other materials provided with the distribution. 15295484Semaste * 16295484Semaste * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17295484Semaste * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18295484Semaste * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19295484Semaste * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20295484Semaste * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21295484Semaste * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22295484Semaste * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23295484Semaste * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24295484Semaste * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25295484Semaste * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26295484Semaste * 27295484Semaste * 28295484Semaste * $FreeBSD: head/sys/amd64/include/xen/xenvar.h 189699 2009-03-11 15:30:12Z dfr $ 29295484Semaste */ 30295484Semaste#ifndef XENVAR_H_ 31295484Semaste#define XENVAR_H_ 32295484Semaste#define XBOOTUP 0x1 33295484Semaste#define XPMAP 0x2 34295484Semasteextern int xendebug_flags; 35295484Semaste#ifndef NOXENDEBUG 36367466Sdim#define XENPRINTF printk 37295484Semaste#else 38295484Semaste#define XENPRINTF printf 39295484Semaste#endif 40295484Semaste#include <xen/features.h> 41295484Semaste 42295484Semaste#if 0 43295484Semaste#define TRACE_ENTER XENPRINTF("(file=%s, line=%d) entered %s\n", __FILE__, __LINE__, __FUNCTION__) 44295484Semaste#define TRACE_EXIT XENPRINTF("(file=%s, line=%d) exiting %s\n", __FILE__, __LINE__, __FUNCTION__) 45295484Semaste#define TRACE_DEBUG(argflags, _f, _a...) \ 46295484Semasteif (xendebug_flags & argflags) XENPRINTF("(file=%s, line=%d) " _f "\n", __FILE__, __LINE__, ## _a); 47295484Semaste#else 48295484Semaste#define TRACE_ENTER 49295484Semaste#define TRACE_EXIT 50295484Semaste#define TRACE_DEBUG(argflags, _f, _a...) 51367466Sdim#endif 52295484Semaste 53295484Semaste#ifdef XENHVM 54295484Semaste 55295484Semastestatic inline vm_paddr_t 56295484Semastephystomach(vm_paddr_t pa) 57295484Semaste{ 58295484Semaste 59295484Semaste return (pa); 60295484Semaste} 61295484Semaste 62295484Semastestatic inline vm_paddr_t 63295484Semastemachtophys(vm_paddr_t ma) 64295484Semaste{ 65295484Semaste 66295484Semaste return (ma); 67295484Semaste} 68295484Semaste 69295484Semaste#define vtomach(va) pmap_kextract((vm_offset_t) (va)) 70295484Semaste#define PFNTOMFN(pa) (pa) 71295484Semaste#define MFNTOPFN(ma) (ma) 72295484Semaste 73295484Semaste#define set_phys_to_machine(pfn, mfn) ((void)0) 74295484Semaste#define phys_to_machine_mapping_valid(pfn) (TRUE) 75295484Semaste#define PT_UPDATES_FLUSH() ((void)0) 76295484Semaste 77295484Semaste#else 78295484Semaste 79295484Semasteextern xen_pfn_t *xen_phys_machine; 80295484Semaste 81295484Semaste 82295484Semasteextern xen_pfn_t *xen_machine_phys; 83295484Semaste/* Xen starts physical pages after the 4MB ISA hole - 84295484Semaste * FreeBSD doesn't 85295484Semaste */ 86295484Semaste 87 88#undef ADD_ISA_HOLE /* XXX */ 89 90#ifdef ADD_ISA_HOLE 91#define ISA_INDEX_OFFSET 1024 92#define ISA_PDR_OFFSET 1 93#else 94#define ISA_INDEX_OFFSET 0 95#define ISA_PDR_OFFSET 0 96#endif 97 98 99#define PFNTOMFN(i) (xen_phys_machine[(i)]) 100#define MFNTOPFN(i) ((vm_paddr_t)xen_machine_phys[(i)]) 101 102#define VTOP(x) ((((uintptr_t)(x))) - KERNBASE) 103#define PTOV(x) (((uintptr_t)(x)) + KERNBASE) 104 105#define VTOPFN(x) (VTOP(x) >> PAGE_SHIFT) 106#define PFNTOV(x) PTOV((vm_paddr_t)(x) << PAGE_SHIFT) 107 108#define VTOMFN(va) (vtomach(va) >> PAGE_SHIFT) 109#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT) 110 111#define phystomach(pa) (((vm_paddr_t)(PFNTOMFN((pa) >> PAGE_SHIFT))) << PAGE_SHIFT) 112#define machtophys(ma) (((vm_paddr_t)(MFNTOPFN((ma) >> PAGE_SHIFT))) << PAGE_SHIFT) 113 114#endif 115 116void xpq_init(void); 117 118int xen_create_contiguous_region(vm_page_t pages, int npages); 119 120void xen_destroy_contiguous_region(void * addr, int npages); 121 122#endif 123