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.


fixed stupid issue with xed where it reversed the operands for an LMSW
[palacios-OLD.git] / palacios / src / devices / nvram.c
index a8bfc53..10574e4 100644 (file)
@@ -462,7 +462,7 @@ static void set_memory_size(struct nvram_internal * nvram, addr_t bytes) {
 
   {
     // Set the extended memory beyond 16 MB in 64k chunks
-    uint16_t mem_chunks = bytes * (1024 / 64);
+    uint16_t mem_chunks = (bytes - (1024 * 1024 * 16)) / (1024 * 64);
     nvram->mem_state[NVRAM_REG_AMI_BIG_MEMORY_HIGH] = (mem_chunks >> 8) & 0x00ff;
     nvram->mem_state[NVRAM_REG_AMI_BIG_MEMORY_LOW] = mem_chunks & 0x00ff;
   }
@@ -474,15 +474,7 @@ static int init_nvram_state(struct vm_device * dev) {
   struct guest_info * info = dev->vm;
   struct nvram_internal * nvram_state = (struct nvram_internal *)dev->private_data;
   
-  /* TODO:
-   * The amount of ram in the system is stored in info->mem_size
-   * We need to reflect that value correctly here
-   */
-  PrintError("TODO: Set the nvram memory register to reflect info->mem_size (%p)\n", (void *)(info->mem_size));
-  
-
-  memset(nvram_state->mem_state, 0, NVRAM_REG_MAX);
-
+   memset(nvram_state->mem_state, 0, NVRAM_REG_MAX);
 
   //
   // 2 1.44 MB floppy drives
@@ -549,7 +541,7 @@ static int init_nvram_state(struct vm_device * dev) {
   nvram_state->us = 0;
   nvram_state->pus = 0;
 
-  set_memory_size(nvram_state, dev->vm->mem_size);
+  set_memory_size(nvram_state, info->mem_size);
 
   nvram_state->dev_state = NVRAM_READY;
   nvram_state->thereg = 0;