return word;
}
-#elif defined(__ia64__)
-
-#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
-# define ia64_popcnt(x) __builtin_popcountl(x)
-#else
-# define ia64_popcnt(x) \
- ({ \
- uint64_t ia64_intri_res; \
- asm ("popcnt %0=%1" : "=r" (ia64_intri_res) : "r" (x)); \
- ia64_intri_res; \
- })
-#endif
-
-unsigned long
-fsig_log2 (unsigned long word)
-{
- unsigned long result;
-
- result = ia64_popcnt((word - 1) & ~word);
- return result;
-}
-
-#elif defined(__powerpc__)
-
-#ifdef __powerpc64__
-#define PPC_CNTLZL "cntlzd"
-#else
-#define PPC_CNTLZL "cntlzw"
-#endif
-#define BITS_PER_LONG (sizeof(long) * 8)
-
-static int
-__ilog2(unsigned long x)
-{
- int lz;
-
- asm (PPC_CNTLZL " %0,%1" : "=r" (lz) : "r" (x));
- return BITS_PER_LONG - 1 - lz;
-}
-
-unsigned long
-fsig_log2 (unsigned long word)
-{
- return __ilog2(word & -word);
-}
-
#else /* Unoptimized */
unsigned long
static PyObject *pyxc_domain_destroy_hook(XcObject *self, PyObject *args)
{
-#ifdef __ia64__
- dom_op(self, args, xc_ia64_save_to_nvram);
-#endif
-
Py_INCREF(zero);
return zero;
}
return Pystr;
}
-#ifdef __ia64__
-static PyObject *pyxc_nvram_init(XcObject *self,
- PyObject *args)
-{
- char *dom_name;
- uint32_t dom;
-
- if ( !PyArg_ParseTuple(args, "si", &dom_name, &dom) )
- return NULL;
-
- xc_ia64_nvram_init(self->xc_handle, dom_name, dom);
-
- Py_INCREF(zero);
- return zero;
-}
-
-static PyObject *pyxc_set_os_type(XcObject *self,
- PyObject *args)
-{
- char *os_type;
- uint32_t dom;
-
- if ( !PyArg_ParseTuple(args, "si", &os_type, &dom) )
- return NULL;
-
- xc_ia64_set_os_type(self->xc_handle, os_type, dom);
-
- Py_INCREF(zero);
- return zero;
-}
-#endif /* __ia64__ */
-
-
#if defined(__i386__) || defined(__x86_64__)
static void pyxc_dom_extract_cpuid(PyObject *config,
char **regs)
PyObject *kwds)
{
uint32_t dom;
-#if !defined(__ia64__)
struct hvm_info_table *va_hvm;
uint8_t *va_map, sum;
-#endif
int i;
char *image;
int memsize, target=-1, vcpus = 1, acpi = 0, apic = 1;
target, image) != 0 )
return pyxc_error_to_exception(self->xc_handle);
-#if !defined(__ia64__)
/* Fix up the HVM info table. */
va_map = xc_map_foreign_range(self->xc_handle, dom, XC_PAGE_SIZE,
PROT_READ | PROT_WRITE,
sum += ((uint8_t *)va_hvm)[i];
va_hvm->checksum -= sum;
munmap(va_map, XC_PAGE_SIZE);
-#endif
return Py_BuildValue("{}");
}
" map_limitkb [int]: .\n"
"Returns: [int] 0 on success; -1 on error.\n" },
-#ifdef __ia64__
- { "nvram_init",
- (PyCFunction)pyxc_nvram_init,
- METH_VARARGS, "\n"
- "Init nvram in IA64 platform\n"
- "Returns: [int] 0 on success; -1 on error.\n" },
- { "set_os_type",
- (PyCFunction)pyxc_set_os_type,
- METH_VARARGS, "\n"
- "Set guest OS type on IA64 platform\n"
- "Returns: [int] 0 on success; -1 on error.\n" },
-#endif /* __ia64__ */
{ "domain_ioport_permission",
(PyCFunction)pyxc_domain_ioport_permission,
METH_VARARGS | METH_KEYWORDS, "\n"