qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 2/6] Add S3 state to DSDT. Handle resume event in th


From: Gleb Natapov
Subject: [Qemu-devel] [PATCH 2/6] Add S3 state to DSDT. Handle resume event in the BIOS.
Date: Sun, 26 Oct 2008 16:44:35 +0200
User-agent: StGIT/0.14.2

Signed-off-by: Gleb Natapov <address@hidden>
---

 bios/acpi-dsdt.dsl |   34 +++-
 bios/acpi-dsdt.hex |  505 ++++++++++++++++++++++++++--------------------------
 bios/rombios.c     |   34 ++++
 bios/rombios32.c   |   71 +++++++
 4 files changed, 381 insertions(+), 263 deletions(-)

diff --git a/bios/acpi-dsdt.dsl b/bios/acpi-dsdt.dsl
index 19ac2f9..f33d534 100644
--- a/bios/acpi-dsdt.dsl
+++ b/bios/acpi-dsdt.dsl
@@ -25,6 +25,32 @@ DefinitionBlock (
     0x1                 // OEM Revision
     )
 {
+    /*
+     * S3 (suspend-to-ram), S4 (suspend-to-disc) and S5 (power-off) type codes:
+     * must match piix4 emulation.
+     */
+    Name (\_S3, Package (0x04)
+    {
+        0x01,  /* PM1a_CNT.SLP_TYP */
+        0x01,  /* PM1b_CNT.SLP_TYP */
+        Zero,  /* reserved */
+        Zero   /* reserved */
+    })
+    Name (\_S4, Package (0x04)
+    {
+        Zero,  /* PM1a_CNT.SLP_TYP */
+        Zero,  /* PM1b_CNT.SLP_TYP */
+        Zero,  /* reserved */
+        Zero   /* reserved */
+    })
+    Name (\_S5, Package (0x04)
+    {
+        Zero,  /* PM1a_CNT.SLP_TYP */
+        Zero,  /* PM1b_CNT.SLP_TYP */
+        Zero,  /* reserved */
+        Zero   /* reserved */
+    })
+
     Scope (\)
     {
         /* Debug Output */
@@ -530,12 +556,4 @@ DefinitionBlock (
                 }
         }
     }
-
-    /* S5 = power off state */
-    Name (_S5, Package (4) {
-        0x00, // PM1a_CNT.SLP_TYP
-        0x00, // PM2a_CNT.SLP_TYP
-        0x00, // reserved
-        0x00, // reserved
-    })
 }
diff --git a/bios/acpi-dsdt.hex b/bios/acpi-dsdt.hex
index 6bc6268..b5bc891 100644
--- a/bios/acpi-dsdt.hex
+++ b/bios/acpi-dsdt.hex
@@ -1,265 +1,268 @@
 /*
  * 
  * Intel ACPI Component Architecture
- * ASL Optimizing Compiler version 20060912 [Nov 25 2006]
+ * ASL Optimizing Compiler version 20061109 [May 15 2007]
  * Copyright (C) 2000 - 2006 Intel Corporation
  * Supports ACPI Specification Revision 3.0a
  * 
- * Compilation of "acpi-dsdt.dsl" - Sun Sep 14 10:27:40 2008
+ * Compilation of "acpi-dsdt.dsl" - Sun Oct 26 11:50:49 2008
  * 
  * C source code output
  *
  */
