aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxc/ia64/xc_ia64_dom_fwloader.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/libxc/ia64/xc_ia64_dom_fwloader.c')
-rw-r--r--tools/libxc/ia64/xc_ia64_dom_fwloader.c142
1 files changed, 0 insertions, 142 deletions
diff --git a/tools/libxc/ia64/xc_ia64_dom_fwloader.c b/tools/libxc/ia64/xc_ia64_dom_fwloader.c
deleted file mode 100644
index cdf3333e9d..0000000000
--- a/tools/libxc/ia64/xc_ia64_dom_fwloader.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * 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
- */
-
-#include <stdlib.h>
-#include <inttypes.h>
-#include <asm/kregs.h>
-
-#include <xen/xen.h>
-#include <xen/foreign/ia64.h>
-#include <xen/io/protocols.h>
-
-#include "xg_private.h"
-#include "xc_dom.h"
-
-#include "ia64/xc_dom_ia64_util.h"
-
-static const char fw_magic[16] = {'X', 'e', 'n', '-',
- 'i', 'a', '6', '4',
- '-', 'f', 'w', 0,
- 0, 0, 0, 0};
-#define FW_LOAD 0xff800000UL
-#define FW_SIZE (8 * 1024 * 1024)
-
-static int xc_dom_probe_fw_kernel(struct xc_dom_image *dom)
-{
- if (dom->kernel_size != FW_SIZE)
- return -EINVAL;
- if (memcmp (dom->kernel_blob, fw_magic, sizeof (fw_magic)))
- return -EINVAL;
- return 0;
-}
-
-static int xc_dom_parse_fw_kernel(struct xc_dom_image *dom)
-{
- dom->kernel_seg.vstart = FW_LOAD;
- dom->kernel_seg.vend = FW_LOAD + FW_SIZE;
- dom->parms.virt_base = FW_MEM_BASE;
- dom->parms.virt_entry = FW_LOAD + sizeof (fw_magic);
- dom->ramdisk_blob = NULL; /* No ramdisk yet. */
- dom->guest_type = "hvm-3.0-ia64-sioemu";
- return 0;
-}
-
-static int xc_dom_load_fw_kernel(struct xc_dom_image *dom)
-{
- char *dest;
- unsigned long i;
-
- dest = xc_dom_vaddr_to_ptr(dom, dom->kernel_seg.vstart);
- memcpy(dest, dom->kernel_blob, FW_SIZE);
-
- /* Synchronize cache. */
- for (i = 0; i < FW_SIZE; i += 32)
- asm volatile ("fc.i %0" :: "r"(dest + i) : "memory");
-
- return 0;
-}
-
-/* ------------------------------------------------------------------------ */
-
-static int alloc_magic_pages(struct xc_dom_image *dom)
-{
- /* allocate special pages */
- /* Note: do not use 0 for console or xenstore otherwise clear_page won't
- clear the page. */
- dom->start_info_pfn = 0;
- dom->console_pfn = 1;
- dom->xenstore_pfn = 2;
- return 0;
-}
-
-extern unsigned long xc_ia64_fpsr_default(void);
-
-static int vcpu_ia64(struct xc_dom_image *dom, void *ptr)
-{
- vcpu_guest_context_ia64_t *ctxt = ptr;
-
- DOMPRINTF_CALLED(dom->xch);
-
- /* clear everything */
- memset(ctxt, 0, sizeof(*ctxt));
-
- ctxt->flags = 0;
- ctxt->regs.ip = dom->parms.virt_entry;
-#ifdef __ia64__ /* FIXME */
- ctxt->regs.ar.fpsr = xc_ia64_fpsr_default();
-#endif
- ctxt->regs.cr.isr = 1UL << 63;
- ctxt->regs.psr = IA64_PSR_AC | IA64_PSR_BN;
- ctxt->regs.cr.dcr = 0;
- ctxt->regs.cr.pta = 15 << 2;
-
- return 0;
-}
-
-static struct xc_dom_arch xc_dom_arch_ia64_fw = {
- .guest_type = "hvm-3.0-ia64-sioemu",
- .native_protocol = XEN_IO_PROTO_ABI_IA64,
- .page_shift = PAGE_SHIFT_IA64,
- .alloc_magic_pages = alloc_magic_pages,
- .start_info = start_info_ia64,
- .shared_info = shared_info_ia64,
- .vcpu = vcpu_ia64,
-};
-
-/* ------------------------------------------------------------------------ */
-
-static struct xc_dom_loader fw_loader = {
- .name = "xen-ia64-fw",
- .probe = xc_dom_probe_fw_kernel,
- .parser = xc_dom_parse_fw_kernel,
- .loader = xc_dom_load_fw_kernel,
-};
-
-static void __init register_fwloader(void)
-{
- xc_dom_register_arch_hooks(&xc_dom_arch_ia64_fw);
- xc_dom_register_loader(&fw_loader);
-}
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */