[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