-unsigned char AmlCode[] =
+const unsigned char AmlCode[] =
 {
-    0x44,0x53,0x44,0x54,0xC9,0x07,0x00,0x00,  /* 00000000    "DSDT...." */
-    0x01,0x0E,0x42,0x58,0x50,0x43,0x00,0x00,  /* 00000008    "..BXPC.." */
+    0x44,0x53,0x44,0x54,0xE1,0x07,0x00,0x00,  /* 00000000    "DSDT...." */
+    0x01,0x24,0x42,0x58,0x50,0x43,0x00,0x00,  /* 00000008    ".$BXPC.." */
     0x42,0x58,0x44,0x53,0x44,0x54,0x00,0x00,  /* 00000010    "BXDSDT.." */
     0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
-    0x12,0x09,0x06,0x20,0x10,0x1C,0x5C,0x00,  /* 00000020    "... ..\." */
-    0x5B,0x80,0x44,0x42,0x47,0x5F,0x01,0x0B,  /* 00000028    "[.DBG_.." */
-    0x44,0xB0,0x0A,0x04,0x5B,0x81,0x0B,0x44,  /* 00000030    "D...[..D" */
-    0x42,0x47,0x5F,0x03,0x44,0x42,0x47,0x4C,  /* 00000038    "BG_.DBGL" */
-    0x20,0x10,0x49,0x1F,0x5F,0x53,0x42,0x5F,  /* 00000040    " .I._SB_" */
-    0x5B,0x82,0x41,0x1F,0x50,0x43,0x49,0x30,  /* 00000048    "[.A.PCI0" */
-    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 00000050    "._HID.A." */
-    0x0A,0x03,0x08,0x5F,0x41,0x44,0x52,0x00,  /* 00000058    "..._ADR." */
-    0x08,0x5F,0x55,0x49,0x44,0x01,0x08,0x5F,  /* 00000060    "._UID.._" */
-    0x50,0x52,0x54,0x12,0x47,0x15,0x18,0x12,  /* 00000068    "PRT.G..." */
-    0x0B,0x04,0x0B,0xFF,0xFF,0x00,0x4C,0x4E,  /* 00000070    "......LN" */
-    0x4B,0x44,0x00,0x12,0x0B,0x04,0x0B,0xFF,  /* 00000078    "KD......" */
-    0xFF,0x01,0x4C,0x4E,0x4B,0x41,0x00,0x12,  /* 00000080    "..LNKA.." */
-    0x0C,0x04,0x0B,0xFF,0xFF,0x0A,0x02,0x4C,  /* 00000088    ".......L" */
-    0x4E,0x4B,0x42,0x00,0x12,0x0C,0x04,0x0B,  /* 00000090    "NKB....." */
-    0xFF,0xFF,0x0A,0x03,0x4C,0x4E,0x4B,0x43,  /* 00000098    "....LNKC" */
-    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x01,  /* 000000A0    "........" */
-    0x00,0x00,0x4C,0x4E,0x4B,0x41,0x00,0x12,  /* 000000A8    "..LNKA.." */
-    0x0D,0x04,0x0C,0xFF,0xFF,0x01,0x00,0x01,  /* 000000B0    "........" */
-    0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,  /* 000000B8    "LNKB...." */
-    0x0C,0xFF,0xFF,0x01,0x00,0x0A,0x02,0x4C,  /* 000000C0    ".......L" */
-    0x4E,0x4B,0x43,0x00,0x12,0x0E,0x04,0x0C,  /* 000000C8    "NKC....." */
-    0xFF,0xFF,0x01,0x00,0x0A,0x03,0x4C,0x4E,  /* 000000D0    "......LN" */
-    0x4B,0x44,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 000000D8    "KD......" */
-    0xFF,0x02,0x00,0x00,0x4C,0x4E,0x4B,0x42,  /* 000000E0    "....LNKB" */
-    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x02,  /* 000000E8    "........" */
-    0x00,0x01,0x4C,0x4E,0x4B,0x43,0x00,0x12,  /* 000000F0    "..LNKC.." */
-    0x0E,0x04,0x0C,0xFF,0xFF,0x02,0x00,0x0A,  /* 000000F8    "........" */
-    0x02,0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0E,  /* 00000100    ".LNKD..." */
-    0x04,0x0C,0xFF,0xFF,0x02,0x00,0x0A,0x03,  /* 00000108    "........" */
-    0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0D,0x04,  /* 00000110    "LNKA...." */
-    0x0C,0xFF,0xFF,0x03,0x00,0x00,0x4C,0x4E,  /* 00000118    "......LN" */
-    0x4B,0x43,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000120    "KC......" */
-    0xFF,0x03,0x00,0x01,0x4C,0x4E,0x4B,0x44,  /* 00000128    "....LNKD" */
-    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x03,  /* 00000130    "........" */
-    0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x41,0x00,  /* 00000138    "...LNKA." */
-    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x03,0x00,  /* 00000140    "........" */
-    0x0A,0x03,0x4C,0x4E,0x4B,0x42,0x00,0x12,  /* 00000148    "..LNKB.." */
-    0x0D,0x04,0x0C,0xFF,0xFF,0x04,0x00,0x00,  /* 00000150    "........" */
-    0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0D,0x04,  /* 00000158    "LNKD...." */
-    0x0C,0xFF,0xFF,0x04,0x00,0x01,0x4C,0x4E,  /* 00000160    "......LN" */
-    0x4B,0x41,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 00000168    "KA......" */
-    0xFF,0x04,0x00,0x0A,0x02,0x4C,0x4E,0x4B,  /* 00000170    ".....LNK" */
-    0x42,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 00000178    "B......." */
-    0x04,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x43,  /* 00000180    "....LNKC" */
-    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x05,  /* 00000188    "........" */
-    0x00,0x00,0x4C,0x4E,0x4B,0x41,0x00,0x12,  /* 00000190    "..LNKA.." */
-    0x0D,0x04,0x0C,0xFF,0xFF,0x05,0x00,0x01,  /* 00000198    "........" */
-    0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0E,0x04,  /* 000001A0    "LNKB...." */
-    0x0C,0xFF,0xFF,0x05,0x00,0x0A,0x02,0x4C,  /* 000001A8    ".......L" */
-    0x4E,0x4B,0x43,0x00,0x12,0x0E,0x04,0x0C,  /* 000001B0    "NKC....." */
-    0xFF,0xFF,0x05,0x00,0x0A,0x03,0x4C,0x4E,  /* 000001B8    "......LN" */
-    0x4B,0x44,0x00,0x08,0x5F,0x43,0x52,0x53,  /* 000001C0    "KD.._CRS" */
-    0x11,0x42,0x07,0x0A,0x6E,0x88,0x0D,0x00,  /* 000001C8    ".B..n..." */
-    0x02,0x0C,0x00,0x00,0x00,0x00,0x00,0xFF,  /* 000001D0    "........" */
-    0x00,0x00,0x00,0x00,0x01,0x47,0x01,0xF8,  /* 000001D8    ".....G.." */
-    0x0C,0xF8,0x0C,0x01,0x08,0x88,0x0D,0x00,  /* 000001E0    "........" */
-    0x01,0x0C,0x03,0x00,0x00,0x00,0x00,0xF7,  /* 000001E8    "........" */
-    0x0C,0x00,0x00,0xF8,0x0C,0x88,0x0D,0x00,  /* 000001F0    "........" */
-    0x01,0x0C,0x03,0x00,0x00,0x00,0x0D,0xFF,  /* 000001F8    "........" */
-    0xFF,0x00,0x00,0x00,0xF3,0x87,0x17,0x00,  /* 00000200    "........" */
-    0x00,0x0C,0x03,0x00,0x00,0x00,0x00,0x00,  /* 00000208    "........" */
-    0x00,0x0A,0x00,0xFF,0xFF,0x0B,0x00,0x00,  /* 00000210    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x87,  /* 00000218    "........" */
-    0x17,0x00,0x00,0x0C,0x01,0x00,0x00,0x00,  /* 00000220    "........" */
-    0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xBF,  /* 00000228    "........" */
-    0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,  /* 00000230    "........" */
-    0x1E,0x79,0x00,0x10,0x41,0x29,0x2E,0x5F,  /* 00000238    ".y..A)._" */
-    0x53,0x42,0x5F,0x50,0x43,0x49,0x30,0x5B,  /* 00000240    "SB_PCI0[" */
-    0x82,0x42,0x23,0x49,0x53,0x41,0x5F,0x08,  /* 00000248    ".B#ISA_." */
-    0x5F,0x41,0x44,0x52,0x0C,0x00,0x00,0x01,  /* 00000250    "_ADR...." */
-    0x00,0x5B,0x80,0x50,0x34,0x30,0x43,0x02,  /* 00000258    ".[.P40C." */
-    0x0A,0x60,0x0A,0x04,0x5B,0x82,0x2D,0x52,  /* 00000260    ".`..[.-R" */
-    0x54,0x43,0x5F,0x08,0x5F,0x48,0x49,0x44,  /* 00000268    "TC_._HID" */
-    0x0C,0x41,0xD0,0x0B,0x00,0x08,0x5F,0x43,  /* 00000270    ".A...._C" */
-    0x52,0x53,0x11,0x18,0x0A,0x15,0x47,0x01,  /* 00000278    "RS....G." */
-    0x70,0x00,0x70,0x00,0x10,0x02,0x22,0x00,  /* 00000280    "p.p..."." */
-    0x01,0x47,0x01,0x72,0x00,0x72,0x00,0x02,  /* 00000288    ".G.r.r.." */
-    0x06,0x79,0x00,0x5B,0x82,0x44,0x04,0x4B,  /* 00000290    ".y.[.D.K" */
-    0x42,0x44,0x5F,0x08,0x5F,0x48,0x49,0x44,  /* 00000298    "BD_._HID" */
-    0x0C,0x41,0xD0,0x03,0x03,0x14,0x09,0x5F,  /* 000002A0    ".A....._" */
-    0x53,0x54,0x41,0x00,0xA4,0x0A,0x0F,0x14,  /* 000002A8    "STA....." */
-    0x29,0x5F,0x43,0x52,0x53,0x00,0x08,0x54,  /* 000002B0    ")_CRS..T" */
-    0x4D,0x50,0x5F,0x11,0x18,0x0A,0x15,0x47,  /* 000002B8    "MP_....G" */
-    0x01,0x60,0x00,0x60,0x00,0x01,0x01,0x47,  /* 000002C0    ".`.`...G" */
-    0x01,0x64,0x00,0x64,0x00,0x01,0x01,0x22,  /* 000002C8    ".d.d..."" */
-    0x02,0x00,0x79,0x00,0xA4,0x54,0x4D,0x50,  /* 000002D0    "..y..TMP" */
-    0x5F,0x5B,0x82,0x33,0x4D,0x4F,0x55,0x5F,  /* 000002D8    "_[.3MOU_" */
-    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 000002E0    "._HID.A." */
-    0x0F,0x13,0x14,0x09,0x5F,0x53,0x54,0x41,  /* 000002E8    "...._STA" */
-    0x00,0xA4,0x0A,0x0F,0x14,0x19,0x5F,0x43,  /* 000002F0    "......_C" */
-    0x52,0x53,0x00,0x08,0x54,0x4D,0x50,0x5F,  /* 000002F8    "RS..TMP_" */
-    0x11,0x08,0x0A,0x05,0x22,0x00,0x10,0x79,  /* 00000300    "...."..y" */
-    0x00,0xA4,0x54,0x4D,0x50,0x5F,0x5B,0x82,  /* 00000308    "..TMP_[." */
-    0x47,0x04,0x46,0x44,0x43,0x30,0x08,0x5F,  /* 00000310    "G.FDC0._" */
-    0x48,0x49,0x44,0x0C,0x41,0xD0,0x07,0x00,  /* 00000318    "HID.A..." */
-    0x14,0x09,0x5F,0x53,0x54,0x41,0x00,0xA4,  /* 00000320    ".._STA.." */
-    0x0A,0x0F,0x14,0x2C,0x5F,0x43,0x52,0x53,  /* 00000328    "...,_CRS" */
-    0x00,0x08,0x42,0x55,0x46,0x30,0x11,0x1B,  /* 00000330    "..BUF0.." */
-    0x0A,0x18,0x47,0x01,0xF2,0x03,0xF2,0x03,  /* 00000338    "..G....." */
-    0x00,0x04,0x47,0x01,0xF7,0x03,0xF7,0x03,  /* 00000340    "..G....." */
-    0x00,0x01,0x22,0x40,0x00,0x2A,0x04,0x00,  /* 00000348    ".."@.*.." */
-    0x79,0x00,0xA4,0x42,0x55,0x46,0x30,0x5B,  /* 00000350    "y..BUF0[" */
-    0x82,0x4B,0x05,0x4C,0x50,0x54,0x5F,0x08,  /* 00000358    ".K.LPT_." */
-    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x04,  /* 00000360    "_HID.A.." */
-    0x00,0x14,0x28,0x5F,0x53,0x54,0x41,0x00,  /* 00000368    "..(_STA." */
-    0x70,0x5E,0x5E,0x5E,0x2E,0x50,0x58,0x31,  /* 00000370    "p^^^.PX1" */
-    0x33,0x44,0x52,0x53,0x41,0x60,0x7B,0x60,  /* 00000378    "3DRSA`{`" */
-    0x0C,0x00,0x00,0x00,0x80,0x60,0xA0,0x06,  /* 00000380    ".....`.." */
-    0x93,0x60,0x00,0xA4,0x00,0xA1,0x04,0xA4,  /* 00000388    ".`......" */
-    0x0A,0x0F,0x14,0x21,0x5F,0x43,0x52,0x53,  /* 00000390    "...!_CRS" */
-    0x00,0x08,0x42,0x55,0x46,0x30,0x11,0x10,  /* 00000398    "..BUF0.." */
-    0x0A,0x0D,0x47,0x01,0x78,0x03,0x78,0x03,  /* 000003A0    "..G.x.x." */
-    0x08,0x08,0x22,0x80,0x00,0x79,0x00,0xA4,  /* 000003A8    ".."..y.." */
-    0x42,0x55,0x46,0x30,0x5B,0x82,0x41,0x06,  /* 000003B0    "BUF0[.A." */
-    0x43,0x4F,0x4D,0x31,0x08,0x5F,0x48,0x49,  /* 000003B8    "COM1._HI" */
-    0x44,0x0C,0x41,0xD0,0x05,0x01,0x08,0x5F,  /* 000003C0    "D.A...._" */
-    0x55,0x49,0x44,0x01,0x14,0x28,0x5F,0x53,  /* 000003C8    "UID..(_S" */
-    0x54,0x41,0x00,0x70,0x5E,0x5E,0x5E,0x2E,  /* 000003D0    "TA.p^^^." */
-    0x50,0x58,0x31,0x33,0x44,0x52,0x53,0x43,  /* 000003D8    "PX13DRSC" */
-    0x60,0x7B,0x60,0x0C,0x00,0x00,0x00,0x08,  /* 000003E0    "`{`....." */
-    0x60,0xA0,0x06,0x93,0x60,0x00,0xA4,0x00,  /* 000003E8    "`...`..." */
-    0xA1,0x04,0xA4,0x0A,0x0F,0x14,0x21,0x5F,  /* 000003F0    "......!_" */
-    0x43,0x52,0x53,0x00,0x08,0x42,0x55,0x46,  /* 000003F8    "CRS..BUF" */
-    0x30,0x11,0x10,0x0A,0x0D,0x47,0x01,0xF8,  /* 00000400    "0....G.." */
-    0x03,0xF8,0x03,0x00,0x08,0x22,0x10,0x00,  /* 00000408    ".....".." */
-    0x79,0x00,0xA4,0x42,0x55,0x46,0x30,0x5B,  /* 00000410    "y..BUF0[" */
-    0x82,0x42,0x06,0x43,0x4F,0x4D,0x32,0x08,  /* 00000418    ".B.COM2." */
-    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x05,  /* 00000420    "_HID.A.." */
-    0x01,0x08,0x5F,0x55,0x49,0x44,0x0A,0x02,  /* 00000428    ".._UID.." */
-    0x14,0x28,0x5F,0x53,0x54,0x41,0x00,0x70,  /* 00000430    ".(_STA.p" */
-    0x5E,0x5E,0x5E,0x2E,0x50,0x58,0x31,0x33,  /* 00000438    "^^^.PX13" */
-    0x44,0x52,0x53,0x43,0x60,0x7B,0x60,0x0C,  /* 00000440    "DRSC`{`." */
-    0x00,0x00,0x00,0x80,0x60,0xA0,0x06,0x93,  /* 00000448    "....`..." */
-    0x60,0x00,0xA4,0x00,0xA1,0x04,0xA4,0x0A,  /* 00000450    "`......." */
-    0x0F,0x14,0x21,0x5F,0x43,0x52,0x53,0x00,  /* 00000458    "..!_CRS." */
-    0x08,0x42,0x55,0x46,0x30,0x11,0x10,0x0A,  /* 00000460    ".BUF0..." */
-    0x0D,0x47,0x01,0xF8,0x02,0xF8,0x02,0x00,  /* 00000468    ".G......" */
-    0x08,0x22,0x08,0x00,0x79,0x00,0xA4,0x42,  /* 00000470    "."..y..B" */
-    0x55,0x46,0x30,0x5B,0x82,0x40,0x05,0x50,  /* 00000478    "address@hidden" 
*/
-    0x58,0x31,0x33,0x08,0x5F,0x41,0x44,0x52,  /* 00000480    "X13._ADR" */
-    0x0C,0x03,0x00,0x01,0x00,0x5B,0x80,0x50,  /* 00000488    ".....[.P" */
-    0x31,0x33,0x43,0x02,0x0A,0x5C,0x0A,0x24,  /* 00000490    "13C..\.$" */
-    0x5B,0x81,0x33,0x50,0x31,0x33,0x43,0x03,  /* 00000498    "[.3P13C." */
-    0x44,0x52,0x53,0x41,0x20,0x44,0x52,0x53,  /* 000004A0    "DRSA DRS" */
-    0x42,0x20,0x44,0x52,0x53,0x43,0x20,0x44,  /* 000004A8    "B DRSC D" */
-    0x52,0x53,0x45,0x20,0x44,0x52,0x53,0x46,  /* 000004B0    "RSE DRSF" */
-    0x20,0x44,0x52,0x53,0x47,0x20,0x44,0x52,  /* 000004B8    " DRSG DR" */
-    0x53,0x48,0x20,0x44,0x52,0x53,0x49,0x20,  /* 000004C0    "SH DRSI " */
-    0x44,0x52,0x53,0x4A,0x20,0x10,0x4F,0x2E,  /* 000004C8    "DRSJ .O." */
-    0x5F,0x53,0x42,0x5F,0x5B,0x81,0x24,0x2F,  /* 000004D0    "_SB_[.$/" */
-    0x03,0x50,0x43,0x49,0x30,0x49,0x53,0x41,  /* 000004D8    ".PCI0ISA" */
-    0x5F,0x50,0x34,0x30,0x43,0x01,0x50,0x52,  /* 000004E0    "_P40C.PR" */
-    0x51,0x30,0x08,0x50,0x52,0x51,0x31,0x08,  /* 000004E8    "Q0.PRQ1." */
-    0x50,0x52,0x51,0x32,0x08,0x50,0x52,0x51,  /* 000004F0    "PRQ2.PRQ" */
-    0x33,0x08,0x5B,0x82,0x4E,0x0A,0x4C,0x4E,  /* 000004F8    "3.[.N.LN" */
-    0x4B,0x41,0x08,0x5F,0x48,0x49,0x44,0x0C,  /* 00000500    "KA._HID." */
-    0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,0x49,  /* 00000508    "A...._UI" */
-    0x44,0x01,0x08,0x5F,0x50,0x52,0x53,0x11,  /* 00000510    "D.._PRS." */
-    0x09,0x0A,0x06,0x23,0xF8,0x1E,0x18,0x79,  /* 00000518    "...#...y" */
-    0x00,0x14,0x1A,0x5F,0x53,0x54,0x41,0x00,  /* 00000520    "..._STA." */
-    0x70,0x0A,0x0B,0x60,0xA0,0x0D,0x7B,0x0A,  /* 00000528    "p..`..{." */
-    0x80,0x50,0x52,0x51,0x30,0x61,0x70,0x0A,  /* 00000530    ".PRQ0ap." */
-    0x09,0x60,0xA4,0x60,0x14,0x11,0x5F,0x44,  /* 00000538    ".`.`.._D" */
-    0x49,0x53,0x00,0x7D,0x50,0x52,0x51,0x30,  /* 00000540    "IS.}PRQ0" */
-    0x0A,0x80,0x50,0x52,0x51,0x30,0x14,0x3F,  /* 00000548    "..PRQ0.?" */
-    0x5F,0x43,0x52,0x53,0x00,0x08,0x50,0x52,  /* 00000550    "_CRS..PR" */
-    0x52,0x30,0x11,0x09,0x0A,0x06,0x23,0x02,  /* 00000558    "R0....#." */
-    0x00,0x18,0x79,0x00,0x8B,0x50,0x52,0x52,  /* 00000560    "..y..PRR" */
-    0x30,0x01,0x54,0x4D,0x50,0x5F,0x70,0x50,  /* 00000568    "0.TMP_pP" */
-    0x52,0x51,0x30,0x60,0xA0,0x0C,0x95,0x60,  /* 00000570    "RQ0`...`" */
-    0x0A,0x80,0x79,0x01,0x60,0x54,0x4D,0x50,  /* 00000578    "..y.`TMP" */
-    0x5F,0xA1,0x07,0x70,0x00,0x54,0x4D,0x50,  /* 00000580    "_..p.TMP" */
-    0x5F,0xA4,0x50,0x52,0x52,0x30,0x14,0x1B,  /* 00000588    "_.PRR0.." */
-    0x5F,0x53,0x52,0x53,0x01,0x8B,0x68,0x01,  /* 00000590    "_SRS..h." */
-    0x54,0x4D,0x50,0x5F,0x82,0x54,0x4D,0x50,  /* 00000598    "TMP_.TMP" */
-    0x5F,0x60,0x76,0x60,0x70,0x60,0x50,0x52,  /* 000005A0    "_`v`p`PR" */
-    0x51,0x30,0x5B,0x82,0x4F,0x0A,0x4C,0x4E,  /* 000005A8    "Q0[.O.LN" */
-    0x4B,0x42,0x08,0x5F,0x48,0x49,0x44,0x0C,  /* 000005B0    "KB._HID." */
-    0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,0x49,  /* 000005B8    "A...._UI" */
-    0x44,0x0A,0x02,0x08,0x5F,0x50,0x52,0x53,  /* 000005C0    "D..._PRS" */
-    0x11,0x09,0x0A,0x06,0x23,0xF8,0x1E,0x18,  /* 000005C8    "....#..." */
-    0x79,0x00,0x14,0x1A,0x5F,0x53,0x54,0x41,  /* 000005D0    "y..._STA" */
-    0x00,0x70,0x0A,0x0B,0x60,0xA0,0x0D,0x7B,  /* 000005D8    ".p..`..{" */
-    0x0A,0x80,0x50,0x52,0x51,0x31,0x61,0x70,  /* 000005E0    "..PRQ1ap" */
-    0x0A,0x09,0x60,0xA4,0x60,0x14,0x11,0x5F,  /* 000005E8    "..`.`.._" */
-    0x44,0x49,0x53,0x00,0x7D,0x50,0x52,0x51,  /* 000005F0    "DIS.}PRQ" */
-    0x31,0x0A,0x80,0x50,0x52,0x51,0x31,0x14,  /* 000005F8    "1..PRQ1." */
-    0x3F,0x5F,0x43,0x52,0x53,0x00,0x08,0x50,  /* 00000600    "?_CRS..P" */
-    0x52,0x52,0x30,0x11,0x09,0x0A,0x06,0x23,  /* 00000608    "RR0....#" */
-    0x02,0x00,0x18,0x79,0x00,0x8B,0x50,0x52,  /* 00000610    "...y..PR" */
-    0x52,0x30,0x01,0x54,0x4D,0x50,0x5F,0x70,  /* 00000618    "R0.TMP_p" */
-    0x50,0x52,0x51,0x31,0x60,0xA0,0x0C,0x95,  /* 00000620    "PRQ1`..." */
-    0x60,0x0A,0x80,0x79,0x01,0x60,0x54,0x4D,  /* 00000628    "`..y.`TM" */
-    0x50,0x5F,0xA1,0x07,0x70,0x00,0x54,0x4D,  /* 00000630    "P_..p.TM" */
-    0x50,0x5F,0xA4,0x50,0x52,0x52,0x30,0x14,  /* 00000638    "P_.PRR0." */
-    0x1B,0x5F,0x53,0x52,0x53,0x01,0x8B,0x68,  /* 00000640    "._SRS..h" */
-    0x01,0x54,0x4D,0x50,0x5F,0x82,0x54,0x4D,  /* 00000648    ".TMP_.TM" */
-    0x50,0x5F,0x60,0x76,0x60,0x70,0x60,0x50,  /* 00000650    "P_`v`p`P" */
-    0x52,0x51,0x31,0x5B,0x82,0x4F,0x0A,0x4C,  /* 00000658    "RQ1[.O.L" */
-    0x4E,0x4B,0x43,0x08,0x5F,0x48,0x49,0x44,  /* 00000660    "NKC._HID" */
-    0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,  /* 00000668    ".A...._U" */
-    0x49,0x44,0x0A,0x03,0x08,0x5F,0x50,0x52,  /* 00000670    "ID..._PR" */
-    0x53,0x11,0x09,0x0A,0x06,0x23,0xF8,0x1E,  /* 00000678    "S....#.." */
-    0x18,0x79,0x00,0x14,0x1A,0x5F,0x53,0x54,  /* 00000680    ".y..._ST" */
-    0x41,0x00,0x70,0x0A,0x0B,0x60,0xA0,0x0D,  /* 00000688    "A.p..`.." */
-    0x7B,0x0A,0x80,0x50,0x52,0x51,0x32,0x61,  /* 00000690    "{..PRQ2a" */
-    0x70,0x0A,0x09,0x60,0xA4,0x60,0x14,0x11,  /* 00000698    "p..`.`.." */
-    0x5F,0x44,0x49,0x53,0x00,0x7D,0x50,0x52,  /* 000006A0    "_DIS.}PR" */
-    0x51,0x32,0x0A,0x80,0x50,0x52,0x51,0x32,  /* 000006A8    "Q2..PRQ2" */
-    0x14,0x3F,0x5F,0x43,0x52,0x53,0x00,0x08,  /* 000006B0    ".?_CRS.." */
-    0x50,0x52,0x52,0x30,0x11,0x09,0x0A,0x06,  /* 000006B8    "PRR0...." */
-    0x23,0x02,0x00,0x18,0x79,0x00,0x8B,0x50,  /* 000006C0    "#...y..P" */
-    0x52,0x52,0x30,0x01,0x54,0x4D,0x50,0x5F,  /* 000006C8    "RR0.TMP_" */
-    0x70,0x50,0x52,0x51,0x32,0x60,0xA0,0x0C,  /* 000006D0    "pPRQ2`.." */
-    0x95,0x60,0x0A,0x80,0x79,0x01,0x60,0x54,  /* 000006D8    ".`..y.`T" */
-    0x4D,0x50,0x5F,0xA1,0x07,0x70,0x00,0x54,  /* 000006E0    "MP_..p.T" */
-    0x4D,0x50,0x5F,0xA4,0x50,0x52,0x52,0x30,  /* 000006E8    "MP_.PRR0" */
-    0x14,0x1B,0x5F,0x53,0x52,0x53,0x01,0x8B,  /* 000006F0    ".._SRS.." */
-    0x68,0x01,0x54,0x4D,0x50,0x5F,0x82,0x54,  /* 000006F8    "h.TMP_.T" */
-    0x4D,0x50,0x5F,0x60,0x76,0x60,0x70,0x60,  /* 00000700    "MP_`v`p`" */
-    0x50,0x52,0x51,0x32,0x5B,0x82,0x4F,0x0A,  /* 00000708    "PRQ2[.O." */
-    0x4C,0x4E,0x4B,0x44,0x08,0x5F,0x48,0x49,  /* 00000710    "LNKD._HI" */
-    0x44,0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,  /* 00000718    "D.A...._" */
-    0x55,0x49,0x44,0x0A,0x04,0x08,0x5F,0x50,  /* 00000720    "UID..._P" */
-    0x52,0x53,0x11,0x09,0x0A,0x06,0x23,0xF8,  /* 00000728    "RS....#." */
-    0x1E,0x18,0x79,0x00,0x14,0x1A,0x5F,0x53,  /* 00000730    "..y..._S" */
-    0x54,0x41,0x00,0x70,0x0A,0x0B,0x60,0xA0,  /* 00000738    "TA.p..`." */
-    0x0D,0x7B,0x0A,0x80,0x50,0x52,0x51,0x33,  /* 00000740    ".{..PRQ3" */
-    0x61,0x70,0x0A,0x09,0x60,0xA4,0x60,0x14,  /* 00000748    "ap..`.`." */
-    0x11,0x5F,0x44,0x49,0x53,0x00,0x7D,0x50,  /* 00000750    "._DIS.}P" */
-    0x52,0x51,0x33,0x0A,0x80,0x50,0x52,0x51,  /* 00000758    "RQ3..PRQ" */
-    0x33,0x14,0x3F,0x5F,0x43,0x52,0x53,0x00,  /* 00000760    "3.?_CRS." */
-    0x08,0x50,0x52,0x52,0x30,0x11,0x09,0x0A,  /* 00000768    ".PRR0..." */
-    0x06,0x23,0x02,0x00,0x18,0x79,0x00,0x8B,  /* 00000770    ".#...y.." */
-    0x50,0x52,0x52,0x30,0x01,0x54,0x4D,0x50,  /* 00000778    "PRR0.TMP" */
-    0x5F,0x70,0x50,0x52,0x51,0x33,0x60,0xA0,  /* 00000780    "_pPRQ3`." */
-    0x0C,0x95,0x60,0x0A,0x80,0x79,0x01,0x60,  /* 00000788    "..`..y.`" */
-    0x54,0x4D,0x50,0x5F,0xA1,0x07,0x70,0x00,  /* 00000790    "TMP_..p." */
-    0x54,0x4D,0x50,0x5F,0xA4,0x50,0x52,0x52,  /* 00000798    "TMP_.PRR" */
-    0x30,0x14,0x1B,0x5F,0x53,0x52,0x53,0x01,  /* 000007A0    "0.._SRS." */
-    0x8B,0x68,0x01,0x54,0x4D,0x50,0x5F,0x82,  /* 000007A8    ".h.TMP_." */
-    0x54,0x4D,0x50,0x5F,0x60,0x76,0x60,0x70,  /* 000007B0    "TMP_`v`p" */
-    0x60,0x50,0x52,0x51,0x33,0x08,0x5F,0x53,  /* 000007B8    "`PRQ3._S" */
-    0x35,0x5F,0x12,0x06,0x04,0x00,0x00,0x00,  /* 000007C0    "5_......" */
-    0x00,
+    0x09,0x11,0x06,0x20,0x08,0x5F,0x53,0x33,  /* 00000020    "... ._S3" */
+    0x5F,0x12,0x06,0x04,0x01,0x01,0x00,0x00,  /* 00000028    "_......." */
+    0x08,0x5F,0x53,0x34,0x5F,0x12,0x06,0x04,  /* 00000030    "._S4_..." */
+    0x00,0x00,0x00,0x00,0x08,0x5F,0x53,0x35,  /* 00000038    "....._S5" */
+    0x5F,0x12,0x06,0x04,0x00,0x00,0x00,0x00,  /* 00000040    "_......." */
+    0x10,0x1C,0x5C,0x00,0x5B,0x80,0x44,0x42,  /* 00000048    "..\.[.DB" */
+    0x47,0x5F,0x01,0x0B,0x44,0xB0,0x0A,0x04,  /* 00000050    "G_..D..." */
+    0x5B,0x81,0x0B,0x44,0x42,0x47,0x5F,0x03,  /* 00000058    "[..DBG_." */
+    0x44,0x42,0x47,0x4C,0x20,0x10,0x49,0x1F,  /* 00000060    "DBGL .I." */
+    0x5F,0x53,0x42,0x5F,0x5B,0x82,0x41,0x1F,  /* 00000068    "_SB_[.A." */
+    0x50,0x43,0x49,0x30,0x08,0x5F,0x48,0x49,  /* 00000070    "PCI0._HI" */
+    0x44,0x0C,0x41,0xD0,0x0A,0x03,0x08,0x5F,  /* 00000078    "D.A...._" */
+    0x41,0x44,0x52,0x00,0x08,0x5F,0x55,0x49,  /* 00000080    "ADR.._UI" */
+    0x44,0x01,0x08,0x5F,0x50,0x52,0x54,0x12,  /* 00000088    "D.._PRT." */
+    0x47,0x15,0x18,0x12,0x0B,0x04,0x0B,0xFF,  /* 00000090    "G......." */
+    0xFF,0x00,0x4C,0x4E,0x4B,0x44,0x00,0x12,  /* 00000098    "..LNKD.." */
+    0x0B,0x04,0x0B,0xFF,0xFF,0x01,0x4C,0x4E,  /* 000000A0    "......LN" */
+    0x4B,0x41,0x00,0x12,0x0C,0x04,0x0B,0xFF,  /* 000000A8    "KA......" */
+    0xFF,0x0A,0x02,0x4C,0x4E,0x4B,0x42,0x00,  /* 000000B0    "...LNKB." */
+    0x12,0x0C,0x04,0x0B,0xFF,0xFF,0x0A,0x03,  /* 000000B8    "........" */
+    0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04,  /* 000000C0    "LNKC...." */
+    0x0C,0xFF,0xFF,0x01,0x00,0x00,0x4C,0x4E,  /* 000000C8    "......LN" */
+    0x4B,0x41,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 000000D0    "KA......" */
+    0xFF,0x01,0x00,0x01,0x4C,0x4E,0x4B,0x42,  /* 000000D8    "....LNKB" */
+    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x01,  /* 000000E0    "........" */
+    0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x43,0x00,  /* 000000E8    "...LNKC." */
+    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x01,0x00,  /* 000000F0    "........" */
+    0x0A,0x03,0x4C,0x4E,0x4B,0x44,0x00,0x12,  /* 000000F8    "..LNKD.." */
+    0x0D,0x04,0x0C,0xFF,0xFF,0x02,0x00,0x00,  /* 00000100    "........" */
+    0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0D,0x04,  /* 00000108    "LNKB...." */
+    0x0C,0xFF,0xFF,0x02,0x00,0x01,0x4C,0x4E,  /* 00000110    "......LN" */
+    0x4B,0x43,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 00000118    "KC......" */
+    0xFF,0x02,0x00,0x0A,0x02,0x4C,0x4E,0x4B,  /* 00000120    ".....LNK" */
+    0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 00000128    "D......." */
+    0x02,0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x41,  /* 00000130    "....LNKA" */
+    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x03,  /* 00000138    "........" */
+    0x00,0x00,0x4C,0x4E,0x4B,0x43,0x00,0x12,  /* 00000140    "..LNKC.." */
+    0x0D,0x04,0x0C,0xFF,0xFF,0x03,0x00,0x01,  /* 00000148    "........" */
+    0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0E,0x04,  /* 00000150    "LNKD...." */
+    0x0C,0xFF,0xFF,0x03,0x00,0x0A,0x02,0x4C,  /* 00000158    ".......L" */
+    0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04,0x0C,  /* 00000160    "NKA....." */
+    0xFF,0xFF,0x03,0x00,0x0A,0x03,0x4C,0x4E,  /* 00000168    "......LN" */
+    0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 00000170    "KB......" */
+    0xFF,0x04,0x00,0x00,0x4C,0x4E,0x4B,0x44,  /* 00000178    "....LNKD" */
+    0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x04,  /* 00000180    "........" */
+    0x00,0x01,0x4C,0x4E,0x4B,0x41,0x00,0x12,  /* 00000188    "..LNKA.." */
+    0x0E,0x04,0x0C,0xFF,0xFF,0x04,0x00,0x0A,  /* 00000190    "........" */
+    0x02,0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0E,  /* 00000198    ".LNKB..." */
+    0x04,0x0C,0xFF,0xFF,0x04,0x00,0x0A,0x03,  /* 000001A0    "........" */
+    0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,0x04,  /* 000001A8    "LNKC...." */
+    0x0C,0xFF,0xFF,0x05,0x00,0x00,0x4C,0x4E,  /* 000001B0    "......LN" */
+    0x4B,0x41,0x00,0x12,0x0D,0x04,0x0C,0xFF,  /* 000001B8    "KA......" */
+    0xFF,0x05,0x00,0x01,0x4C,0x4E,0x4B,0x42,  /* 000001C0    "....LNKB" */
+    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x05,  /* 000001C8    "........" */
+    0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x43,0x00,  /* 000001D0    "...LNKC." */
+    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x05,0x00,  /* 000001D8    "........" */
+    0x0A,0x03,0x4C,0x4E,0x4B,0x44,0x00,0x08,  /* 000001E0    "..LNKD.." */
+    0x5F,0x43,0x52,0x53,0x11,0x42,0x07,0x0A,  /* 000001E8    "_CRS.B.." */
+    0x6E,0x88,0x0D,0x00,0x02,0x0C,0x00,0x00,  /* 000001F0    "n......." */
+    0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,  /* 000001F8    "........" */
+    0x01,0x47,0x01,0xF8,0x0C,0xF8,0x0C,0x01,  /* 00000200    ".G......" */
+    0x08,0x88,0x0D,0x00,0x01,0x0C,0x03,0x00,  /* 00000208    "........" */
+    0x00,0x00,0x00,0xF7,0x0C,0x00,0x00,0xF8,  /* 00000210    "........" */
+    0x0C,0x88,0x0D,0x00,0x01,0x0C,0x03,0x00,  /* 00000218    "........" */
+    0x00,0x00,0x0D,0xFF,0xFF,0x00,0x00,0x00,  /* 00000220    "........" */
+    0xF3,0x87,0x17,0x00,0x00,0x0C,0x03,0x00,  /* 00000228    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x0A,0x00,0xFF,  /* 00000230    "........" */
+    0xFF,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000238    "........" */
+    0x00,0x02,0x00,0x87,0x17,0x00,0x00,0x0C,  /* 00000240    "........" */
+    0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000248    "........" */
+    0xE0,0xFF,0xFF,0xBF,0xFE,0x00,0x00,0x00,  /* 00000250    "........" */
+    0x00,0x00,0x00,0xC0,0x1E,0x79,0x00,0x10,  /* 00000258    ".....y.." */
+    0x41,0x29,0x2E,0x5F,0x53,0x42,0x5F,0x50,  /* 00000260    "A)._SB_P" */
+    0x43,0x49,0x30,0x5B,0x82,0x42,0x23,0x49,  /* 00000268    "CI0[.B#I" */
+    0x53,0x41,0x5F,0x08,0x5F,0x41,0x44,0x52,  /* 00000270    "SA_._ADR" */
+    0x0C,0x00,0x00,0x01,0x00,0x5B,0x80,0x50,  /* 00000278    ".....[.P" */
+    0x34,0x30,0x43,0x02,0x0A,0x60,0x0A,0x04,  /* 00000280    "40C..`.." */
+    0x5B,0x82,0x2D,0x52,0x54,0x43,0x5F,0x08,  /* 00000288    "[.-RTC_." */
+    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x0B,  /* 00000290    "_HID.A.." */
+    0x00,0x08,0x5F,0x43,0x52,0x53,0x11,0x18,  /* 00000298    ".._CRS.." */
+    0x0A,0x15,0x47,0x01,0x70,0x00,0x70,0x00,  /* 000002A0    "..G.p.p." */
+    0x10,0x02,0x22,0x00,0x01,0x47,0x01,0x72,  /* 000002A8    ".."..G.r" */
+    0x00,0x72,0x00,0x02,0x06,0x79,0x00,0x5B,  /* 000002B0    ".r...y.[" */
+    0x82,0x44,0x04,0x4B,0x42,0x44,0x5F,0x08,  /* 000002B8    ".D.KBD_." */
+    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x03,  /* 000002C0    "_HID.A.." */
+    0x03,0x14,0x09,0x5F,0x53,0x54,0x41,0x00,  /* 000002C8    "..._STA." */
+    0xA4,0x0A,0x0F,0x14,0x29,0x5F,0x43,0x52,  /* 000002D0    "....)_CR" */
+    0x53,0x00,0x08,0x54,0x4D,0x50,0x5F,0x11,  /* 000002D8    "S..TMP_." */
+    0x18,0x0A,0x15,0x47,0x01,0x60,0x00,0x60,  /* 000002E0    "...G.`.`" */
+    0x00,0x01,0x01,0x47,0x01,0x64,0x00,0x64,  /* 000002E8    "...G.d.d" */
+    0x00,0x01,0x01,0x22,0x02,0x00,0x79,0x00,  /* 000002F0    "..."..y." */
+    0xA4,0x54,0x4D,0x50,0x5F,0x5B,0x82,0x33,  /* 000002F8    ".TMP_[.3" */
+    0x4D,0x4F,0x55,0x5F,0x08,0x5F,0x48,0x49,  /* 00000300    "MOU_._HI" */
+    0x44,0x0C,0x41,0xD0,0x0F,0x13,0x14,0x09,  /* 00000308    "D.A....." */
+    0x5F,0x53,0x54,0x41,0x00,0xA4,0x0A,0x0F,  /* 00000310    "_STA...." */
+    0x14,0x19,0x5F,0x43,0x52,0x53,0x00,0x08,  /* 00000318    ".._CRS.." */
+    0x54,0x4D,0x50,0x5F,0x11,0x08,0x0A,0x05,  /* 00000320    "TMP_...." */
+    0x22,0x00,0x10,0x79,0x00,0xA4,0x54,0x4D,  /* 00000328    ""..y..TM" */
+    0x50,0x5F,0x5B,0x82,0x47,0x04,0x46,0x44,  /* 00000330    "P_[.G.FD" */
+    0x43,0x30,0x08,0x5F,0x48,0x49,0x44,0x0C,  /* 00000338    "C0._HID." */
+    0x41,0xD0,0x07,0x00,0x14,0x09,0x5F,0x53,  /* 00000340    "A....._S" */
+    0x54,0x41,0x00,0xA4,0x0A,0x0F,0x14,0x2C,  /* 00000348    "TA.....," */
+    0x5F,0x43,0x52,0x53,0x00,0x08,0x42,0x55,  /* 00000350    "_CRS..BU" */
+    0x46,0x30,0x11,0x1B,0x0A,0x18,0x47,0x01,  /* 00000358    "F0....G." */
+    0xF2,0x03,0xF2,0x03,0x00,0x04,0x47,0x01,  /* 00000360    "......G." */
+    0xF7,0x03,0xF7,0x03,0x00,0x01,0x22,0x40,  /* 00000368    "......"@" */
+    0x00,0x2A,0x04,0x00,0x79,0x00,0xA4,0x42,  /* 00000370    ".*..y..B" */
+    0x55,0x46,0x30,0x5B,0x82,0x4B,0x05,0x4C,  /* 00000378    "UF0[.K.L" */
+    0x50,0x54,0x5F,0x08,0x5F,0x48,0x49,0x44,  /* 00000380    "PT_._HID" */
+    0x0C,0x41,0xD0,0x04,0x00,0x14,0x28,0x5F,  /* 00000388    ".A....(_" */
+    0x53,0x54,0x41,0x00,0x70,0x5E,0x5E,0x5E,  /* 00000390    "STA.p^^^" */
+    0x2E,0x50,0x58,0x31,0x33,0x44,0x52,0x53,  /* 00000398    ".PX13DRS" */
+    0x41,0x60,0x7B,0x60,0x0C,0x00,0x00,0x00,  /* 000003A0    "A`{`...." */
+    0x80,0x60,0xA0,0x06,0x93,0x60,0x00,0xA4,  /* 000003A8    ".`...`.." */
+    0x00,0xA1,0x04,0xA4,0x0A,0x0F,0x14,0x21,  /* 000003B0    ".......!" */
+    0x5F,0x43,0x52,0x53,0x00,0x08,0x42,0x55,  /* 000003B8    "_CRS..BU" */
+    0x46,0x30,0x11,0x10,0x0A,0x0D,0x47,0x01,  /* 000003C0    "F0....G." */
+    0x78,0x03,0x78,0x03,0x08,0x08,0x22,0x80,  /* 000003C8    "x.x..."." */
+    0x00,0x79,0x00,0xA4,0x42,0x55,0x46,0x30,  /* 000003D0    ".y..BUF0" */
+    0x5B,0x82,0x41,0x06,0x43,0x4F,0x4D,0x31,  /* 000003D8    "[.A.COM1" */
+    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 000003E0    "._HID.A." */
+    0x05,0x01,0x08,0x5F,0x55,0x49,0x44,0x01,  /* 000003E8    "..._UID." */
+    0x14,0x28,0x5F,0x53,0x54,0x41,0x00,0x70,  /* 000003F0    ".(_STA.p" */
+    0x5E,0x5E,0x5E,0x2E,0x50,0x58,0x31,0x33,  /* 000003F8    "^^^.PX13" */
+    0x44,0x52,0x53,0x43,0x60,0x7B,0x60,0x0C,  /* 00000400    "DRSC`{`." */
+    0x00,0x00,0x00,0x08,0x60,0xA0,0x06,0x93,  /* 00000408    "....`..." */
+    0x60,0x00,0xA4,0x00,0xA1,0x04,0xA4,0x0A,  /* 00000410    "`......." */
+    0x0F,0x14,0x21,0x5F,0x43,0x52,0x53,0x00,  /* 00000418    "..!_CRS." */
+    0x08,0x42,0x55,0x46,0x30,0x11,0x10,0x0A,  /* 00000420    ".BUF0..." */
+    0x0D,0x47,0x01,0xF8,0x03,0xF8,0x03,0x00,  /* 00000428    ".G......" */
+    0x08,0x22,0x10,0x00,0x79,0x00,0xA4,0x42,  /* 00000430    "."..y..B" */
+    0x55,0x46,0x30,0x5B,0x82,0x42,0x06,0x43,  /* 00000438    "UF0[.B.C" */
+    0x4F,0x4D,0x32,0x08,0x5F,0x48,0x49,0x44,  /* 00000440    "OM2._HID" */
+    0x0C,0x41,0xD0,0x05,0x01,0x08,0x5F,0x55,  /* 00000448    ".A...._U" */
+    0x49,0x44,0x0A,0x02,0x14,0x28,0x5F,0x53,  /* 00000450    "ID...(_S" */
+    0x54,0x41,0x00,0x70,0x5E,0x5E,0x5E,0x2E,  /* 00000458    "TA.p^^^." */
+    0x50,0x58,0x31,0x33,0x44,0x52,0x53,0x43,  /* 00000460    "PX13DRSC" */
+    0x60,0x7B,0x60,0x0C,0x00,0x00,0x00,0x80,  /* 00000468    "`{`....." */
+    0x60,0xA0,0x06,0x93,0x60,0x00,0xA4,0x00,  /* 00000470    "`...`..." */
+    0xA1,0x04,0xA4,0x0A,0x0F,0x14,0x21,0x5F,  /* 00000478    "......!_" */
+    0x43,0x52,0x53,0x00,0x08,0x42,0x55,0x46,  /* 00000480    "CRS..BUF" */
+    0x30,0x11,0x10,0x0A,0x0D,0x47,0x01,0xF8,  /* 00000488    "0....G.." */
+    0x02,0xF8,0x02,0x00,0x08,0x22,0x08,0x00,  /* 00000490    ".....".." */
+    0x79,0x00,0xA4,0x42,0x55,0x46,0x30,0x5B,  /* 00000498    "y..BUF0[" */
+    0x82,0x40,0x05,0x50,0x58,0x31,0x33,0x08,  /* 000004A0    "address@hidden" 
*/
+    0x5F,0x41,0x44,0x52,0x0C,0x03,0x00,0x01,  /* 000004A8    "_ADR...." */
+    0x00,0x5B,0x80,0x50,0x31,0x33,0x43,0x02,  /* 000004B0    ".[.P13C." */
+    0x0A,0x5C,0x0A,0x24,0x5B,0x81,0x33,0x50,  /* 000004B8    ".\.$[.3P" */
+    0x31,0x33,0x43,0x03,0x44,0x52,0x53,0x41,  /* 000004C0    "13C.DRSA" */
+    0x20,0x44,0x52,0x53,0x42,0x20,0x44,0x52,  /* 000004C8    " DRSB DR" */
+    0x53,0x43,0x20,0x44,0x52,0x53,0x45,0x20,  /* 000004D0    "SC DRSE " */
+    0x44,0x52,0x53,0x46,0x20,0x44,0x52,0x53,  /* 000004D8    "DRSF DRS" */
+    0x47,0x20,0x44,0x52,0x53,0x48,0x20,0x44,  /* 000004E0    "G DRSH D" */
+    0x52,0x53,0x49,0x20,0x44,0x52,0x53,0x4A,  /* 000004E8    "RSI DRSJ" */
+    0x20,0x10,0x4F,0x2E,0x5F,0x53,0x42,0x5F,  /* 000004F0    " .O._SB_" */
+    0x5B,0x81,0x24,0x2F,0x03,0x50,0x43,0x49,  /* 000004F8    "[.$/.PCI" */
+    0x30,0x49,0x53,0x41,0x5F,0x50,0x34,0x30,  /* 00000500    "0ISA_P40" */
+    0x43,0x01,0x50,0x52,0x51,0x30,0x08,0x50,  /* 00000508    "C.PRQ0.P" */
+    0x52,0x51,0x31,0x08,0x50,0x52,0x51,0x32,  /* 00000510    "RQ1.PRQ2" */
+    0x08,0x50,0x52,0x51,0x33,0x08,0x5B,0x82,  /* 00000518    ".PRQ3.[." */
+    0x4E,0x0A,0x4C,0x4E,0x4B,0x41,0x08,0x5F,  /* 00000520    "N.LNKA._" */
+    0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,0x0F,  /* 00000528    "HID.A..." */
+    0x08,0x5F,0x55,0x49,0x44,0x01,0x08,0x5F,  /* 00000530    "._UID.._" */
+    0x50,0x52,0x53,0x11,0x09,0x0A,0x06,0x23,  /* 00000538    "PRS....#" */
+    0xF8,0x1E,0x18,0x79,0x00,0x14,0x1A,0x5F,  /* 00000540    "...y..._" */
+    0x53,0x54,0x41,0x00,0x70,0x0A,0x0B,0x60,  /* 00000548    "STA.p..`" */
+    0xA0,0x0D,0x7B,0x0A,0x80,0x50,0x52,0x51,  /* 00000550    "..{..PRQ" */
+    0x30,0x61,0x70,0x0A,0x09,0x60,0xA4,0x60,  /* 00000558    "0ap..`.`" */
+    0x14,0x11,0x5F,0x44,0x49,0x53,0x00,0x7D,  /* 00000560    ".._DIS.}" */
+    0x50,0x52,0x51,0x30,0x0A,0x80,0x50,0x52,  /* 00000568    "PRQ0..PR" */
+    0x51,0x30,0x14,0x3F,0x5F,0x43,0x52,0x53,  /* 00000570    "Q0.?_CRS" */
+    0x00,0x08,0x50,0x52,0x52,0x30,0x11,0x09,  /* 00000578    "..PRR0.." */
+    0x0A,0x06,0x23,0x02,0x00,0x18,0x79,0x00,  /* 00000580    "..#...y." */
+    0x8B,0x50,0x52,0x52,0x30,0x01,0x54,0x4D,  /* 00000588    ".PRR0.TM" */
+    0x50,0x5F,0x70,0x50,0x52,0x51,0x30,0x60,  /* 00000590    "P_pPRQ0`" */
+    0xA0,0x0C,0x95,0x60,0x0A,0x80,0x79,0x01,  /* 00000598    "...`..y." */
+    0x60,0x54,0x4D,0x50,0x5F,0xA1,0x07,0x70,  /* 000005A0    "`TMP_..p" */
+    0x00,0x54,0x4D,0x50,0x5F,0xA4,0x50,0x52,  /* 000005A8    ".TMP_.PR" */
+    0x52,0x30,0x14,0x1B,0x5F,0x53,0x52,0x53,  /* 000005B0    "R0.._SRS" */
+    0x01,0x8B,0x68,0x01,0x54,0x4D,0x50,0x5F,  /* 000005B8    "..h.TMP_" */
+    0x82,0x54,0x4D,0x50,0x5F,0x60,0x76,0x60,  /* 000005C0    ".TMP_`v`" */
+    0x70,0x60,0x50,0x52,0x51,0x30,0x5B,0x82,  /* 000005C8    "p`PRQ0[." */
+    0x4F,0x0A,0x4C,0x4E,0x4B,0x42,0x08,0x5F,  /* 000005D0    "O.LNKB._" */
+    0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,0x0F,  /* 000005D8    "HID.A..." */
+    0x08,0x5F,0x55,0x49,0x44,0x0A,0x02,0x08,  /* 000005E0    "._UID..." */
+    0x5F,0x50,0x52,0x53,0x11,0x09,0x0A,0x06,  /* 000005E8    "_PRS...." */
+    0x23,0xF8,0x1E,0x18,0x79,0x00,0x14,0x1A,  /* 000005F0    "#...y..." */
+    0x5F,0x53,0x54,0x41,0x00,0x70,0x0A,0x0B,  /* 000005F8    "_STA.p.." */
+    0x60,0xA0,0x0D,0x7B,0x0A,0x80,0x50,0x52,  /* 00000600    "`..{..PR" */
+    0x51,0x31,0x61,0x70,0x0A,0x09,0x60,0xA4,  /* 00000608    "Q1ap..`." */
+    0x60,0x14,0x11,0x5F,0x44,0x49,0x53,0x00,  /* 00000610    "`.._DIS." */
+    0x7D,0x50,0x52,0x51,0x31,0x0A,0x80,0x50,  /* 00000618    "}PRQ1..P" */
+    0x52,0x51,0x31,0x14,0x3F,0x5F,0x43,0x52,  /* 00000620    "RQ1.?_CR" */
+    0x53,0x00,0x08,0x50,0x52,0x52,0x30,0x11,  /* 00000628    "S..PRR0." */
+    0x09,0x0A,0x06,0x23,0x02,0x00,0x18,0x79,  /* 00000630    "...#...y" */
+    0x00,0x8B,0x50,0x52,0x52,0x30,0x01,0x54,  /* 00000638    "..PRR0.T" */
+    0x4D,0x50,0x5F,0x70,0x50,0x52,0x51,0x31,  /* 00000640    "MP_pPRQ1" */
+    0x60,0xA0,0x0C,0x95,0x60,0x0A,0x80,0x79,  /* 00000648    "`...`..y" */
+    0x01,0x60,0x54,0x4D,0x50,0x5F,0xA1,0x07,  /* 00000650    ".`TMP_.." */
+    0x70,0x00,0x54,0x4D,0x50,0x5F,0xA4,0x50,  /* 00000658    "p.TMP_.P" */
+    0x52,0x52,0x30,0x14,0x1B,0x5F,0x53,0x52,  /* 00000660    "RR0.._SR" */
+    0x53,0x01,0x8B,0x68,0x01,0x54,0x4D,0x50,  /* 00000668    "S..h.TMP" */
+    0x5F,0x82,0x54,0x4D,0x50,0x5F,0x60,0x76,  /* 00000670    "_.TMP_`v" */
+    0x60,0x70,0x60,0x50,0x52,0x51,0x31,0x5B,  /* 00000678    "`p`PRQ1[" */
+    0x82,0x4F,0x0A,0x4C,0x4E,0x4B,0x43,0x08,  /* 00000680    ".O.LNKC." */
+    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x0C,  /* 00000688    "_HID.A.." */
+    0x0F,0x08,0x5F,0x55,0x49,0x44,0x0A,0x03,  /* 00000690    ".._UID.." */
+    0x08,0x5F,0x50,0x52,0x53,0x11,0x09,0x0A,  /* 00000698    "._PRS..." */
+    0x06,0x23,0xF8,0x1E,0x18,0x79,0x00,0x14,  /* 000006A0    ".#...y.." */
+    0x1A,0x5F,0x53,0x54,0x41,0x00,0x70,0x0A,  /* 000006A8    "._STA.p." */
+    0x0B,0x60,0xA0,0x0D,0x7B,0x0A,0x80,0x50,  /* 000006B0    ".`..{..P" */
+    0x52,0x51,0x32,0x61,0x70,0x0A,0x09,0x60,  /* 000006B8    "RQ2ap..`" */
+    0xA4,0x60,0x14,0x11,0x5F,0x44,0x49,0x53,  /* 000006C0    ".`.._DIS" */
+    0x00,0x7D,0x50,0x52,0x51,0x32,0x0A,0x80,  /* 000006C8    ".}PRQ2.." */
+    0x50,0x52,0x51,0x32,0x14,0x3F,0x5F,0x43,  /* 000006D0    "PRQ2.?_C" */
+    0x52,0x53,0x00,0x08,0x50,0x52,0x52,0x30,  /* 000006D8    "RS..PRR0" */
+    0x11,0x09,0x0A,0x06,0x23,0x02,0x00,0x18,  /* 000006E0    "....#..." */
+    0x79,0x00,0x8B,0x50,0x52,0x52,0x30,0x01,  /* 000006E8    "y..PRR0." */
+    0x54,0x4D,0x50,0x5F,0x70,0x50,0x52,0x51,  /* 000006F0    "TMP_pPRQ" */
+    0x32,0x60,0xA0,0x0C,0x95,0x60,0x0A,0x80,  /* 000006F8    "2`...`.." */
+    0x79,0x01,0x60,0x54,0x4D,0x50,0x5F,0xA1,  /* 00000700    "y.`TMP_." */
+    0x07,0x70,0x00,0x54,0x4D,0x50,0x5F,0xA4,  /* 00000708    ".p.TMP_." */
+    0x50,0x52,0x52,0x30,0x14,0x1B,0x5F,0x53,  /* 00000710    "PRR0.._S" */
+    0x52,0x53,0x01,0x8B,0x68,0x01,0x54,0x4D,  /* 00000718    "RS..h.TM" */
+    0x50,0x5F,0x82,0x54,0x4D,0x50,0x5F,0x60,  /* 00000720    "P_.TMP_`" */
+    0x76,0x60,0x70,0x60,0x50,0x52,0x51,0x32,  /* 00000728    "v`p`PRQ2" */
+    0x5B,0x82,0x4F,0x0A,0x4C,0x4E,0x4B,0x44,  /* 00000730    "[.O.LNKD" */
+    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 00000738    "._HID.A." */
+    0x0C,0x0F,0x08,0x5F,0x55,0x49,0x44,0x0A,  /* 00000740    "..._UID." */
+    0x04,0x08,0x5F,0x50,0x52,0x53,0x11,0x09,  /* 00000748    ".._PRS.." */
+    0x0A,0x06,0x23,0xF8,0x1E,0x18,0x79,0x00,  /* 00000750    "..#...y." */
+    0x14,0x1A,0x5F,0x53,0x54,0x41,0x00,0x70,  /* 00000758    ".._STA.p" */
+    0x0A,0x0B,0x60,0xA0,0x0D,0x7B,0x0A,0x80,  /* 00000760    "..`..{.." */
+    0x50,0x52,0x51,0x33,0x61,0x70,0x0A,0x09,  /* 00000768    "PRQ3ap.." */
+    0x60,0xA4,0x60,0x14,0x11,0x5F,0x44,0x49,  /* 00000770    "`.`.._DI" */
+    0x53,0x00,0x7D,0x50,0x52,0x51,0x33,0x0A,  /* 00000778    "S.}PRQ3." */
+    0x80,0x50,0x52,0x51,0x33,0x14,0x3F,0x5F,  /* 00000780    ".PRQ3.?_" */
+    0x43,0x52,0x53,0x00,0x08,0x50,0x52,0x52,  /* 00000788    "CRS..PRR" */
+    0x30,0x11,0x09,0x0A,0x06,0x23,0x02,0x00,  /* 00000790    "0....#.." */
+    0x18,0x79,0x00,0x8B,0x50,0x52,0x52,0x30,  /* 00000798    ".y..PRR0" */
+    0x01,0x54,0x4D,0x50,0x5F,0x70,0x50,0x52,  /* 000007A0    ".TMP_pPR" */
+    0x51,0x33,0x60,0xA0,0x0C,0x95,0x60,0x0A,  /* 000007A8    "Q3`...`." */
+    0x80,0x79,0x01,0x60,0x54,0x4D,0x50,0x5F,  /* 000007B0    ".y.`TMP_" */
+    0xA1,0x07,0x70,0x00,0x54,0x4D,0x50,0x5F,  /* 000007B8    "..p.TMP_" */
+    0xA4,0x50,0x52,0x52,0x30,0x14,0x1B,0x5F,  /* 000007C0    ".PRR0.._" */
+    0x53,0x52,0x53,0x01,0x8B,0x68,0x01,0x54,  /* 000007C8    "SRS..h.T" */
+    0x4D,0x50,0x5F,0x82,0x54,0x4D,0x50,0x5F,  /* 000007D0    "MP_.TMP_" */
+    0x60,0x76,0x60,0x70,0x60,0x50,0x52,0x51,  /* 000007D8    "`v`p`PRQ" */
+    0x33,
 };
