[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 2/5] arm: allow libxc to build (untested)
Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> --- Config.mk | 2 +- tools/libxc/Makefile | 1 + tools/libxc/xc_core.h | 2 + tools/libxc/xc_core_arm.c | 70 +++++++++++++++++++++++++++++++++++++++++++++ tools/libxc/xc_core_arm.h | 61 +++++++++++++++++++++++++++++++++++++++ tools/libxc/xenctrl.h | 4 ++ 6 files changed, 139 insertions(+), 1 deletions(-) create mode 100644 tools/libxc/xc_core_arm.c create mode 100644 tools/libxc/xc_core_arm.h diff --git a/Config.mk b/Config.mk index 1c229c0..13a569e 100644 --- a/Config.mk +++ b/Config.mk @@ -13,7 +13,7 @@ realpath = $(wildcard $(foreach file,$(1),$(shell cd -P $(dir $(file)) && echo " debug ?= y XEN_COMPILE_ARCH ?= $(shell uname -m | sed -e s/i.86/x86_32/ \ - -e s/i86pc/x86_32/ -e s/amd64/x86_64/) + -e s/i86pc/x86_32/ -e s/amd64/x86_64/ -e s/arm.*/arm/) XEN_TARGET_ARCH ?= $(XEN_COMPILE_ARCH) XEN_OS ?= $(shell uname -s) diff --git a/tools/libxc/Makefile b/tools/libxc/Makefile index b5e7022..b5bd7fb 100644 --- a/tools/libxc/Makefile +++ b/tools/libxc/Makefile @@ -6,6 +6,7 @@ MINOR = 0 CTRL_SRCS-y := CTRL_SRCS-y += xc_core.c +CTRL_SRCS-$(CONFIG_ARM) += xc_core_arm.c CTRL_SRCS-$(CONFIG_X86) += xc_core_x86.c CTRL_SRCS-$(CONFIG_IA64) += xc_core_ia64.c CTRL_SRCS-y += xc_cpupool.c diff --git a/tools/libxc/xc_core.h b/tools/libxc/xc_core.h index 1e88a75..358a8c1 100644 --- a/tools/libxc/xc_core.h +++ b/tools/libxc/xc_core.h @@ -155,6 +155,8 @@ int xc_core_arch_map_p2m_writable(xc_interface *xch, unsigned int guest_width, # include "xc_core_x86.h" #elif defined (__ia64__) # include "xc_core_ia64.h" +#elif defined (__arm__) +# include "xc_core_arm.h" #else # error "unsupported architecture" #endif diff --git a/tools/libxc/xc_core_arm.c b/tools/libxc/xc_core_arm.c new file mode 100644 index 0000000..9009295 --- /dev/null +++ b/tools/libxc/xc_core_arm.c @@ -0,0 +1,70 @@ +/* + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; + * version 2.1 of the License. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Copyright (c) 2012 Citrix Systems Ltd. + */ + +#include "xg_private.h" +#include "xc_core.h" + +int +xc_core_arch_gpfn_may_present(struct xc_core_arch_context *arch_ctxt, + unsigned long pfn) +{ + /* default to trying to map the page */ + /* TODO consult p2m */ + return 1; +} + +int +xc_core_arch_memory_map_get(xc_interface *xch, + struct xc_core_arch_context *arch_ctxt, + xc_dominfo_t *info, + shared_info_any_t *live_shinfo, + xc_core_memory_map_t **mapp, + unsigned int *nr_entries) +{ + /* TODO return the memory map! */ + ERROR("%s is not implemented yet\n", __func__); + errno = ENOSYS; + return -1; +} + +int +xc_core_arch_auto_translated_physmap(const xc_dominfo_t *info) +{ + /* All domains are auto_translated_physmap mode. */ + return 1; +} + +int +xc_core_arch_map_p2m(xc_interface *xch, unsigned int guest_width, xc_dominfo_t *info, + shared_info_any_t *live_shinfo, xen_pfn_t **live_p2m, + unsigned long *pfnp) +{ + /* All domains are auto_translated_physmap mode. */ + errno = ENOSYS; + return -1; +} + +/* + * Local variables: + * mode: C + * c-set-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + * End: + */ diff --git a/tools/libxc/xc_core_arm.h b/tools/libxc/xc_core_arm.h new file mode 100644 index 0000000..a2ef5a8 --- /dev/null +++ b/tools/libxc/xc_core_arm.h @@ -0,0 +1,61 @@ +/* + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Copyright (c) 2007 Isaku Yamahata <yamahata at valinux co jp> + * VA Linux Systems Japan K.K. + * + */ + +#ifndef XC_CORE_ARM_H +#define XC_CORE_ARM_H + +#define ELF_ARCH_DATA ELFDATA2LSB +#define ELF_ARCH_MACHINE EM_ARM + +struct xc_core_arch_context { + /* nothing */ +}; + +#define xc_core_arch_context_init(arch_ctxt) do {} while (0) +#define xc_core_arch_context_free(arch_ctxt) do {} while (0) +#define xc_core_arch_context_get(arch_ctxt, ctxt, xch, domid) \ + (0) +#define xc_core_arch_context_dump(xch, arch_ctxt, args, dump_rtn) (0) + +int +xc_core_arch_gpfn_may_present(struct xc_core_arch_context *arch_ctxt, + unsigned long pfn); +static inline int +xc_core_arch_context_get_shdr(xc_interface *xch, + struct xc_core_arch_context *arch_ctxt, + struct xc_core_section_headers *sheaders, + struct xc_core_strtab *strtab, + uint64_t *filesz, uint64_t offset) +{ + *filesz = 0; + return 0; +} + +#endif /* XC_CORE_ARM_H */ + +/* + * Local variables: + * mode: C + * c-set-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + * End: + */ diff --git a/tools/libxc/xenctrl.h b/tools/libxc/xenctrl.h index 1e149c1..1054584 100644 --- a/tools/libxc/xenctrl.h +++ b/tools/libxc/xenctrl.h @@ -81,6 +81,10 @@ #define xen_mb() asm volatile ("mf" ::: "memory") #define xen_rmb() asm volatile ("mf" ::: "memory") #define xen_wmb() asm volatile ("mf" ::: "memory") +#elif defined(__arm__) +#define xen_mb() asm volatile ("dsb" : : : "memory") +#define xen_rmb() asm volatile ("dsb" : : : "memory") +#define xen_wmb() asm volatile ("dsb" : : : "memory") #else #error "Define barriers" #endif -- 1.7.8.3 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |