ACPI: Adding SLIC support
authorErwan Velu <erwanaliasr1@gmail.com>
Mon, 31 Jan 2011 21:21:05 +0000 (22:21 +0100)
committerErwan Velu <erwanaliasr1@gmail.com>
Mon, 31 Jan 2011 21:21:05 +0000 (22:21 +0100)
com32/gplinclude/acpi/acpi.h
com32/gplinclude/acpi/slic.h [new file with mode: 0644]
com32/gpllib/acpi/acpi.c

index 8126809..3884762 100644 (file)
@@ -34,6 +34,7 @@ void dbg_printf(const char *fmt, ...);
 #include <acpi/hpet.h>
 #include <acpi/tcpa.h>
 #include <acpi/mcfg.h>
+#include <acpi/slic.h>
 
 enum { ACPI_FOUND = 1, ENO_ACPI = 2 , MADT_FOUND = 3 , ENO_MADT = 4 };
 
@@ -61,6 +62,7 @@ enum { ACPI_FOUND = 1, ENO_ACPI = 2 , MADT_FOUND = 3 , ENO_MADT = 4 };
 #define WDAT "WDAT"
 #define WDRT "WDRT"
 #define WSPT "WSPT"
+#define SLIC "SLIC"
 
 /* This macro are used to extract ACPI structures 
  * please be careful about the q (interator) naming */
@@ -82,6 +84,7 @@ typedef struct {
     s_hpet hpet;
     s_tcpa tcpa;
     s_mcfg mcfg;
+    s_slic slic;
 } s_acpi;
 
 int parse_acpi(s_acpi * acpi);
diff --git a/com32/gplinclude/acpi/slic.h b/com32/gplinclude/acpi/slic.h
new file mode 100644 (file)
index 0000000..2c7627d
--- /dev/null
@@ -0,0 +1,29 @@
+/* ----------------------------------------------------------------------- *
+ *
+ *   Copyright 2009-2011 Erwan Velu - All Rights Reserved
+ *
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation, Inc., 53 Temple Place Ste 330,
+ *   Boston MA 02111-1307, USA; either version 2 of the License, or
+ *   (at your option) any later version; incorporated herein by reference.
+ *
+ * ----------------------------------------------------------------------- */
+
+#ifndef SLIC_H
+#define SLIC_H
+#include <inttypes.h>
+#include <stdbool.h>
+
+#define SLIC "SLIC"
+
+enum { SLIC_TABLE_FOUND = 1 };
+
+typedef struct {
+    uint64_t *address;
+    s_acpi_description_header header;
+    /* What's inside ? */
+    bool valid;
+} s_slic;
+
+#endif
index 55c6d1a..7670d16 100644 (file)
@@ -221,8 +221,16 @@ bool parse_header(uint64_t *address, s_acpi *acpi) {
                m->valid = true;
                m->address = address;
                memcpy(&m->header, &adh, sizeof(adh));
+           } else if (memcmp(adh.signature, SLIC, sizeof(SLIC) - 1) == 0) {
+               DEBUG_PRINT(("SLIC table found\n"));
+               s_slic *s = &acpi->slic;
+               /* This structure is valid, let's fill it */
+               s->valid = true;
+               s->address = address;
+               memcpy(&s->header, &adh, sizeof(adh));
            }
 
 
+
            return true;
 }