diff --git a/bios/rombios.c b/bios/rombios.c
index 88eac04..46996fa 100644
--- a/bios/rombios.c
+++ b/bios/rombios.c
@@ -2198,6 +2198,31 @@ debugger_off()
   outb(0xfedc, 0x00);
 }
 
+void
+s3_resume()
+{
+    Bit32u s3_wakeup_vector;
+    Bit8u s3_resume_flag;
+
+    s3_resume_flag = read_byte(0x40, 0xb0);
+    s3_wakeup_vector = read_dword(0x40, 0xb2);
+
+    BX_INFO("S3 resume called %x 0x%lx\n", s3_resume_flag, s3_wakeup_vector);
+    if (s3_resume_flag != 0xFE || !s3_wakeup_vector)
+           return;
+
+    write_byte(0x40, 0xb0, 0);
+
+    /* setup wakeup vector */
+    write_word(0x40, 0xb6, (s3_wakeup_vector & 0xF)); /* IP */
+    write_word(0x40, 0xb8, (s3_wakeup_vector >> 4)); /* CS */
+
+    BX_INFO("S3 resume jump to %x:%x\n", *(Bit16u*)0x04b8, *(Bit16u*)0x04b6);
+ASM_START
+    jmpf [0x04b6]
+ASM_END
+}
+
 #if BX_USE_ATADRV
 
 // ---------------------------------------------------------------------------
