⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ohw.diff

📁 xen虚拟机源代码安装包
💻 DIFF
📖 第 1 页 / 共 5 页
字号:
-        OF_prop_string_new(OF_env, ata, "model", "ata-4");-#endif-        OF_prop_int_new(OF_env, ata, "#address-cells", 1);-        OF_prop_int_new(OF_env, ata, "#size-cells", 0);-        regs[0].address = 0x0001F000;-        regs[0].size = 0x00001000;-#if 0 // HACK: Don't set up DMA registers-        regs[1].address = 0x00008A00;-        regs[1].size = 0x00001000;-        OF_property_new(OF_env, ata, "reg",-                        regs, 2 * sizeof(OF_regprop_t));-#else-        OF_property_new(OF_env, ata, "reg",-                        regs, sizeof(OF_regprop_t));-#endif-        OF_prop_int_new(OF_env, ata, "interrupt-parent", pic_phandle);-        regs[0].address = 0x00000013;-        regs[0].size = 0x00000001;-        regs[1].address = 0x0000000B;-        regs[1].size = 0x00000000;-        OF_property_new(OF_env, ata, "interrupts",-                        regs, 2 * sizeof(OF_regprop_t));-        ide_pci_pmac_register(base_address + 0x1f000, 0x00000000, ata);--    }-    {-        OF_node_t *ata;-        OF_regprop_t regs[2];-        ata = OF_node_new(OF_env, mio, "ata-4", 0x20000);-        if (ata == NULL) {-            ERROR("Cannot create 'ata-4'\n");-            goto out;-        }-        OF_prop_string_new(OF_env, ata, "device_type", "ata");-#if 1-        OF_prop_string_new(OF_env, ata, "compatible", "keylargo-ata");-        OF_prop_string_new(OF_env, ata, "model", "ata-4");-#else-        OF_prop_string_new(OF_env, ata, "compatible", "cmd646-ata");-        OF_prop_string_new(OF_env, ata, "model", "ata-4");-#endif-        OF_prop_int_new(OF_env, ata, "#address-cells", 1);-        OF_prop_int_new(OF_env, ata, "#size-cells", 0);-        regs[0].address = 0x00020000;-        regs[0].size = 0x00001000;-#if 0 // HACK: Don't set up DMA registers-        regs[1].address = 0x00008A00;-        regs[1].size = 0x00001000;-        OF_property_new(OF_env, ata, "reg",-                        regs, 2 * sizeof(OF_regprop_t));-#else-        OF_property_new(OF_env, ata, "reg",-                        regs, sizeof(OF_regprop_t));-#endif-        OF_prop_int_new(OF_env, ata, "interrupt-parent", pic_phandle);-        regs[0].address = 0x00000014;-        regs[0].size = 0x00000001;-        regs[1].address = 0x0000000B;-        regs[1].size = 0x00000000;-        OF_property_new(OF_env, ata, "interrupts",-                        regs, 2 * sizeof(OF_regprop_t));-        ide_pci_pmac_register(0x00000000, base_address + 0x20000, ata);-+    /* Keylargo IDE controller: need some work (DMA problem ?) */+    if (arch == ARCH_MAC99) {+        keylargo_ata(mio, base_address, 0x1f000, 0x13, 0xb, pic_phandle);+        keylargo_ata(mio, base_address, 0x20000, 0x14, 0xb, pic_phandle);     }+#if 0     /* Timer */     {         OF_node_t *tmr;@@ -2746,10 +2871,11 @@                         regs, sizeof(OF_regprop_t));         OF_node_put(OF_env, tmr);     }+#endif     /* VIA-PMU */     {         /* Controls adb, RTC and power-mgt (forget it !) */-        OF_node_t *via, *adb, *rtc;+        OF_node_t *via, *adb;         OF_regprop_t regs[1]; #if 0 // THIS IS A HACK AND IS COMPLETELY ABSURD !       // (but needed has Qemu doesn't emulate via-pmu).@@ -2773,14 +2899,21 @@         regs[0].size = 0x00002000;         OF_property_new(OF_env, via, "reg", regs, sizeof(OF_regprop_t));         OF_prop_int_new(OF_env, via, "interrupt-parent", pic_phandle);+        if (arch == ARCH_HEATHROW) {+            OF_prop_int_new(OF_env, via, "interrupts", 0x12);+        } else {         regs[0].address = 0x00000019;         regs[0].size = 0x00000001;         OF_property_new(OF_env, via, "interrupts",                         regs, sizeof(OF_regprop_t));+        }+        /* force usage of OF bus speeds */+        OF_prop_int_new(OF_env, via, "BusSpeedCorrect", 1); #if 0         OF_prop_int_new(OF_env, via, "pmu-version", 0x00D0740C); #endif-#if 1+        {+            OF_node_t *kbd, *mouse;         /* ADB pseudo-device */         adb = OF_node_new(OF_env, via, "adb", OF_ADDRESS_NONE);         if (adb == NULL) {@@ -2797,9 +2930,26 @@         OF_prop_int_new(OF_env, adb, "#size-cells", 0);         OF_pack_get_path(OF_env, tmp, 512, adb);         OF_prop_string_new(OF_env, als, "adb", tmp);-        /* XXX: add "keyboard@2" and "mouse@3" */-        OF_node_put(OF_env, adb);-#endif++            kbd = OF_node_new(OF_env, adb, "keyboard", 2);+            if (kbd == NULL) {+                ERROR("Cannot create 'kbd'\n");+                goto out;+            }+            OF_prop_string_new(OF_env, kbd, "device_type", "keyboard");+            OF_prop_int_new(OF_env, kbd, "reg", 2);++            mouse = OF_node_new(OF_env, adb, "mouse", 3);+            if (mouse == NULL) {+                ERROR("Cannot create 'mouse'\n");+                goto out;+            }+            OF_prop_string_new(OF_env, mouse, "device_type", "mouse");+            OF_prop_int_new(OF_env, mouse, "reg", 3);+            OF_prop_int_new(OF_env, mouse, "#buttons", 3);+        }+        {+            OF_node_t *rtc;                  rtc = OF_node_new(OF_env, via, "rtc", OF_ADDRESS_NONE);         if (rtc == NULL) {@@ -2813,14 +2963,68 @@         OF_prop_string_new(OF_env, rtc, "compatible", "rtc"); #endif         OF_node_put(OF_env, rtc);-        OF_node_put(OF_env, via);     }+        //        OF_node_put(OF_env, via);+    }+    {+        OF_node_t *pmgt;+        pmgt = OF_node_new(OF_env, mio, "power-mgt", OF_ADDRESS_NONE);+        OF_prop_string_new(OF_env, pmgt, "device_type", "power-mgt");+        OF_prop_string_new(OF_env, pmgt, "compatible", "cuda");+        OF_prop_string_new(OF_env, pmgt, "mgt-kind", "min-consumption-pwm-led");+        OF_node_put(OF_env, pmgt);+    }++    if (arch == ARCH_HEATHROW) {+        /* NVRAM */+        OF_node_t *nvr;+        OF_regprop_t regs;+        nvr = OF_node_new(OF_env, mio, "nvram", 0x60000);+        OF_prop_string_new(OF_env, nvr, "device_type", "nvram");+        regs.address = 0x60000;+        regs.size = 0x00020000;+        OF_property_new(OF_env, nvr, "reg", &regs, sizeof(regs));+        OF_prop_int_new(OF_env, nvr, "#bytes", 0x2000);+        OF_node_put(OF_env, nvr);+    }+  out:     //    OF_node_put(OF_env, mio);     OF_node_put(OF_env, chs);     OF_node_put(OF_env, als); } +void OF_finalize_pci_ide (void *dev, +                          uint32_t io_base0, uint32_t io_base1,+                          uint32_t io_base2, uint32_t io_base3)+{+    OF_env_t *OF_env = OF_env_main;+    OF_node_t *pci_ata = dev;+    OF_node_t *ata, *atas[2];+    int i;++    OF_prop_int_new(OF_env, pci_ata, "#address-cells", 1);+    OF_prop_int_new(OF_env, pci_ata, "#size-cells", 0);++    /* XXX: Darwin handles only one device */+    for(i = 0; i < 1; i++) {+        ata = OF_node_new(OF_env, pci_ata, "ata-4", i);+        if (ata == NULL) {+            ERROR("Cannot create 'ata-4'\n");+            return;+        }+        OF_prop_string_new(OF_env, ata, "device_type", "ata");+        OF_prop_string_new(OF_env, ata, "compatible", "cmd646-ata");+        OF_prop_string_new(OF_env, ata, "model", "ata-4");+        OF_prop_int_new(OF_env, ata, "#address-cells", 1);+        OF_prop_int_new(OF_env, ata, "#size-cells", 0);+        OF_prop_int_new(OF_env, ata, "reg", i);+        atas[i] = ata;+    }+    ide_pci_pc_register(io_base0, io_base1, io_base2, io_base3,+                        atas[0], atas[1]);+}+ /*****************************************************************************/ /* Fake package */ static void OF_method_fake (OF_env_t *OF_env)@@ -2862,11 +3066,11 @@     /* As we get a 1:1 mapping, do nothing */     ihandle = popd(OF_env);     args = (void *)popd(OF_env);-    address = popd(OF_env);-    virt = popd(OF_env);-    size = popd(OF_env);     popd(OF_env);-    OF_DPRINTF("Translate address %0x %0x %0x %0x\n", ihandle, address,+    size = popd(OF_env);+    virt = popd(OF_env);+    address = popd(OF_env);+    OF_DPRINTF("Map %0x %0x %0x %0x\n", ihandle, address,                virt, size);     pushd(OF_env, 0); }@@ -3270,7 +3474,7 @@     OF_prop_string_new(OF_env, dsk, "device_type", "block");     OF_prop_string_new(OF_env, dsk, "category", type);     OF_prop_int_new(OF_env, dsk, "device_id", devnum);-    OF_prop_int_new(OF_env, dsk, "reg", 0);+    OF_prop_int_new(OF_env, dsk, "reg", devnum);     OF_method_new(OF_env, dsk, "open", &OF_blockdev_open);     OF_method_new(OF_env, dsk, "seek", &OF_blockdev_seek);     OF_method_new(OF_env, dsk, "read", &OF_blockdev_read);@@ -3432,7 +3636,8 @@ }  void OF_vga_register (const unsigned char *name, unused uint32_t address,-                      int width, int height, int depth)+                      int width, int height, int depth,+                      unsigned long vga_bios_addr, unsigned long vga_bios_size) {     OF_env_t *OF_env;     unsigned char tmp[OF_NAMELEN_MAX];@@ -3504,6 +3709,18 @@     OF_prop_string_new(OF_env, als, "display", tmp);     OF_node_put(OF_env, als);     /* XXX: may also need read-rectangle */++    if (vga_bios_size >= 8) {+        const uint8_t *p;+        int size;+        /* check the QEMU VGA BIOS header */+        p = (const uint8_t *)vga_bios_addr;+        if (p[0] == 'N' && p[1] == 'D' && p[2] == 'R' && p[3] == 'V') {+            size = *(uint32_t *)(p + 4);+            OF_property_new(OF_env, disp, "driver,AAPL,MacOS,PowerPC", +                            p + 8, size);+        }+    }  out:     OF_node_put(OF_env, disp); }@@ -4451,7 +4668,10 @@         break;     case 0x233441d3: /* MacOS X 10.2 and OpenDarwin 1.41 */         /* Create "memory-map" pseudo device */-        popd(OF_env);+        {+            OF_node_t *map;+            uint32_t phandle;+         /* Find "/packages" */         chs = OF_pack_find_by_name(OF_env, OF_node_root, "/chosen");         if (chs == NULL) {@@ -4459,10 +4679,6 @@             ERROR("Cannot get '/chosen'\n");             break;         }-        {-#if 1-            OF_node_t *map;-            uint32_t phandle;             map = OF_node_new(OF_env, chs, "memory-map", OF_ADDRESS_NONE);             if (map == NULL) {                 pushd(OF_env, -1);@@ -4473,11 +4689,8 @@             OF_node_put(OF_env, map);             OF_node_put(OF_env, chs);             pushd(OF_env, phandle);-        }-#else-        pushd(OF_env, 0);-#endif         pushd(OF_env, 0);+        }         break;     case 0x32a2d18e: /* MacOS X 10.2 and OpenDarwin 6.02 */         /* Return screen ihandle */@@ -4540,9 +4753,10 @@     case 0x4ad41f2d:         /* Yaboot: wait 10 ms: sure ! */         break;+     default:         /* ERROR */-        printf("Script:\n%s\n", FString);+        printf("Script: len=%d\n%s\n", (int)strlen(FString), FString);         printf("Call %0x NOT IMPLEMENTED !\n", crc);         bug();         break;@@ -4581,6 +4795,7 @@ {     OF_CHECK_NBARGS(OF_env, 0);     /* Should free all OF resources */+    bd_reset_all(); #if defined (DEBUG_BIOS)     {         uint16_t loglevel = 0x02 | 0x10 | 0x80;diff -wruN --exclude '*~' --exclude '*.o' --exclude '*.bin' --exclude '*.out' --exclude mkdiff OpenHackWare-release-0.4.org/src/pci.c OpenHackWare-release-0.4/src/pci.c--- OpenHackWare-release-0.4.org/src/pci.c	2005-03-31 09:23:33.000000000 +0200+++ OpenHackWare-release-0.4/src/pci.c	2005-07-07 23:27:37.000000000 +0200@@ -99,8 +99,8 @@     uint16_t min_grant;     uint16_t max_latency;     uint8_t  irq_line;-    uint32_t regions[6];-    uint32_t sizes[6];+    uint32_t regions[7]; /* the region 6 is the PCI ROM */+    uint32_t sizes[7];     pci_device_t *next; }; @@ -158,6 +158,7 @@  /* IRQ numbers assigned to PCI IRQs */ static uint8_t prep_pci_irqs[4] = { 9, 11, 9, 11 };+static uint8_t heathrow_pci_irqs[4] = { 0x15, 0x16, 0x17, 0x18 }; static uint8_t pmac_pci_irqs[4] = { 8, 9, 10, 11 };  /* PREP PCI host */@@ -399,6 +400,79 @@     &uninorth_config_readl, &uninorth_config_writel, }; +/* Grackle PCI host */++static uint32_t grackle_cfg_address (pci_bridge_t *bridge,+                                     uint8_t bus, uint8_t devfn,+                                     uint8_t offset)+{+    uint32_t addr;+    addr = 0x80000000 | (bus << 16) | (devfn << 8) | (offset & 0xfc);+    stswap32((uint32_t *)bridge->cfg_addr, addr);+    return bridge->cfg_data + (offset & 3);+}++static uint8_t grackle_config_readb (pci_bridge_t *bridge,+                                      uint8_t bus, uint8_t devfn,+                                      uint8_t offset)+{+    uint32_t addr;+    addr = grackle_cfg_address(bridge, bus, devfn, offset);+    return *((uint8_t *)addr);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -