qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/6] Support for S3 ACPI state (suspend to memory) in BIOS
@ 2008-10-26 14:44 Gleb Natapov
  2008-10-26 14:44 ` [Qemu-devel] [PATCH 1/6] Move PIC initialization out of line to save space in post code area Gleb Natapov
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: Gleb Natapov @ 2008-10-26 14:44 UTC (permalink / raw)
  To: bochs-developers; +Cc: qemu-devel

Hello,

This patch series adds S3 (suspend to RAM) ACPI state to BIOS. Most
changes concern themselves with preventing BIOS from using memory
available to an OS.

---

Gleb Natapov (6):
      Don't power down vga card on entering S3 state.
      Don't use unreserved memory in BIOS.
      Execute rombios32 code from rom address 0xe0000.
      Disable init of SMM.
      Add S3 state to DSDT. Handle resume event in the BIOS.
      Move PIC initialization out of line to save space in post code area.


 bios/Makefile.in      |    1 
 bios/acpi-dsdt.dsl    |   50 ++++-
 bios/acpi-dsdt.hex    |  510 +++++++++++++++++++++++++------------------------
 bios/rombios.c        |  105 ++++++----
 bios/rombios.h        |    2 
 bios/rombios32.c      |   75 +++++++
 bios/rombios32.ld     |    8 -
 bios/rombios32start.S |    9 +
 8 files changed, 447 insertions(+), 313 deletions(-)
 mode change 100644 => 100755 bios/acpi-dsdt.dsl
 mode change 100644 => 100755 bios/rombios32.c


-- 
        Gleb.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Qemu-devel] [PATCH 1/6] Move PIC initialization out of line to save space in post code area.
  2008-10-26 14:44 [Qemu-devel] [PATCH 0/6] Support for S3 ACPI state (suspend to memory) in BIOS Gleb Natapov
@ 2008-10-26 14:44 ` Gleb Natapov
  2008-10-26 14:44 ` [Qemu-devel] [PATCH 2/6] Add S3 state to DSDT. Handle resume event in the BIOS Gleb Natapov
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Gleb Natapov @ 2008-10-26 14:44 UTC (permalink / raw)
  To: bochs-developers; +Cc: qemu-devel

There are only a couple of bytes left.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
---

 bios/rombios.c |   48 ++++++++++++++++++++++++++----------------------
 1 files changed, 26 insertions(+), 22 deletions(-)

diff --git a/bios/rombios.c b/bios/rombios.c
index 3366ad9..88eac04 100644
--- a/bios/rombios.c
+++ b/bios/rombios.c
@@ -10256,6 +10256,31 @@ rom_scan_increment:
   mov  ds, ax
   ret
 
+post_init_pic:
+  mov al, #0x11 ; send initialisation commands
+  out 0x20, al
+  out 0xa0, al
+  mov al, #0x08
+  out 0x21, al
+  mov al, #0x70
+  out 0xa1, al
+  mov al, #0x04
+  out 0x21, al
+  mov al, #0x02
+  out 0xa1, al
+  mov al, #0x01
+  out 0x21, al
+  out 0xa1, al
+  mov  al, #0xb8
+  out  0x21, AL ;master pic: unmask IRQ 0, 1, 2, 6
+#if BX_USE_PS2_MOUSE
+  mov  al, #0x8f
+#else
+  mov  al, #0x9f
+#endif
+  out  0xa1, AL ;slave  pic: unmask IRQ 12, 13, 14
+  ret
+
 ;; the following area can be used to write dynamically generated tables
   .align 16
 bios_table_area_start:
@@ -10516,28 +10541,7 @@ post_default_ints:
   SET_INT_VECTOR(0x10, #0xF000, #int10_handler)
 
   ;; PIC
-  mov al, #0x11 ; send initialisation commands
-  out 0x20, al
-  out 0xa0, al
-  mov al, #0x08
-  out 0x21, al
-  mov al, #0x70
-  out 0xa1, al
-  mov al, #0x04
-  out 0x21, al
-  mov al, #0x02
-  out 0xa1, al
-  mov al, #0x01
-  out 0x21, al
-  out 0xa1, al
-  mov  al, #0xb8
-  out  0x21, AL ;master pic: unmask IRQ 0, 1, 2, 6
-#if BX_USE_PS2_MOUSE
-  mov  al, #0x8f
-#else
-  mov  al, #0x9f
-#endif
-  out  0xa1, AL ;slave  pic: unmask IRQ 12, 13, 14
+  call post_init_pic
 
   mov  cx, #0xc000  ;; init vga bios
   mov  ax, #0xc780

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Qemu-devel] [PATCH 2/6] Add S3 state to DSDT. Handle resume event in the BIOS.
  2008-10-26 14:44 [Qemu-devel] [PATCH 0/6] Support for S3 ACPI state (suspend to memory) in BIOS Gleb Natapov
  2008-10-26 14:44 ` [Qemu-devel] [PATCH 1/6] Move PIC initialization out of line to save space in post code area Gleb Natapov
@ 2008-10-26 14:44 ` Gleb Natapov
  2008-10-26 14:44 ` [Qemu-devel] [PATCH 3/6] Disable init of SMM Gleb Natapov
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Gleb Natapov @ 2008-10-26 14:44 UTC (permalink / raw)
  To: bochs-developers; +Cc: qemu-devel

Signed-off-by: Gleb Natapov <gleb@redhat.com>
---

 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    "UF0[.@.P" */
-    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    ".@.PX13." */
+    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) {

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Qemu-devel] [PATCH 3/6] Disable init of SMM.
  2008-10-26 14:44 [Qemu-devel] [PATCH 0/6] Support for S3 ACPI state (suspend to memory) in BIOS Gleb Natapov
  2008-10-26 14:44 ` [Qemu-devel] [PATCH 1/6] Move PIC initialization out of line to save space in post code area Gleb Natapov
  2008-10-26 14:44 ` [Qemu-devel] [PATCH 2/6] Add S3 state to DSDT. Handle resume event in the BIOS Gleb Natapov
