48 #define _COMPONENT ACPI_TABLES
52 static
void acpi_tb_fix_string(
char *
string, acpi_size
length);
58 static acpi_physical_address
77 acpi_tb_check_xsdt(acpi_physical_address
address)
81 u64 xsdt_entry_address;
105 for (i = 0; i < table_count; i++) {
107 if (!xsdt_entry_address) {
111 table_entry +=
sizeof(
u64);
121 #if (!ACPI_REDUCED_HARDWARE)
191 static void acpi_tb_fix_string(
char *
string, acpi_size
length)
194 while (length && *
string) {
274 header)->length : 20,
281 acpi_tb_cleanup_table_header(&local_header, header);
284 "%4.4s %p %05X (v%.2d %6.6s %8.8s %08X %4.4s %08X)",
321 "Incorrect checksum in table [%4.4s] - 0x%2.2X, "
326 #if (ACPI_CHECKSUM_ABORT)
353 while (buffer < end) {
354 sum = (
u8) (sum + *(buffer++));
382 "The DSDT has been corrupted or replaced - "
383 "old, new headers below"));
389 "If system does not work as expected, please boot with acpi=copy_dsdt"));
429 table_desc->
pointer = new_table;
433 "Forced DSDT copy: length 0x%05X copied locally, original unmapped",
467 "Null physical address for ACPI table [%s]",
477 "Could not map memory for table [%s] at %p",
486 "Invalid signature 0x%X for ACPI table, expected [%s]",
538 if (final_table != table) {
566 static acpi_physical_address
575 if (table_entry_size ==
sizeof(
u32)) {
580 return ((acpi_physical_address)
590 #if ACPI_MACHINE_WIDTH == 32
596 "64-bit Physical Address in XSDT is too large (0x%8.8X%8.8X),"
601 return ((acpi_physical_address) (address64));
626 u32 table_entry_size;
660 table_entry_size =
sizeof(
u64);
661 rsdt_address = (acpi_physical_address)
667 table_entry_size =
sizeof(
u32);
676 if (table_entry_size ==
sizeof(
u64)) {
679 address = rsdt_address;
680 table_entry_size =
sizeof(
u32);
701 "Invalid table length 0x%X in RSDT/XSDT",
735 for (i = 0; i < table_count; i++) {
744 "Truncating %u table entries!",
745 (
unsigned) (table_count -
747 current_table_count -
756 current_table_count].address =
757 acpi_tb_get_root_table_entry(table_entry, table_entry_size);
759 table_entry += table_entry_size;