📄 ioemu-ia64
字号:
Index: ioemu/hw/iommu.c===================================================================--- ioemu.orig/hw/iommu.c 2007-05-11 10:00:33.000000000 +0100+++ ioemu/hw/iommu.c 2007-05-11 10:01:09.000000000 +0100@@ -82,7 +82,11 @@ #define IOPTE_VALID 0x00000002 /* IOPTE is valid */ #define IOPTE_WAZ 0x00000001 /* Write as zeros */ +#if defined(__i386__) || defined(__x86_64__) #define PAGE_SHIFT 12+#elif defined(__ia64__)+#define PAGE_SHIFT 14+#endif #define PAGE_SIZE (1 << PAGE_SHIFT) #define PAGE_MASK (PAGE_SIZE - 1) Index: ioemu/vl.c===================================================================--- ioemu.orig/vl.c 2007-05-11 10:01:09.000000000 +0100+++ ioemu/vl.c 2007-05-11 10:01:09.000000000 +0100@@ -7149,6 +7149,11 @@ } #endif +#if defined (__ia64__)+ if (ram_size > MMIO_START)+ ram_size += 1 * MEM_G; /* skip 3G-4G MMIO, LEGACY_IO_SPACE etc. */+#endif+ /* init the memory */ phys_ram_size = ram_size + vga_ram_size + bios_size; @@ -7198,6 +7203,44 @@ free(page_array); +#elif defined(__ia64__)++ nr_pages = ram_size/PAGE_SIZE;++ page_array = (xen_pfn_t *)malloc(nr_pages * sizeof(xen_pfn_t));+ if (page_array == NULL) {+ fprintf(logfile, "malloc returned error %d\n", errno);+ exit(-1);+ }++ shared_page = xc_map_foreign_range(xc_handle, domid, PAGE_SIZE,+ PROT_READ|PROT_WRITE,+ IO_PAGE_START >> PAGE_SHIFT);++ buffered_io_page =xc_map_foreign_range(xc_handle, domid, PAGE_SIZE,+ PROT_READ|PROT_WRITE,+ BUFFER_IO_PAGE_START >> PAGE_SHIFT);++ for (i = 0; i < nr_pages; i++)+ page_array[i] = i;+ + /* VTI will not use memory between 3G~4G, so we just pass a legal pfn+ to make QEMU map continuous virtual memory space */+ if (ram_size > MMIO_START) { + for (i = 0 ; i < (MEM_G >> PAGE_SHIFT); i++)+ page_array[(MMIO_START >> PAGE_SHIFT) + i] =+ (STORE_PAGE_START >> PAGE_SHIFT); + }++ phys_ram_base = xc_map_foreign_batch(xc_handle, domid,+ PROT_READ|PROT_WRITE,+ page_array, nr_pages);+ if (phys_ram_base == 0) {+ fprintf(logfile, "xc_map_foreign_batch returned error %d\n", errno);+ exit(-1);+ }+ free(page_array);+#endif #else /* !CONFIG_DM */ phys_ram_base = qemu_vmalloc(phys_ram_size);Index: ioemu/target-i386-dm/cpu.h===================================================================--- ioemu.orig/target-i386-dm/cpu.h 2007-05-11 10:01:09.000000000 +0100+++ ioemu/target-i386-dm/cpu.h 2007-05-11 10:01:09.000000000 +0100@@ -78,7 +78,11 @@ /* helper2.c */ int main_loop(void); +#if defined(__i386__) || defined(__x86_64__) #define TARGET_PAGE_BITS 12+#elif defined(__ia64__)+#define TARGET_PAGE_BITS 14+#endif #include "cpu-all.h" #endif /* CPU_I386_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -