[syslinux:master] acpi: Using definitions for table names

syslinux-bot for Erwan Velu erwan.velu at free.fr
Sun Feb 6 14:06:56 PST 2011


Commit-ID:  f12f222e00aff419437fbb08675654652b53af91
Gitweb:     http://syslinux.zytor.com/commit/f12f222e00aff419437fbb08675654652b53af91
Author:     Erwan Velu <erwan.velu at free.fr>
AuthorDate: Thu, 3 Dec 2009 09:50:03 +0100
Committer:  Erwan Velu <erwan.velu at free.fr>
CommitDate: Fri, 4 Dec 2009 10:19:01 +0100

acpi: Using definitions for table names

Impact: none

Using more definitions for ACPI tables names


---
 com32/gplinclude/acpi/acpi.h |   27 ++++++++++++++++++++++++++-
 com32/gplinclude/acpi/dsdt.h |    2 ++
 com32/gplinclude/acpi/fadt.h |    3 +++
 com32/gplinclude/acpi/madt.h |    3 +++
 com32/gplinclude/acpi/rsdp.h |    3 +++
 com32/gplinclude/acpi/rsdt.h |    2 ++
 com32/gplinclude/acpi/ssdt.h |    3 +++
 com32/gplinclude/acpi/xsdt.h |    2 ++
 com32/gpllib/acpi/fadt.c     |    2 +-
 com32/gpllib/acpi/madt.c     |    6 +++---
 com32/gpllib/acpi/rsdp.c     |    4 ++--
 com32/gpllib/acpi/rsdt.c     |    2 +-
 com32/gpllib/acpi/xsdt.c     |   16 ++++++++--------
 13 files changed, 59 insertions(+), 16 deletions(-)

diff --git a/com32/gplinclude/acpi/acpi.h b/com32/gplinclude/acpi/acpi.h
index 25aacb3..02c19e3 100644
--- a/com32/gplinclude/acpi/acpi.h
+++ b/com32/gplinclude/acpi/acpi.h
@@ -27,6 +27,31 @@ enum { ACPI_FOUND, ENO_ACPI, MADT_FOUND, ENO_MADT };
 
 #define MAX_SSDT 128
 
+/* Some other description HEADERS : ACPI doc: 5.2.6*/
+#define ECDT "ECDT"
+#define FACS "FACS"
+#define OEMX "OEMx"
+#define SRAR "SRAT"
+#define BERT "BERT"
+#define BOOT "BOOT"
+#define CPEP "CPEP"
+#define DBGP "DGBP"
+#define DMAR "DMAR"
+#define ERST "ERST"
+#define ETDT "ETDT"
+#define HEST "HEST"
+#define HPET "HPET"
+#define IBFT "IBFT"
+#define MCFG "MCFG"
+#define SPCR "SPCR"
+#define SPMI "SPMI"
+#define TCPA "TCPA"
+#define UEFI "UEFI"
+#define WAET "WAET"
+#define WDAT "WDAT"
+#define WDRT "WDRT"
+#define WSPT "WSPT"
+
 /* This macro are used to extract ACPI structures 
  * please be careful about the q (interator) naming */
 #define cp_struct(dest) memcpy(dest,q,sizeof(*dest)); q+=sizeof(*dest)