@ 2008-10-26 14:44 ` Gleb Natapov
  2008-10-28 10:27   ` Fabrice Bellard
  2008-10-26 14:44 ` [Qemu-devel] [PATCH 4/6] Execute rombios32 code from rom address 0xe0000 Gleb Natapov
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 9+ messages in thread
From: Gleb Natapov @ 2008-10-26 14:44 UTC (permalink / raw)
  To: bochs-developers; +Cc: qemu-devel

SMM initialization uses memory available for OS use.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
---

 bios/rombios32.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
 mode change 100644 => 100755 bios/rombios32.c

diff --git a/bios/rombios32.c b/bios/rombios32.c
old mode 100644
new mode 100755
index ff84f80..e887d71
--- a/bios/rombios32.c
+++ b/bios/rombios32.c
@@ -38,7 +38,7 @@ typedef unsigned long long uint64_t;
 //#define BX_USE_EBDA_TABLES
 
 /* define it if the (emulated) hardware supports SMM mode */
-#define BX_USE_SMM
+//#define BX_USE_SMM
 
 #define cpuid(index, eax, ebx, ecx, edx) \
   asm volatile ("cpuid" \

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Qemu-devel] [PATCH 4/6] Execute rombios32 code from rom address 0xe0000.
  2008-10-26 14:44 [Qemu-devel] [PATCH 0/6] Support for S3 ACPI state (suspend to memory) in BIOS Gleb Natapov
                   ` (2 preceding siblings ...)
  2008-10-26 14:44 ` [Qemu-devel] [PATCH 3/6] Disable init of SMM Gleb Natapov
@ 2008-10-26 14:44 ` Gleb Natapov
  2008-10-26 14:44 ` [Qemu-devel] [PATCH 5/6] Don't use unreserved memory in BIOS Gleb Natapov
  2008-10-26 14:44 ` [Qemu-devel] [PATCH 6/6] Don't power down vga card on entering S3 state Gleb Natapov
  5 siblings, 0 replies; 9+ messages in thread
From: Gleb Natapov @ 2008-10-26 14:44 UTC (permalink / raw)
  To: bochs-developers; +Cc: qemu-devel

Signed-off-by: Gleb Natapov <gleb@redhat.com>
---

 bios/Makefile.in      |    1 +
 bios/rombios.c        |   17 +----------------
 bios/rombios32.ld     |    8 +++-----
 bios/rombios32start.S |    9 ++++++++-
 4 files changed, 13 insertions(+), 22 deletions(-)

diff --git a/bios/Makefile.in b/bios/Makefile.in
index b055910..af674b4 100644
--- a/bios/Makefile.in
+++ b/bios/Makefile.in
@@ -106,6 +106,7 @@ rombios32.o: rombios32.c acpi-dsdt.hex
 ifeq ("1", "0")
 acpi-dsdt.hex: acpi-dsdt.dsl
 	iasl -tc -p $@ $<
+	sed -i -e's/^unsigned/const unsigned/' $@
 endif
 
 rombios32start.o: rombios32start.S
diff --git a/bios/rombios.c b/bios/rombios.c
index 46996fa..c4c1e35 100644
--- a/bios/rombios.c
+++ b/bios/rombios.c
@@ -10020,13 +10020,6 @@ rombios32_05:
   mov gs, ax
   cld
 
-  ;; copy rombios32 code to ram (ram offset = 1MB)
-  mov esi, #0xfffe0000
-  mov edi, #0x00040000
-  mov ecx, #0x10000 / 4
-  rep
-    movsd
-
   ;; init the stack pointer
   mov esp, #0x00080000
 
@@ -10035,17 +10028,9 @@ rombios32_05:
   push #0x04b2
 
   ;; call rombios32 code
-  mov eax, #0x00040000
+  mov eax, #0x000e0000
   call eax
 
-  ;; reset the memory (some boot loaders such as syslinux suppose
-  ;; that the memory is set to zero)
-  mov edi, #0x00040000
-  mov ecx, #0x40000 / 4
-  xor eax, eax
-  rep
-    stosd
-
   ;; return to 16 bit protected mode first
   db 0xea
   dd rombios32_10
