void acpi_create_madt(acpi_madt_t *madt) { acpi_header_t *header = &(madt->header); unsigned long current = (unsigned long)madt + sizeof(acpi_madt_t); memset((void *)madt, 0, sizeof(acpi_madt_t)); /* Fill out header fields. */ memcpy(header->signature, "APIC", 4); memcpy(header->oem_id, OEM_ID, 6); memcpy(header->oem_table_id, ACPI_TABLE_CREATOR, 8); memcpy(header->asl_compiler_id, ASLC, 4); header->length = sizeof(acpi_madt_t); header->revision = 1; /* ACPI 1.0/2.0: 1, ACPI 3.0: 2, ACPI 4.0: 3 */ madt->lapic_addr = LOCAL_APIC_ADDR; madt->flags = 0x1; /* PCAT_COMPAT */ current = acpi_fill_madt(current); /* (Re)calculate length and checksum. */ header->length = current - (unsigned long)madt; header->checksum = acpi_checksum((void *)madt, header->length); }
static void acpi_create_madt(struct acpi_madt *madt) { struct acpi_table_header *header = &(madt->header); u32 current = (u32)madt + sizeof(struct acpi_madt); memset((void *)madt, 0, sizeof(struct acpi_madt)); /* Fill out header fields */ acpi_fill_header(header, "APIC"); header->length = sizeof(struct acpi_madt); header->revision = 4; madt->lapic_addr = LAPIC_DEFAULT_BASE; madt->flags = ACPI_MADT_PCAT_COMPAT; current = acpi_fill_madt(current); /* (Re)calculate length and checksum */ header->length = current - (u32)madt; header->checksum = table_compute_checksum((void *)madt, header->length); }
static void acpi_create_madt(struct acpi_madt *madt) { acpi_header_t *header = &(madt->header); unsigned long current = (unsigned long)madt + sizeof(struct acpi_madt); memset((void *)madt, 0, sizeof(struct acpi_madt)); /* Fill out header fields */ fill_header(header, "APIC", 4); header->length = sizeof(struct acpi_madt); /* ACPI 1.0/2.0: 1, ACPI 3.0: 2, ACPI 4.0: 3 */ header->revision = ACPI_REV_ACPI_2_0; madt->lapic_addr = LAPIC_DEFAULT_BASE; madt->flags = PCAT_COMPAT; current = acpi_fill_madt(current); /* (Re)calculate length and checksum */ header->length = current - (unsigned long)madt; header->checksum = table_compute_checksum((void *)madt, header->length); }