@@ -45,7 +70,7 @@ typedef struct {
 
 int parse_acpi(s_acpi * acpi);
 int parse_xsdt(s_acpi * acpi);
-int parse_madt(s_acpi * acpi);
+void parse_madt(s_acpi * acpi);
 int search_rsdp(s_acpi *acpi);
 void get_acpi_description_header(uint8_t *q, s_acpi_description_header * adh);
 #endif
diff --git a/com32/gplinclude/acpi/dsdt.h b/com32/gplinclude/acpi/dsdt.h
index abcbdf8..219cb1e 100644
--- a/com32/gplinclude/acpi/dsdt.h
+++ b/com32/gplinclude/acpi/dsdt.h
@@ -15,6 +15,8 @@
 #include <inttypes.h>
 #include <stdbool.h>
 
+#define DSDT "DSDT"
+
 typedef struct {
     uint64_t address;
     s_acpi_description_header header;
diff --git a/com32/gplinclude/acpi/fadt.h b/com32/gplinclude/acpi/fadt.h
index abc8dd6..8499cc0 100644
--- a/com32/gplinclude/acpi/fadt.h
+++ b/com32/gplinclude/acpi/fadt.h
@@ -17,6 +17,9 @@
 
 enum { FADT_TABLE_FOUND };
 
+#define FACP "FACP"
+#define FADT "FADT"
+
 typedef struct {
     uint64_t address;
     s_acpi_description_header header;
diff --git a/com32/gplinclude/acpi/madt.h b/com32/gplinclude/acpi/madt.h
index 3815bbe..c79d99b 100644
--- a/com32/gplinclude/acpi/madt.h
+++ b/com32/gplinclude/acpi/madt.h
@@ -15,6 +15,9 @@
 #include <inttypes.h>
 #include <stdbool.h>
 
+#define MADT "MADT"
+#define APIC "APIC"
+
 enum {
     PROCESSOR_LOCAL_APIC = 0,
     IO_APIC = 1,
diff --git a/com32/gplinclude/acpi/rsdp.h b/com32/gplinclude/acpi/rsdp.h
index df4da2d..1d8126c 100644
--- a/com32/gplinclude/acpi/rsdp.h
+++ b/com32/gplinclude/acpi/rsdp.h
@@ -17,6 +17,9 @@
 
 #define RSDP_MIN_ADDRESS 0x0E0000
 #define RSDP_MAX_ADDRESS 0x0FFFFF
+
+#define RSDP "RSD PTR"
+
 enum { RSDP_TABLE_FOUND };
 
 typedef struct {
diff --git a/com32/gplinclude/acpi/rsdt.h b/com32/gplinclude/acpi/rsdt.h
index 7919820..c3c198c 100644
--- a/com32/gplinclude/acpi/rsdt.h
+++ b/com32/gplinclude/acpi/rsdt.h
@@ -17,6 +17,8 @@
 
 enum { RSDT_TABLE_FOUND };
 
+#define RSDT "RSDT"
+
 typedef struct {
     uint32_t address;
     s_acpi_description_header header;
diff --git a/com32/gplinclude/acpi/ssdt.h b/com32/gplinclude/acpi/ssdt.h
index 0170d39..1ace366 100644
--- a/com32/gplinclude/acpi/ssdt.h
+++ b/com32/gplinclude/acpi/ssdt.h
@@ -15,6 +15,9 @@
 #include <inttypes.h>
 #include <stdbool.h>
 
+#define SSDT "SSDT"
+#define PSDT "PSDT"
+
 typedef struct {
     uint64_t address;
     s_acpi_description_header header;
diff --git a/com32/gplinclude/acpi/xsdt.h b/com32/gplinclude/acpi/xsdt.h
index 7a08dbf..a87e2a0 100644
--- a/com32/gplinclude/acpi/xsdt.h
+++ b/com32/gplinclude/acpi/xsdt.h
@@ -17,6 +17,8 @@
 
 enum { XSDT_TABLE_FOUND };
 
+#define XSDT "XSDT"
+
 typedef struct {
     uint32_t address;
     s_acpi_description_header header;
diff --git a/com32/gpllib/acpi/fadt.c b/com32/gpllib/acpi/fadt.c
index 90fb04b..a37149c 100644
--- a/com32/gpllib/acpi/fadt.c
+++ b/com32/gpllib/acpi/fadt.c
@@ -38,7 +38,7 @@ void parse_fadt(s_fadt * f)
     uint8_t *q;
 
     /* Fixing table name */
-    strcpy(f->header.signature,"FADT");
+    memcpy(f->header.signature,FADT,sizeof(FADT));
     
     /* Copying remaining structs */
     q = (uint64_t *) (f->address+ACPI_HEADER_SIZE);
diff --git a/com32/gpllib/acpi/madt.c b/com32/gpllib/acpi/madt.c
index 26f32fb..d71aecc 100644
--- a/com32/gpllib/acpi/madt.c
+++ b/com32/gpllib/acpi/madt.c
@@ -71,14 +71,14 @@ static uint8_t *add_apic_structure(s_acpi * acpi, uint8_t * q)
     return q;
 }
 
-int parse_madt(s_acpi *acpi)
+void parse_madt(s_acpi *acpi)
 {
     /* Let's seach for FADT table */
     uint8_t *q;
     s_madt *m = &acpi->madt;
 
     /* Fixing table name */
-    strcpy(m->header.signature,"MADT");
+    memcpy(m->header.signature,MADT,sizeof(MADT));
 
     /* Copying remaining structs */
     q = (uint64_t *) (m->address+ACPI_HEADER_SIZE);
@@ -91,7 +91,7 @@ void print_madt(s_madt * madt)
 {
     if (!madt->valid)
 	return;
-    printf("MADT Table @ 0x%08x\n",madt->address);
+    printf("MADT Table @ 0x%016llx\n",madt->address);
     printf(" signature      : %s\n", madt->header.signature);
     printf(" length         : %d\n", madt->header.length);
     printf(" revision       : %u\n", madt->header.revision);
diff --git a/com32/gpllib/acpi/rsdp.c b/com32/gpllib/acpi/rsdp.c
index a71a7a2..0199cc3 100644
--- a/com32/gpllib/acpi/rsdp.c
+++ b/com32/gpllib/acpi/rsdp.c
@@ -40,8 +40,8 @@ int search_rsdp(s_acpi * acpi)
     /* Let's start for the base address */
     p = (uint64_t *) RSDP_MIN_ADDRESS;
     for (q = p; q < RSDP_MAX_ADDRESS; q += 16) {
-	/* Searching for MADT with APIC signature */
-	if (memcmp(q, "RSD PTR", 7) == 0) {
+	/* Searching for RSDP with "RSD PTR" signature */
+	if (memcmp(q, RSDP, sizeof(RSDP)-1) == 0) {
 	    s_rsdp *r = &acpi->rsdp;
 	    r->valid = true;
 	    r->address = (uint64_t) q;
diff --git a/com32/gpllib/acpi/rsdt.c b/com32/gpllib/acpi/rsdt.c
index 98ff241..cfba4d1 100644
--- a/com32/gpllib/acpi/rsdt.c
+++ b/com32/gpllib/acpi/rsdt.c
@@ -41,7 +41,7 @@ int parse_rsdt(s_rsdt *r)
     q = (uint32_t *) r->address;
 
     /* Searching for MADT with APIC signature */
-    if (memcmp(q, "RSDT", 4) == 0) {
+    if (memcmp(q, RSDT, sizeof(RSDT)-1) == 0) {
 	r->valid = true;
 	get_acpi_description_header(q, &r->header);
 
diff --git a/com32/gpllib/acpi/xsdt.c b/com32/gpllib/acpi/xsdt.c
index a1ecb55..a0513d2 100644
--- a/com32/gpllib/acpi/xsdt.c
+++ b/com32/gpllib/acpi/xsdt.c
@@ -29,7 +29,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <memory.h>
-#include <dprintf.h>
+#include <stdlib.h>
 #include "acpi/acpi.h"
 
 int parse_xsdt(s_acpi * acpi)
@@ -41,7 +41,7 @@ int parse_xsdt(s_acpi * acpi)
     q = (uint64_t *) acpi->xsdt.address;
 
     /* Searching for MADT with APIC signature */
-    if (memcmp(q, "XSDT", 4) == 0) {
+    if (memcmp(q, XSDT, sizeof(XSDT)-1) == 0) {
 	s_xsdt *x = &acpi->xsdt;
 	x->valid = true;
 	get_acpi_description_header(q, &x->header);
@@ -58,35 +58,35 @@ int parse_xsdt(s_acpi * acpi)
 	    get_acpi_description_header((uint8_t *) * p, &adh);
 
 	    /* Trying to determine the pointed table */
-	    if (memcmp(adh.signature, "FACP", 4) == 0) {
+	    /* Looking for MADT*/
+	    if (memcmp(adh.signature, FACP, sizeof(FACP)-1) == 0) {
 		    s_fadt *f = &acpi->fadt;
 		    /* This structure is valid, let's fill it */
 		    f->valid=true;
 		    f->address=*p;
 		    memcpy(&f->header,&adh,sizeof(adh));
 		    parse_fadt(f);
-	    } else if (memcmp(adh.signature, "APIC", 4) == 0) {
+		    /* Looking for MADT */
+	    } else if (memcmp(adh.signature, APIC, sizeof(APIC)-1) == 0) {
 		    s_madt *m = &acpi->madt;
 		    /* This structure is valid, let's fill it */
 		    m->valid=true;
 		    m->address=*p;
 		    memcpy(&m->header,&adh,sizeof(adh));
 		    parse_madt(acpi);
-	    } else if (memcmp(adh.signature, "DSDT", 4) == 0) {
+	    } else if (memcmp(adh.signature, DSDT, sizeof(DSDT)-1) == 0) {
 		    s_dsdt *d = &acpi->dsdt;
-
 		    /* This structure is valid, let's fill it */
 		    d->valid=true;
 		    d->address=*p;
 		    memcpy(&d->header,&adh,sizeof(adh));
-
 		    /* Searching how much definition blocks we must copy */
 		    uint32_t definition_block_size=adh.length-ACPI_HEADER_SIZE;
 		    if ((d->definition_block=malloc(definition_block_size)) != NULL) {
 			    memcpy(d->definition_block,(uint64_t *)(d->address+ACPI_HEADER_SIZE),definition_block_size);
 		    }
 		    /* PSDT have to be considered as SSDT. Intel ACPI Spec @ 5.2.11.3 */
-	    } else if ((memcmp(adh.signature, "SSDT", 4) == 0) || (memcmp(adh.signature, "PSDT", 4))) {
+	    } else if ((memcmp(adh.signature, SSDT, sizeof(SSDT)-1) == 0) || (memcmp(adh.signature, PSDT, sizeof(PSDT)-1))) {
 		    if ((acpi->ssdt_count >= MAX_SSDT-1)) break;
 
 		    /* We can have many SSDT, so let's allocate a new one */



More information about the Syslinux-commits mailing list