diff --git a/bios/rombios32.ld b/bios/rombios32.ld
index c7f6066..113a2c0 100644
--- a/bios/rombios32.ld
+++ b/bios/rombios32.ld
@@ -3,14 +3,12 @@ OUTPUT_ARCH(i386)
 ENTRY(_start);
 SECTIONS
 {
-        . = 0x00040000;
+        . = 0x000e0000;
         .text     : { *(.text)    }
         .rodata    : { *(.rodata) }
-        . = ALIGN(4096);
-        .data     : { *(.data)    }
-        __bss_start = . ;
-        .bss      : { *(.bss) *(COMMON) }
         _end = . ;
+        .data 0x700 : AT (_end) { __data_start = .; *(.data); __data_end = .;}
+        .bss      : { __bss_start = .; *(.bss) *(COMMON); __bss_end = .;}
         /DISCARD/ : { *(.stab)
                      *(.stabstr)
                      *(.comment)
diff --git a/bios/rombios32start.S b/bios/rombios32start.S
index 601e2b0..1900261 100644
--- a/bios/rombios32start.S
+++ b/bios/rombios32start.S
@@ -32,10 +32,17 @@ _start:
   /* clear bss section */
   xor %eax, %eax
   mov $__bss_start, %edi
-  mov $_end, %ecx
+  mov $__bss_end, %ecx
   sub %edi, %ecx
   rep stosb
 
+  /* copy data section */
+  mov $_end, %esi
+  mov $__data_start, %edi
+  mov $__data_end, %ecx
+  sub %edi, %ecx
+  rep movsb
+
   jmp rombios32_init
 
   .code16

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Qemu-devel] [PATCH 5/6] Don't use unreserved memory in BIOS.
  2008-10-26 14:44 [Qemu-devel] [PATCH 0/6] Support for S3 ACPI state (suspend to memory) in BIOS Gleb Natapov
                   ` (3 preceding siblings ...)
  2008-10-26 14:44 ` [Qemu-devel] [PATCH 4/6] Execute rombios32 code from rom address 0xe0000 Gleb Natapov
@ 2008-10-26 14:44 ` Gleb Natapov
  2008-10-26 14:44 ` [Qemu-devel] [PATCH 6/6] Don't power down vga card on entering S3 state Gleb Natapov
  5 siblings, 0 replies; 9+ messages in thread
From: Gleb Natapov @ 2008-10-26 14:44 UTC (permalink / raw)
  To: bochs-developers; +Cc: qemu-devel

Use only first page and last page of low memory. OSes assumes that first
page is used by bios and last page is reserved in e820 map.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
---

 bios/rombios.c   |    6 +++---
 bios/rombios.h   |    2 +-
 bios/rombios32.c |    2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/bios/rombios.c b/bios/rombios.c
index c4c1e35..19f0e93 100644
--- a/bios/rombios.c
+++ b/bios/rombios.c
@@ -4541,7 +4541,7 @@ ASM_END
                 {
                     case 0:
                         set_e820_range(ES, regs.u.r16.di,
-                                       0x0000000L, 0x0009fc00L, 1);
+                                       0x0000000L, 0x0009f000L, 1);
                         regs.u.r32.ebx = 1;
                         regs.u.r32.eax = 0x534D4150;
                         regs.u.r32.ecx = 0x14;
@@ -4550,7 +4550,7 @@ ASM_END
                         break;
                     case 1:
                         set_e820_range(ES, regs.u.r16.di,
-                                       0x0009fc00L, 0x000a0000L, 2);
+                                       0x0009f000L, 0x000a0000L, 2);
                         regs.u.r32.ebx = 2;
                         regs.u.r32.eax = 0x534D4150;
                         regs.u.r32.ecx = 0x14;
@@ -10021,7 +10021,7 @@ rombios32_05:
   cld
 
   ;; init the stack pointer
-  mov esp, #0x00080000
+  mov esp, #0x9fbf0
 
   ;; pass pointer to s3_resume_flag and s3_resume_vector to rombios32
   push #0x04b0
diff --git a/bios/rombios.h b/bios/rombios.h
index f0ed88e..57b0f46 100644
--- a/bios/rombios.h
+++ b/bios/rombios.h
@@ -56,7 +56,7 @@
 #define ACPI_DATA_SIZE    0x00010000L
 #define PM_IO_BASE        0xb000
 #define SMB_IO_BASE       0xb100
-#define CPU_COUNT_ADDR    0xf000
+#define CPU_COUNT_ADDR    0x0500
 
   // Define the application NAME
 #if defined(BX_QEMU)
diff --git a/bios/rombios32.c b/bios/rombios32.c
index e887d71..c192cf3 100755
--- a/bios/rombios32.c
+++ b/bios/rombios32.c
@@ -57,7 +57,7 @@ typedef unsigned long long uint64_t;
 
 #define APIC_ENABLED 0x0100
 
-#define AP_BOOT_ADDR 0x10000
+#define AP_BOOT_ADDR 0x9f000
 
 #define MPTABLE_MAX_SIZE  0x00002000
 #define SMI_CMD_IO_ADDR   0xb2

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Qemu-devel] [PATCH 6/6] Don't power down vga card on entering S3 state.
  2008-10-26 14:44 [Qemu-devel] [PATCH 0/6] Support for S3 ACPI state (suspend to memory) in BIOS Gleb Natapov
                   ` (4 preceding siblings ...)
  2008-10-26 14:44 ` [Qemu-devel] [PATCH 5/6] Don't use unreserved memory in BIOS Gleb Natapov
