[prev in list] [next in list] [prev in thread] [next in thread] 

List:       bochs-cvs
Subject:    [Bochs-cvs] CVS: bochs/iodev acpi.cc,1.1,1.2 acpi.h,1.1,1.2
From:       Volker Ruppert <vruppert () users ! sourceforge ! net>
Date:       2006-09-26 18:43:44
Message-ID: E1GSHuC-0007iX-DA () sc8-pr-cvs3 ! sourceforge ! net
[Download RAW message or body]

Update of /cvsroot/bochs/bochs/iodev
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv29656/iodev

Modified Files:
	acpi.cc acpi.h 
Log Message:
- some more basic work on the acpi device


Index: acpi.cc
===================================================================
RCS file: /cvsroot/bochs/bochs/iodev/acpi.cc,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- acpi.cc	24 Sep 2006 16:58:13 -0000	1.1
+++ acpi.cc	26 Sep 2006 18:43:42 -0000	1.2
@@ -36,7 +36,7 @@
 bx_acpi_ctrl_c* theACPIController = NULL;
 
 // FIXME
-const Bit8u acpi_pm_iomask[64] = {7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7,
+const Bit8u acpi_pm_iomask[64] = {2, 0, 2, 0, 2, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7,
                                   7, 7, 7, 7, 1, 1, 0, 0, 7, 7, 0, 0, 7, 7, 7, 7,
                                   7, 7, 0, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7,
                                   1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0};
@@ -111,6 +111,9 @@
       // PM base 0x40 - 0x43
       { 0x40, 0x01 }, { 0x41, 0x00 },
       { 0x42, 0x00 }, { 0x43, 0x00 },
+      // device resources
+      { 0x5f, 0x90 }, { 0x63, 0x60 },
+      { 0x67, 0x98 },
       // SM base 0x90 - 0x93
       { 0x90, 0x01 }, { 0x91, 0x00 },
       { 0x92, 0x00 }, { 0x93, 0x00 }
@@ -118,6 +121,10 @@
   for (unsigned i = 0; i < sizeof(reset_vals) / sizeof(*reset_vals); ++i) {
     BX_ACPI_THIS s.pci_conf[reset_vals[i].addr] = reset_vals[i].val;
   }
+
+  BX_ACPI_THIS s.pmsts = 0;
+  BX_ACPI_THIS s.pmen = 0;
+  BX_ACPI_THIS s.pmcntrl = 0;
 }
 
 #if BX_SUPPORT_SAVE_RESTORE
@@ -127,6 +134,9 @@
   char name[6];
 
   bx_list_c *list = new bx_list_c(SIM->get_sr_root(), "acpi", "ACPI Controller State");
+  BXRS_HEX_PARAM_FIELD(list, pmsts, BX_ACPI_THIS s.pmsts);
+  BXRS_HEX_PARAM_FIELD(list, pmen, BX_ACPI_THIS s.pmen);
+  BXRS_HEX_PARAM_FIELD(list, pmcntrl, BX_ACPI_THIS s.pmcntrl);
   bx_list_c *pci_conf = new bx_list_c(list, "pci_conf", 256);
   for (i=0; i<256; i++) {
     sprintf(name, "0x%02x", i);
@@ -173,9 +183,27 @@
 #else
   UNUSED(this_ptr);
 #endif // !BX_USE_ACPI_SMF
+  Bit8u reg = address & 0x3f;
+  Bit32u value = 0xffffffff;
 
-  BX_INFO(("ACPI read from 0x%04x not implemented yet", address));
-  return 0xffffffff;
+  if ((address & 0xffc0) == BX_ACPI_THIS s.pm_base) {
+    switch (reg) {
+      case 0x00:
+        value = BX_ACPI_THIS s.pmsts;
+        break;
+      case 0x02:
+        value = BX_ACPI_THIS s.pmen;
+        break;
+      case 0x04:
+        value = BX_ACPI_THIS s.pmcntrl;
+        break;
+      default:
+        BX_INFO(("ACPI read from PM register 0x%02x not implemented yet", reg));
+    }
+  } else {
+    BX_INFO(("ACPI read from SM register 0x%02x not implemented yet", reg));
+  }
+  return value;
 }
 
 // static IO port write callback handler
@@ -193,8 +221,25 @@
 #else
   UNUSED(this_ptr);
 #endif // !BX_USE_ACPI_SMF
+  Bit8u reg = address & 0x3f;
 
-  BX_INFO(("ACPI write to 0x%04x not implemented yet", address));
+  if ((address & 0xffc0) == BX_ACPI_THIS s.pm_base) {
+    switch (reg) {
+      case 0x00:
+        BX_ACPI_THIS s.pmsts &= ~value;
+        break;
+      case 0x02:
+        BX_ACPI_THIS s.pmen = value;
+        break;
+      case 0x04:
+        BX_ACPI_THIS s.pmcntrl = value;
+        break;
+      default:
+        BX_INFO(("ACPI write to PM register 0x%02x not implemented yet", reg));
+    }
+  } else {
+    BX_INFO(("ACPI write to SM register 0x%02x not implemented yet", reg));
+  }
 }
 
 // pci configuration space read callback handler

Index: acpi.h
===================================================================
RCS file: /cvsroot/bochs/bochs/iodev/acpi.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- acpi.h	24 Sep 2006 16:58:13 -0000	1.1
+++ acpi.h	26 Sep 2006 18:43:42 -0000	1.2
@@ -57,6 +57,9 @@
     Bit8u devfunc;
     Bit32u pm_base;
     Bit32u sm_base;
+    Bit16u pmsts;
+    Bit16u pmen;
+    Bit16u pmcntrl;
   } s;
 };
 


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Bochs-cvs mailing list
Bochs-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bochs-cvs
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic