Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


reworked ramdisk now compiles, not tested
[palacios.git] / palacios / src / geekos / mem.c
index 904ae8b..69acef5 100644 (file)
@@ -2,7 +2,9 @@
  * Physical memory allocation
  * Copyright (c) 2001,2003,2004 David H. Hovemeyer <daveho@cs.umd.edu>
  * Copyright (c) 2003, Jeffrey K. Hollingsworth <hollings@cs.umd.edu>
- * $Revision: 1.10 $
+ * Copyright (c) 2008, Jack Lange <jarusl@cs.northwestern.edu>
+ * Copyright (c) 2008, The V3VEE Project <http://www.v3vee.org>
+ * $Revision: 1.13 $
  * 
  * This is free software.  You are permitted to use,
  * redistribute, and modify it as specified in the file "COPYING".
  */
 struct Page* g_pageList;
 
-#ifdef RAMDISK_BOOT
 ulong_t g_ramdiskImage;
 ulong_t s_ramdiskSize;
-#endif
+
 
 /*
  * Number of pages currently available on the freelist.
@@ -140,13 +141,12 @@ void Init_Mem(struct Boot_Info* bootInfo)
     ulong_t heapEnd;
     ulong_t vmmMemEnd;
 
-    /*Zheng 08/03/2008*/    
-#ifdef RAMDISK_BOOT
+
     g_ramdiskImage = bootInfo->ramdisk_image;
     s_ramdiskSize = bootInfo->ramdisk_size;
     ulong_t initrdAddr;
     ulong_t initrdEnd;
-#endif
+
     
 
     KASSERT(bootInfo->memSizeKB > 0);
@@ -202,7 +202,6 @@ void Init_Mem(struct Boot_Info* bootInfo)
     /* ** */
     vmmMemEnd = Round_Up_To_Page(pageListEnd + VMM_AVAIL_MEM_SIZE);
 
-#ifdef RAMDISK_BOOT
     /*
      * Zheng 08/03/2008
      * copy the ramdisk to this area 
@@ -211,26 +210,26 @@ void Init_Mem(struct Boot_Info* bootInfo)
     initrdAddr = vmmMemEnd;
     initrdEnd = Round_Up_To_Page(initrdAddr + s_ramdiskSize);
     PrintBoth("mem.c(%d) Move ramdisk(%dB) from %x to %x", __LINE__, s_ramdiskSize, g_ramdiskImage, initrdAddr);
-    memcpy(initrdAddr, g_ramdiskImage, s_ramdiskSize);
+    memcpy((ulong_t *)initrdAddr, (ulong_t *)g_ramdiskImage, s_ramdiskSize);
     PrintBoth(" done\n");
     PrintBoth("mem.c(%d) Set 0 to unused bytes in the last ramdisk page from %x to %x", __LINE__, initrdAddr+s_ramdiskSize, initrdEnd);
-    memset(initrdAddr+s_ramdiskSize, 0, initrdEnd-(initrdAddr+s_ramdiskSize));
+    memset((ulong_t *)initrdAddr + s_ramdiskSize, 0, initrdEnd - (initrdAddr + s_ramdiskSize));
     PrintBoth(" done\n");
-    /*
-     * Zheng 08/03/2008
-     */
-    vm_range_start = initrdEnd;
-    vm_range_end = endOfMem;
-#else
+
+
     
     /* 
      *  the disgusting way to get at the memory assigned to a VM
      */
     
-    vm_range_start = vmmMemEnd;
-    vm_range_end = endOfMem;
-    
-#endif
+    //vm_range_start = vmmMemEnd;
+    //vm_range_end = endOfMem;
+    /*
+     * Zheng 08/03/2008
+     */
+    vm_range_start = initrdEnd;
+    vm_range_end = endOfMem;    
+
 
     Add_Page_Range(0, PAGE_SIZE, PAGE_UNUSED);                        // BIOS area
     Add_Page_Range(PAGE_SIZE, PAGE_SIZE * 3, PAGE_ALLOCATED);         // Intial kernel thread obj + stack