@ 2008-10-26 14:44 ` Gleb Natapov
  5 siblings, 0 replies; 9+ messages in thread
From: Gleb Natapov @ 2008-10-26 14:44 UTC (permalink / raw)
  To: bochs-developers; +Cc: qemu-devel

This is needed to fool windows to enter S3. The trick works for XP and
Windows2003, but Vista still refuse to allow S3.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
---

 bios/acpi-dsdt.dsl |   16 ++
 bios/acpi-dsdt.hex |  365 ++++++++++++++++++++++++++--------------------------
 2 files changed, 201 insertions(+), 180 deletions(-)
 mode change 100644 => 100755 bios/acpi-dsdt.dsl

diff --git a/bios/acpi-dsdt.dsl b/bios/acpi-dsdt.dsl
old mode 100644
new mode 100755
index f33d534..d08d69f
--- a/bios/acpi-dsdt.dsl
+++ b/bios/acpi-dsdt.dsl
@@ -160,6 +160,22 @@ DefinitionBlock (
 
     Scope(\_SB.PCI0) {
 
+        Device (VGA) {
+                 Name (_ADR, 0x00020000)
+                 Method (_S1D, 0, NotSerialized)
+                 {
+                         Return (0x00)
+                 }
+                 Method (_S2D, 0, NotSerialized)
+                 {
+                         Return (0x00)
+                 }
+                 Method (_S3D, 0, NotSerialized)
+                 {
+                         Return (0x00)
+                 }
+        }
+
 	/* PIIX3 ISA bridge */
         Device (ISA) {
             Name (_ADR, 0x00010000)
diff --git a/bios/acpi-dsdt.hex b/bios/acpi-dsdt.hex
index b5bc891..e437a89 100644
--- a/bios/acpi-dsdt.hex
+++ b/bios/acpi-dsdt.hex
@@ -5,15 +5,15 @@
  * Copyright (C) 2000 - 2006 Intel Corporation
  * Supports ACPI Specification Revision 3.0a
  * 
- * Compilation of "acpi-dsdt.dsl" - Sun Oct 26 11:50:49 2008
+ * Compilation of "acpi-dsdt.dsl" - Sun Oct 26 11:52:45 2008
  * 
  * C source code output
  *
  */
 const unsigned char AmlCode[] =
 {
-    0x44,0x53,0x44,0x54,0xE1,0x07,0x00,0x00,  /* 00000000    "DSDT...." */
-    0x01,0x24,0x42,0x58,0x50,0x43,0x00,0x00,  /* 00000008    ".$BXPC.." */
+    0x44,0x53,0x44,0x54,0x0D,0x08,0x00,0x00,  /* 00000000    "DSDT...." */
+    0x01,0xA1,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" */
     0x09,0x11,0x06,0x20,0x08,0x5F,0x53,0x33,  /* 00000020    "... ._S3" */
@@ -88,181 +88,186 @@ const unsigned char AmlCode[] =
     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    ".@.PX13." */
-    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,
+    0x4D,0x2B,0x2E,0x5F,0x53,0x42,0x5F,0x50,  /* 00000260    "M+._SB_P" */
+    0x43,0x49,0x30,0x5B,0x82,0x2A,0x56,0x47,  /* 00000268    "CI0[.*VG" */
+    0x41,0x5F,0x08,0x5F,0x41,0x44,0x52,0x0C,  /* 00000270    "A_._ADR." */
+    0x00,0x00,0x02,0x00,0x14,0x08,0x5F,0x53,  /* 00000278    "......_S" */
+    0x31,0x44,0x00,0xA4,0x00,0x14,0x08,0x5F,  /* 00000280    "1D....._" */
+    0x53,0x32,0x44,0x00,0xA4,0x00,0x14,0x08,  /* 00000288    "S2D....." */
+    0x5F,0x53,0x33,0x44,0x00,0xA4,0x00,0x5B,  /* 00000290    "_S3D...[" */
+    0x82,0x42,0x23,0x49,0x53,0x41,0x5F,0x08,  /* 00000298    ".B#ISA_." */
+    0x5F,0x41,0x44,0x52,0x0C,0x00,0x00,0x01,  /* 000002A0    "_ADR...." */
+    0x00,0x5B,0x80,0x50,0x34,0x30,0x43,0x02,  /* 000002A8    ".[.P40C." */
+    0x0A,0x60,0x0A,0x04,0x5B,0x82,0x2D,0x52,  /* 000002B0    ".`..[.-R" */
+    0x54,0x43,0x5F,0x08,0x5F,0x48,0x49,0x44,  /* 000002B8    "TC_._HID" */
+    0x0C,0x41,0xD0,0x0B,0x00,0x08,0x5F,0x43,  /* 000002C0    ".A...._C" */
+    0x52,0x53,0x11,0x18,0x0A,0x15,0x47,0x01,  /* 000002C8    "RS....G." */
+    0x70,0x00,0x70,0x00,0x10,0x02,0x22,0x00,  /* 000002D0    "p.p..."." */
+    0x01,0x47,0x01,0x72,0x00,0x72,0x00,0x02,  /* 000002D8    ".G.r.r.." */
+    0x06,0x79,0x00,0x5B,0x82,0x44,0x04,0x4B,  /* 000002E0    ".y.[.D.K" */
+    0x42,0x44,0x5F,0x08,0x5F,0x48,0x49,0x44,  /* 000002E8    "BD_._HID" */
+    0x0C,0x41,0xD0,0x03,0x03,0x14,0x09,0x5F,  /* 000002F0    ".A....._" */
+    0x53,0x54,0x41,0x00,0xA4,0x0A,0x0F,0x14,  /* 000002F8    "STA....." */
+    0x29,0x5F,0x43,0x52,0x53,0x00,0x08,0x54,  /* 00000300    ")_CRS..T" */
+    0x4D,0x50,0x5F,0x11,0x18,0x0A,0x15,0x47,  /* 00000308    "MP_....G" */
+    0x01,0x60,0x00,0x60,0x00,0x01,0x01,0x47,  /* 00000310    ".`.`...G" */
+    0x01,0x64,0x00,0x64,0x00,0x01,0x01,0x22,  /* 00000318    ".d.d..."" */
+    0x02,0x00,0x79,0x00,0xA4,0x54,0x4D,0x50,  /* 00000320    "..y..TMP" */
+    0x5F,0x5B,0x82,0x33,0x4D,0x4F,0x55,0x5F,  /* 00000328    "_[.3MOU_" */
+    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 00000330    "._HID.A." */
+    0x0F,0x13,0x14,0x09,0x5F,0x53,0x54,0x41,  /* 00000338    "...._STA" */
+    0x00,0xA4,0x0A,0x0F,0x14,0x19,0x5F,0x43,  /* 00000340    "......_C" */
+    0x52,0x53,0x00,0x08,0x54,0x4D,0x50,0x5F,  /* 00000348    "RS..TMP_" */
+    0x11,0x08,0x0A,0x05,0x22,0x00,0x10,0x79,  /* 00000350    "...."..y" */
+    0x00,0xA4,0x54,0x4D,0x50,0x5F,0x5B,0x82,  /* 00000358    "..TMP_[." */
+    0x47,0x04,0x46,0x44,0x43,0x30,0x08,0x5F,  /* 00000360    "G.FDC0._" */
+    0x48,0x49,0x44,0x0C,0x41,0xD0,0x07,0x00,  /* 00000368    "HID.A..." */
+    0x14,0x09,0x5F,0x53,0x54,0x41,0x00,0xA4,  /* 00000370    ".._STA.." */
+    0x0A,0x0F,0x14,0x2C,0x5F,0x43,0x52,0x53,  /* 00000378    "...,_CRS" */
+    0x00,0x08,0x42,0x55,0x46,0x30,0x11,0x1B,  /* 00000380    "..BUF0.." */
+    0x0A,0x18,0x47,0x01,0xF2,0x03,0xF2,0x03,  /* 00000388    "..G....." */
+    0x00,0x04,0x47,0x01,0xF7,0x03,0xF7,0x03,  /* 00000390    "..G....." */
+    0x00,0x01,0x22,0x40,0x00,0x2A,0x04,0x00,  /* 00000398    ".."@.*.." */
+    0x79,0x00,0xA4,0x42,0x55,0x46,0x30,0x5B,  /* 000003A0    "y..BUF0[" */
+    0x82,0x4B,0x05,0x4C,0x50,0x54,0x5F,0x08,  /* 000003A8    ".K.LPT_." */
+    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x04,  /* 000003B0    "_HID.A.." */
+    0x00,0x14,0x28,0x5F,0x53,0x54,0x41,0x00,  /* 000003B8    "..(_STA." */
+    0x70,0x5E,0x5E,0x5E,0x2E,0x50,0x58,0x31,  /* 000003C0    "p^^^.PX1" */
+    0x33,0x44,0x52,0x53,0x41,0x60,0x7B,0x60,  /* 000003C8    "3DRSA`{`" */
+    0x0C,0x00,0x00,0x00,0x80,0x60,0xA0,0x06,  /* 000003D0    ".....`.." */
+    0x93,0x60,0x00,0xA4,0x00,0xA1,0x04,0xA4,  /* 000003D8    ".`......" */
+    0x0A,0x0F,0x14,0x21,0x5F,0x43,0x52,0x53,  /* 000003E0    "...!_CRS" */
+    0x00,0x08,0x42,0x55,0x46,0x30,0x11,0x10,  /* 000003E8    "..BUF0.." */
+    0x0A,0x0D,0x47,0x01,0x78,0x03,0x78,0x03,  /* 000003F0    "..G.x.x." */
+    0x08,0x08,0x22,0x80,0x00,0x79,0x00,0xA4,  /* 000003F8    ".."..y.." */
+    0x42,0x55,0x46,0x30,0x5B,0x82,0x41,0x06,  /* 00000400    "BUF0[.A." */
+    0x43,0x4F,0x4D,0x31,0x08,0x5F,0x48,0x49,  /* 00000408    "COM1._HI" */
+    0x44,0x0C,0x41,0xD0,0x05,0x01,0x08,0x5F,  /* 00000410    "D.A...._" */
+    0x55,0x49,0x44,0x01,0x14,0x28,0x5F,0x53,  /* 00000418    "UID..(_S" */
+    0x54,0x41,0x00,0x70,0x5E,0x5E,0x5E,0x2E,  /* 00000420    "TA.p^^^." */
+    0x50,0x58,0x31,0x33,0x44,0x52,0x53,0x43,  /* 00000428    "PX13DRSC" */
+    0x60,0x7B,0x60,0x0C,0x00,0x00,0x00,0x08,  /* 00000430    "`{`....." */
+    0x60,0xA0,0x06,0x93,0x60,0x00,0xA4,0x00,  /* 00000438    "`...`..." */
+    0xA1,0x04,0xA4,0x0A,0x0F,0x14,0x21,0x5F,  /* 00000440    "......!_" */
+    0x43,0x52,0x53,0x00,0x08,0x42,0x55,0x46,  /* 00000448    "CRS..BUF" */
+    0x30,0x11,0x10,0x0A,0x0D,0x47,0x01,0xF8,  /* 00000450    "0....G.." */
+    0x03,0xF8,0x03,0x00,0x08,0x22,0x10,0x00,  /* 00000458    ".....".." */
+    0x79,0x00,0xA4,0x42,0x55,0x46,0x30,0x5B,  /* 00000460    "y..BUF0[" */
+    0x82,0x42,0x06,0x43,0x4F,0x4D,0x32,0x08,  /* 00000468    ".B.COM2." */
+    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x05,  /* 00000470    "_HID.A.." */
+    0x01,0x08,0x5F,0x55,0x49,0x44,0x0A,0x02,  /* 00000478    ".._UID.." */
+    0x14,0x28,0x5F,0x53,0x54,0x41,0x00,0x70,  /* 00000480    ".(_STA.p" */
+    0x5E,0x5E,0x5E,0x2E,0x50,0x58,0x31,0x33,  /* 00000488    "^^^.PX13" */
+    0x44,0x52,0x53,0x43,0x60,0x7B,0x60,0x0C,  /* 00000490    "DRSC`{`." */
+    0x00,0x00,0x00,0x80,0x60,0xA0,0x06,0x93,  /* 00000498    "....`..." */
+    0x60,0x00,0xA4,0x00,0xA1,0x04,0xA4,0x0A,  /* 000004A0    "`......." */
+    0x0F,0x14,0x21,0x5F,0x43,0x52,0x53,0x00,  /* 000004A8    "..!_CRS." */
+    0x08,0x42,0x55,0x46,0x30,0x11,0x10,0x0A,  /* 000004B0    ".BUF0..." */
+    0x0D,0x47,0x01,0xF8,0x02,0xF8,0x02,0x00,  /* 000004B8    ".G......" */
+    0x08,0x22,0x08,0x00,0x79,0x00,0xA4,0x42,  /* 000004C0    "."..y..B" */
+    0x55,0x46,0x30,0x5B,0x82,0x40,0x05,0x50,  /* 000004C8    "UF0[.@.P" */
+    0x58,0x31,0x33,0x08,0x5F,0x41,0x44,0x52,  /* 000004D0    "X13._ADR" */
+    0x0C,0x03,0x00,0x01,0x00,0x5B,0x80,0x50,  /* 000004D8    ".....[.P" */
+    0x31,0x33,0x43,0x02,0x0A,0x5C,0x0A,0x24,  /* 000004E0    "13C..\.$" */
+    0x5B,0x81,0x33,0x50,0x31,0x33,0x43,0x03,  /* 000004E8    "[.3P13C." */
+    0x44,0x52,0x53,0x41,0x20,0x44,0x52,0x53,  /* 000004F0    "DRSA DRS" */
+    0x42,0x20,0x44,0x52,0x53,0x43,0x20,0x44,  /* 000004F8    "B DRSC D" */
+    0x52,0x53,0x45,0x20,0x44,0x52,0x53,0x46,  /* 00000500    "RSE DRSF" */
+    0x20,0x44,0x52,0x53,0x47,0x20,0x44,0x52,  /* 00000508    " DRSG DR" */
+    0x53,0x48,0x20,0x44,0x52,0x53,0x49,0x20,  /* 00000510    "SH DRSI " */
+    0x44,0x52,0x53,0x4A,0x20,0x10,0x4F,0x2E,  /* 00000518    "DRSJ .O." */
+    0x5F,0x53,0x42,0x5F,0x5B,0x81,0x24,0x2F,  /* 00000520    "_SB_[.$/" */
+    0x03,0x50,0x43,0x49,0x30,0x49,0x53,0x41,  /* 00000528    ".PCI0ISA" */
+    0x5F,0x50,0x34,0x30,0x43,0x01,0x50,0x52,  /* 00000530    "_P40C.PR" */
+    0x51,0x30,0x08,0x50,0x52,0x51,0x31,0x08,  /* 00000538    "Q0.PRQ1." */
+    0x50,0x52,0x51,0x32,0x08,0x50,0x52,0x51,  /* 00000540    "PRQ2.PRQ" */
+    0x33,0x08,0x5B,0x82,0x4E,0x0A,0x4C,0x4E,  /* 00000548    "3.[.N.LN" */
+    0x4B,0x41,0x08,0x5F,0x48,0x49,0x44,0x0C,  /* 00000550    "KA._HID." */
+    0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,0x49,  /* 00000558    "A...._UI" */
+    0x44,0x01,0x08,0x5F,0x50,0x52,0x53,0x11,  /* 00000560    "D.._PRS." */
+    0x09,0x0A,0x06,0x23,0xF8,0x1E,0x18,0x79,  /* 00000568    "...#...y" */
+    0x00,0x14,0x1A,0x5F,0x53,0x54,0x41,0x00,  /* 00000570    "..._STA." */
+    0x70,0x0A,0x0B,0x60,0xA0,0x0D,0x7B,0x0A,  /* 00000578    "p..`..{." */
+    0x80,0x50,0x52,0x51,0x30,0x61,0x70,0x0A,  /* 00000580    ".PRQ0ap." */
+    0x09,0x60,0xA4,0x60,0x14,0x11,0x5F,0x44,  /* 00000588    ".`.`.._D" */
+    0x49,0x53,0x00,0x7D,0x50,0x52,0x51,0x30,  /* 00000590    "IS.}PRQ0" */
+    0x0A,0x80,0x50,0x52,0x51,0x30,0x14,0x3F,  /* 00000598    "..PRQ0.?" */
+    0x5F,0x43,0x52,0x53,0x00,0x08,0x50,0x52,  /* 000005A0    "_CRS..PR" */
+    0x52,0x30,0x11,0x09,0x0A,0x06,0x23,0x02,  /* 000005A8    "R0....#." */
+    0x00,0x18,0x79,0x00,0x8B,0x50,0x52,0x52,  /* 000005B0    "..y..PRR" */
+    0x30,0x01,0x54,0x4D,0x50,0x5F,0x70,0x50,  /* 000005B8    "0.TMP_pP" */
+    0x52,0x51,0x30,0x60,0xA0,0x0C,0x95,0x60,  /* 000005C0    "RQ0`...`" */
+    0x0A,0x80,0x79,0x01,0x60,0x54,0x4D,0x50,  /* 000005C8    "..y.`TMP" */
+    0x5F,0xA1,0x07,0x70,0x00,0x54,0x4D,0x50,  /* 000005D0    "_..p.TMP" */
+    0x5F,0xA4,0x50,0x52,0x52,0x30,0x14,0x1B,  /* 000005D8    "_.PRR0.." */
+    0x5F,0x53,0x52,0x53,0x01,0x8B,0x68,0x01,  /* 000005E0    "_SRS..h." */
+    0x54,0x4D,0x50,0x5F,0x82,0x54,0x4D,0x50,  /* 000005E8    "TMP_.TMP" */
+    0x5F,0x60,0x76,0x60,0x70,0x60,0x50,0x52,  /* 000005F0    "_`v`p`PR" */
+    0x51,0x30,0x5B,0x82,0x4F,0x0A,0x4C,0x4E,  /* 000005F8    "Q0[.O.LN" */
+    0x4B,0x42,0x08,0x5F,0x48,0x49,0x44,0x0C,  /* 00000600    "KB._HID." */
+    0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,0x49,  /* 00000608    "A...._UI" */
+    0x44,0x0A,0x02,0x08,0x5F,0x50,0x52,0x53,  /* 00000610    "D..._PRS" */
+    0x11,0x09,0x0A,0x06,0x23,0xF8,0x1E,0x18,  /* 00000618    "....#..." */
+    0x79,0x00,0x14,0x1A,0x5F,0x53,0x54,0x41,  /* 00000620    "y..._STA" */
+    0x00,0x70,0x0A,0x0B,0x60,0xA0,0x0D,0x7B,  /* 00000628    ".p..`..{" */
+    0x0A,0x80,0x50,0x52,0x51,0x31,0x61,0x70,  /* 00000630    "..PRQ1ap" */
+    0x0A,0x09,0x60,0xA4,0x60,0x14,0x11,0x5F,  /* 00000638    "..`.`.._" */
+    0x44,0x49,0x53,0x00,0x7D,0x50,0x52,0x51,  /* 00000640    "DIS.}PRQ" */
+    0x31,0x0A,0x80,0x50,0x52,0x51,0x31,0x14,  /* 00000648    "1..PRQ1." */
+    0x3F,0x5F,0x43,0x52,0x53,0x00,0x08,0x50,  /* 00000650    "?_CRS..P" */
+    0x52,0x52,0x30,0x11,0x09,0x0A,0x06,0x23,  /* 00000658    "RR0....#" */
+    0x02,0x00,0x18,0x79,0x00,0x8B,0x50,0x52,  /* 00000660    "...y..PR" */
+    0x52,0x30,0x01,0x54,0x4D,0x50,0x5F,0x70,  /* 00000668    "R0.TMP_p" */
+    0x50,0x52,0x51,0x31,0x60,0xA0,0x0C,0x95,  /* 00000670    "PRQ1`..." */
+    0x60,0x0A,0x80,0x79,0x01,0x60,0x54,0x4D,  /* 00000678    "`..y.`TM" */
+    0x50,0x5F,0xA1,0x07,0x70,0x00,0x54,0x4D,  /* 00000680    "P_..p.TM" */
+    0x50,0x5F,0xA4,0x50,0x52,0x52,0x30,0x14,  /* 00000688    "P_.PRR0." */
+    0x1B,0x5F,0x53,0x52,0x53,0x01,0x8B,0x68,  /* 00000690    "._SRS..h" */
+    0x01,0x54,0x4D,0x50,0x5F,0x82,0x54,0x4D,  /* 00000698    ".TMP_.TM" */
+    0x50,0x5F,0x60,0x76,0x60,0x70,0x60,0x50,  /* 000006A0    "P_`v`p`P" */
+    0x52,0x51,0x31,0x5B,0x82,0x4F,0x0A,0x4C,  /* 000006A8    "RQ1[.O.L" */
+    0x4E,0x4B,0x43,0x08,0x5F,0x48,0x49,0x44,  /* 000006B0    "NKC._HID" */
+    0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,  /* 000006B8    ".A...._U" */
+    0x49,0x44,0x0A,0x03,0x08,0x5F,0x50,0x52,  /* 000006C0    "ID..._PR" */
+    0x53,0x11,0x09,0x0A,0x06,0x23,0xF8,0x1E,  /* 000006C8    "S....#.." */
+    0x18,0x79,0x00,0x14,0x1A,0x5F,0x53,0x54,  /* 000006D0    ".y..._ST" */
+    0x41,0x00,0x70,0x0A,0x0B,0x60,0xA0,0x0D,  /* 000006D8    "A.p..`.." */
+    0x7B,0x0A,0x80,0x50,0x52,0x51,0x32,0x61,  /* 000006E0    "{..PRQ2a" */
+    0x70,0x0A,0x09,0x60,0xA4,0x60,0x14,0x11,  /* 000006E8    "p..`.`.." */
+    0x5F,0x44,0x49,0x53,0x00,0x7D,0x50,0x52,  /* 000006F0    "_DIS.}PR" */
+    0x51,0x32,0x0A,0x80,0x50,0x52,0x51,0x32,  /* 000006F8    "Q2..PRQ2" */
+    0x14,0x3F,0x5F,0x43,0x52,0x53,0x00,0x08,  /* 00000700    ".?_CRS.." */
+    0x50,0x52,0x52,0x30,0x11,0x09,0x0A,0x06,  /* 00000708    "PRR0...." */
+    0x23,0x02,0x00,0x18,0x79,0x00,0x8B,0x50,  /* 00000710    "#...y..P" */
+    0x52,0x52,0x30,0x01,0x54,0x4D,0x50,0x5F,  /* 00000718    "RR0.TMP_" */
+    0x70,0x50,0x52,0x51,0x32,0x60,0xA0,0x0C,  /* 00000720    "pPRQ2`.." */
+    0x95,0x60,0x0A,0x80,0x79,0x01,0x60,0x54,  /* 00000728    ".`..y.`T" */
+    0x4D,0x50,0x5F,0xA1,0x07,0x70,0x00,0x54,  /* 00000730    "MP_..p.T" */
+    0x4D,0x50,0x5F,0xA4,0x50,0x52,0x52,0x30,  /* 00000738    "MP_.PRR0" */
+    0x14,0x1B,0x5F,0x53,0x52,0x53,0x01,0x8B,  /* 00000740    ".._SRS.." */
+    0x68,0x01,0x54,0x4D,0x50,0x5F,0x82,0x54,  /* 00000748    "h.TMP_.T" */
+    0x4D,0x50,0x5F,0x60,0x76,0x60,0x70,0x60,  /* 00000750    "MP_`v`p`" */
+    0x50,0x52,0x51,0x32,0x5B,0x82,0x4F,0x0A,  /* 00000758    "PRQ2[.O." */
+    0x4C,0x4E,0x4B,0x44,0x08,0x5F,0x48,0x49,  /* 00000760    "LNKD._HI" */
+    0x44,0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,  /* 00000768    "D.A...._" */
+    0x55,0x49,0x44,0x0A,0x04,0x08,0x5F,0x50,  /* 00000770    "UID..._P" */
+    0x52,0x53,0x11,0x09,0x0A,0x06,0x23,0xF8,  /* 00000778    "RS....#." */
+    0x1E,0x18,0x79,0x00,0x14,0x1A,0x5F,0x53,  /* 00000780    "..y..._S" */
+    0x54,0x41,0x00,0x70,0x0A,0x0B,0x60,0xA0,  /* 00000788    "TA.p..`." */
+    0x0D,0x7B,0x0A,0x80,0x50,0x52,0x51,0x33,  /* 00000790    ".{..PRQ3" */
+    0x61,0x70,0x0A,0x09,0x60,0xA4,0x60,0x14,  /* 00000798    "ap..`.`." */
+    0x11,0x5F,0x44,0x49,0x53,0x00,0x7D,0x50,  /* 000007A0    "._DIS.}P" */
+    0x52,0x51,0x33,0x0A,0x80,0x50,0x52,0x51,  /* 000007A8    "RQ3..PRQ" */
+    0x33,0x14,0x3F,0x5F,0x43,0x52,0x53,0x00,  /* 000007B0    "3.?_CRS." */
+    0x08,0x50,0x52,0x52,0x30,0x11,0x09,0x0A,  /* 000007B8    ".PRR0..." */
+    0x06,0x23,0x02,0x00,0x18,0x79,0x00,0x8B,  /* 000007C0    ".#...y.." */
+    0x50,0x52,0x52,0x30,0x01,0x54,0x4D,0x50,  /* 000007C8    "PRR0.TMP" */
+    0x5F,0x70,0x50,0x52,0x51,0x33,0x60,0xA0,  /* 000007D0    "_pPRQ3`." */
+    0x0C,0x95,0x60,0x0A,0x80,0x79,0x01,0x60,  /* 000007D8    "..`..y.`" */
+    0x54,0x4D,0x50,0x5F,0xA1,0x07,0x70,0x00,  /* 000007E0    "TMP_..p." */
+    0x54,0x4D,0x50,0x5F,0xA4,0x50,0x52,0x52,  /* 000007E8    "TMP_.PRR" */
+    0x30,0x14,0x1B,0x5F,0x53,0x52,0x53,0x01,  /* 000007F0    "0.._SRS." */
+    0x8B,0x68,0x01,0x54,0x4D,0x50,0x5F,0x82,  /* 000007F8    ".h.TMP_." */
+    0x54,0x4D,0x50,0x5F,0x60,0x76,0x60,0x70,  /* 00000800    "TMP_`v`p" */
+    0x60,0x50,0x52,0x51,0x33,
 };

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Qemu-devel] [PATCH 3/6] Disable init of SMM.
  2008-10-27 10:12 [Qemu-devel] [PATCH 0/6] Support for S3 ACPI state (suspend to memory) in BIOS Gleb Natapov