@@ -10005,6 +10030,10 @@ rombios32_05:
   ;; init the stack pointer
   mov esp, #0x00080000
 
+  ;; pass pointer to s3_resume_flag and s3_resume_vector to rombios32
+  push #0x04b0
+  push #0x04b2
+
   ;; call rombios32 code
   mov eax, #0x00040000
   call eax
@@ -10383,6 +10412,9 @@ normal_post:
   rep
     stosw
 
+  ;; Save shutdown status
+  mov 0x04b0, bl
+
   call _log_bios_start
 
   ;; set all interrupts to default handler
@@ -10593,6 +10625,8 @@ post_default_ints:
   mov  ax, #0xe000
   call rom_scan
 
+  call _s3_resume
+
 #if BX_ELTORITO_BOOT
   call _interactive_bootkey
 #endif // BX_ELTORITO_BOOT
diff --git a/bios/rombios32.c b/bios/rombios32.c
index f0daf15..ff84f80 100644
--- a/bios/rombios32.c
+++ b/bios/rombios32.c
@@ -180,6 +180,20 @@ void *memmove(void *d1, const void *s1, size_t len)
     return d1;
 }
 
+int memcmp(const void *s1, const void *s2, size_t len)
+{
+       const int8_t *p1 = s1;
+       const int8_t *p2 = s2;
+
+       while (len--) {
+               int r = *p1++ - *p2++;
+               if(r)
+                       return r;
+       }
+
+       return 0;
+}
+
 size_t strlen(const char *s)
 {
     const char *s1;
@@ -644,7 +658,7 @@ static void bios_shadow_init(PCIDevice *d)
 {
     int v;
 
-    if (find_bios_table_area() < 0)
+    if (bios_table_cur_addr == 0)
         return;
 
     /* remap the BIOS to shadow RAM an keep it read/write while we
@@ -1461,7 +1475,7 @@ void acpi_bios_init(void)
     memset(facs, 0, sizeof(*facs));
     memcpy(facs->signature, "FACS", 4);
     facs->length = cpu_to_le32(sizeof(*facs));
-
+    BX_INFO("Firmware waking vector %p\n", &facs->firmware_waking_vector);
     /* DSDT */
     memcpy(dsdt, AmlCode, sizeof(AmlCode));
 
@@ -2011,9 +2025,40 @@ void smbios_init(void)
     BX_INFO("SMBIOS table addr=0x%08lx\n", (unsigned long)start);
 }
 
-void rombios32_init(void)
+static uint32_t find_resume_vector(void)
 {
-    BX_INFO("Starting rombios32\n");
+    unsigned long addr;
+
+    if (bios_table_cur_addr == 0)
+        return 0;
+
+    for (addr = bios_table_cur_addr; addr < bios_table_end_addr; addr++) {
+        if (!memcmp((void*)addr, "RSD PTR ", 8)) {
+            struct rsdp_descriptor *rsdp = (void*)addr;
+            struct rsdt_descriptor_rev1 *rsdt = 
(void*)rsdp->rsdt_physical_address;
+            struct fadt_descriptor_rev1 *fadt = 
(void*)rsdt->table_offset_entry[0];
+            struct facs_descriptor_rev1 *facs = (void*)fadt->firmware_ctrl;
+            return facs->firmware_waking_vector;
+        }
+    }
+
+    return 0;
+}
+
+static void find_440fx(PCIDevice *d)
+{
+    uint16_t vendor_id, device_id;
+
+    vendor_id = pci_config_readw(d, PCI_VENDOR_ID);
+    device_id = pci_config_readw(d, PCI_DEVICE_ID);
+
+    if (vendor_id == 0x8086 && device_id == 0x1237)
+        i440_pcidev = *d;
+}
+
+void rombios32_init(uint32_t *s3_resume_vector, uint8_t *shutdown_flag)
+{
+    BX_INFO("Starting rombios32 %p %p %x\n", s3_resume_vector, shutdown_flag, 
*shutdown_flag);
 
 #ifdef BX_QEMU
     qemu_cfg_port = qemu_cfg_port_probe();
@@ -2025,6 +2070,24 @@ void rombios32_init(void)
 
     smp_probe();
 
+    if (find_bios_table_area() < 0)
+        return;
+
+    if (*shutdown_flag == 0xfe) {
+        *s3_resume_vector = find_resume_vector();
+        if (!*s3_resume_vector) {
+               BX_INFO("This is S3 resume but wakeup vector is NULL\n");
+        } else {
+               BX_INFO("S3 resume vector %p\n", *s3_resume_vector);
+            /* redirect bios read access to RAM */
+            pci_for_each_device(find_440fx);
+            bios_lock_shadow_ram(); /* bios is already copied */
+            return;
+        }
+    }
+
+    uuid_probe();
+
     pci_bios_init();
 
     if (bios_table_cur_addr != 0) {





reply via email to

[Prev in Thread] Current Thread [Next in Thread]