xenvar.h revision 183906
1183906Skmacy/* 2183906Skmacy * Copyright (c) 2008 Kip Macy 3183906Skmacy * All rights reserved. 4183906Skmacy * 5183906Skmacy * Redistribution and use in source and binary forms, with or without 6183906Skmacy * modification, are permitted provided that the following conditions 7183906Skmacy * are met: 8183906Skmacy * 9183906Skmacy * 1. Redistributions of source code must retain the above copyright 10183906Skmacy * notice, this list of conditions and the following disclaimer. 11183906Skmacy * 12183906Skmacy * 2. Redistributions in binary form must reproduce the above copyright 13183906Skmacy * notice, this list of conditions and the following disclaimer in the 14183906Skmacy * documentation and/or other materials provided with the distribution. 15183906Skmacy * 16183906Skmacy * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17183906Skmacy * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18183906Skmacy * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19183906Skmacy * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20183906Skmacy * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21183906Skmacy * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22183906Skmacy * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23183906Skmacy * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24183906Skmacy * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25183906Skmacy * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26183906Skmacy * 27183906Skmacy * 28183906Skmacy * $FreeBSD: projects/releng_6_xen/sys/i386/include/xen/xenvar.h 183906 2008-10-15 05:44:08Z kmacy $ 29183906Skmacy */ 30183906Skmacy#ifndef XENVAR_H_ 31183906Skmacy#define XENVAR_H_ 32183906Skmacy#define XBOOTUP 0x1 33183906Skmacy#define XPMAP 0x2 34183906Skmacyextern int xendebug_flags; 35183906Skmacy#ifndef NOXENDEBUG 36183906Skmacy#define XENPRINTF printk 37183906Skmacy#else 38183906Skmacy#define XENPRINTF printf 39183906Skmacy#endif 40183906Skmacy#include <machine/xen/features.h> 41183906Skmacy 42183906Skmacyextern xen_pfn_t *xen_phys_machine; 43183906Skmacy 44183906Skmacy#if 0 45183906Skmacy#define TRACE_ENTER XENPRINTF("(file=%s, line=%d) entered %s\n", __FILE__, __LINE__, __FUNCTION__) 46183906Skmacy#define TRACE_EXIT XENPRINTF("(file=%s, line=%d) exiting %s\n", __FILE__, __LINE__, __FUNCTION__) 47183906Skmacy#define TRACE_DEBUG(argflags, _f, _a...) \ 48183906Skmacyif (xendebug_flags & argflags) XENPRINTF("(file=%s, line=%d) " _f "\n", __FILE__, __LINE__, ## _a); 49183906Skmacy#else 50183906Skmacy#define TRACE_ENTER 51183906Skmacy#define TRACE_EXIT 52183906Skmacy#define TRACE_DEBUG(argflags, _f, _a...) 53183906Skmacy#endif 54183906Skmacy 55183906Skmacyextern xen_pfn_t *xen_machine_phys; 56183906Skmacy/* Xen starts physical pages after the 4MB ISA hole - 57183906Skmacy * FreeBSD doesn't 58183906Skmacy */ 59183906Skmacy 60183906Skmacy 61183906Skmacy#undef ADD_ISA_HOLE /* XXX */ 62183906Skmacy 63183906Skmacy#ifdef ADD_ISA_HOLE 64183906Skmacy#define ISA_INDEX_OFFSET 1024 65183906Skmacy#define ISA_PDR_OFFSET 1 66183906Skmacy#else 67183906Skmacy#define ISA_INDEX_OFFSET 0 68183906Skmacy#define ISA_PDR_OFFSET 0 69183906Skmacy#endif 70183906Skmacy 71183906Skmacy 72183906Skmacy#define PFNTOMFN(i) (xen_phys_machine[(i)]) 73183906Skmacy#define MFNTOPFN(i) ((vm_paddr_t)xen_machine_phys[(i)]) 74183906Skmacy 75183906Skmacy#define VTOP(x) ((((uintptr_t)(x))) - KERNBASE) 76183906Skmacy#define PTOV(x) (((uintptr_t)(x)) + KERNBASE) 77183906Skmacy 78183906Skmacy#define VTOPFN(x) (VTOP(x) >> PAGE_SHIFT) 79183906Skmacy#define PFNTOV(x) PTOV((vm_paddr_t)(x) << PAGE_SHIFT) 80183906Skmacy 81183906Skmacy#define VTOMFN(va) (vtomach(va) >> PAGE_SHIFT) 82183906Skmacy#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT) 83183906Skmacy 84183906Skmacy#define phystomach(pa) (((vm_paddr_t)(PFNTOMFN((pa) >> PAGE_SHIFT))) << PAGE_SHIFT) 85183906Skmacy#define machtophys(ma) (((vm_paddr_t)(MFNTOPFN((ma) >> PAGE_SHIFT))) << PAGE_SHIFT) 86183906Skmacy 87183906Skmacy 88183906Skmacyvoid xpq_init(void); 89183906Skmacy 90183906Skmacy#define BITS_PER_LONG 32 91183906Skmacy#define NR_CPUS MAX_VIRT_CPUS 92183906Skmacy 93183906Skmacy#define BITS_TO_LONGS(bits) \ 94183906Skmacy (((bits)+BITS_PER_LONG-1)/BITS_PER_LONG) 95183906Skmacy#define DECLARE_BITMAP(name,bits) \ 96183906Skmacy unsigned long name[BITS_TO_LONGS(bits)] 97183906Skmacytypedef struct { DECLARE_BITMAP(bits, NR_CPUS); } xen_cpumask_t; 98183906Skmacy 99183906Skmacyint xen_create_contiguous_region(vm_page_t pages, int npages); 100183906Skmacy 101183906Skmacyvoid xen_destroy_contiguous_region(void * addr, int npages); 102183906Skmacy 103183906Skmacy#endif 104