@ 2008-10-27 10:13 ` Gleb Natapov
  0 siblings, 0 replies; 9+ messages in thread
From: Gleb Natapov @ 2008-10-27 10:13 UTC (permalink / raw)
  To: bochs-developers; +Cc: qemu-devel

SMM initialization uses memory available for OS use.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
---

 bios/rombios32.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
 mode change 100644 => 100755 bios/rombios32.c

diff --git a/bios/rombios32.c b/bios/rombios32.c
old mode 100644
new mode 100755
index ff84f80..e887d71
--- a/bios/rombios32.c
+++ b/bios/rombios32.c
@@ -38,7 +38,7 @@ typedef unsigned long long uint64_t;
 //#define BX_USE_EBDA_TABLES
 
 /* define it if the (emulated) hardware supports SMM mode */
-#define BX_USE_SMM
+//#define BX_USE_SMM
 
 #define cpuid(index, eax, ebx, ecx, edx) \
   asm volatile ("cpuid" \

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [Qemu-devel] [PATCH 3/6] Disable init of SMM.
  2008-10-26 14:44 ` [Qemu-devel] [PATCH 3/6] Disable init of SMM Gleb Natapov
@ 2008-10-28 10:27   ` Fabrice Bellard
  0 siblings, 0 replies; 9+ messages in thread
From: Fabrice Bellard @ 2008-10-28 10:27 UTC (permalink / raw)
  To: gleb; +Cc: qemu-devel

Can you explain why you disabled SMM ? The memory it uses is only mapped
if SMI is enabled, so the OS cannot normally use it.

Regards,

Fabrice.

Gleb Natapov wrote:
> SMM initialization uses memory available for OS use.
> 
> Signed-off-by: Gleb Natapov <gleb@redhat.com>
> ---
> 
>  bios/rombios32.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
>  mode change 100644 => 100755 bios/rombios32.c
> 
> diff --git a/bios/rombios32.c b/bios/rombios32.c
> old mode 100644
> new mode 100755
> index ff84f80..e887d71
> --- a/bios/rombios32.c
> +++ b/bios/rombios32.c
> @@ -38,7 +38,7 @@ typedef unsigned long long uint64_t;
>  //#define BX_USE_EBDA_TABLES
>  
>  /* define it if the (emulated) hardware supports SMM mode */
> -#define BX_USE_SMM
> +//#define BX_USE_SMM
>  
>  #define cpuid(index, eax, ebx, ecx, edx) \
>    asm volatile ("cpuid" \
> 
> 
> 
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2008-10-28 10:28 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-26 14:44 [Qemu-devel] [PATCH 0/6] Support for S3 ACPI state (suspend to memory) in BIOS Gleb Natapov
2008-10-26 14:44 ` [Qemu-devel] [PATCH 1/6] Move PIC initialization out of line to save space in post code area Gleb Natapov
2008-10-26 14:44 ` [Qemu-devel] [PATCH 2/6] Add S3 state to DSDT. Handle resume event in the BIOS Gleb Natapov
2008-10-26 14:44 ` [Qemu-devel] [PATCH 3/6] Disable init of SMM Gleb Natapov
2008-10-28 10:27   ` Fabrice Bellard
2008-10-26 14:44 ` [Qemu-devel] [PATCH 4/6] Execute rombios32 code from rom address 0xe0000 Gleb Natapov
2008-10-26 14:44 ` [Qemu-devel] [PATCH 5/6] Don't use unreserved memory in BIOS Gleb Natapov
2008-10-26 14:44 ` [Qemu-devel] [PATCH 6/6] Don't power down vga card on entering S3 state Gleb Natapov
  -- strict thread matches above, loose matches on Subject: below --
2008-10-27 10:12 [Qemu-devel] [PATCH 0/6] Support for S3 ACPI state (suspend to memory) in BIOS Gleb Natapov
2008-10-27 10:13 ` [Qemu-devel] [PATCH 3/6] Disable init of SMM Gleb Natapov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).