Rev 4153 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 4153 | Rev 4581 | ||
|---|---|---|---|
| Line 165... | Line 165... | ||
| 165 | 165 | ||
| 166 | rsdp_found: |
166 | rsdp_found: |
| 167 | LOG("%p: ACPI Root System Description Pointer\n", acpi_rsdp); |
167 | LOG("%p: ACPI Root System Description Pointer\n", acpi_rsdp); |
| 168 | 168 | ||
| 169 | acpi_rsdt = (struct acpi_rsdt *) (unative_t) acpi_rsdp->rsdt_address; |
169 | acpi_rsdt = (struct acpi_rsdt *) (unative_t) acpi_rsdp->rsdt_address; |
| - | 170 | if (acpi_rsdp->revision) |
|
| 170 | if (acpi_rsdp->revision) acpi_xsdt = (struct acpi_xsdt *) ((uintptr_t) acpi_rsdp->xsdt_address); |
171 | acpi_xsdt = (struct acpi_xsdt *) ((uintptr_t) acpi_rsdp->xsdt_address); |
| 171 | 172 | ||
| - | 173 | if (acpi_rsdt) |
|
| 172 | if (acpi_rsdt) map_sdt((struct acpi_sdt_header *) acpi_rsdt); |
174 | map_sdt((struct acpi_sdt_header *) acpi_rsdt); |
| - | 175 | if (acpi_xsdt) |
|
| 173 | if (acpi_xsdt) map_sdt((struct acpi_sdt_header *) acpi_xsdt); |
176 | map_sdt((struct acpi_sdt_header *) acpi_xsdt); |
| 174 | 177 | ||
| 175 | if (acpi_rsdt && !acpi_sdt_check((uint8_t *) acpi_rsdt)) { |
178 | if (acpi_rsdt && !acpi_sdt_check((uint8_t *) acpi_rsdt)) { |
| 176 | printf("RSDT: bad checksum\n"); |
179 | printf("RSDT: bad checksum\n"); |
| 177 | return; |
180 | return; |
| 178 | } |
181 | } |
| 179 | if (acpi_xsdt && !acpi_sdt_check((uint8_t *) acpi_xsdt)) { |
182 | if (acpi_xsdt && !acpi_sdt_check((uint8_t *) acpi_xsdt)) { |
| 180 | printf("XSDT: bad checksum\n"); |
183 | printf("XSDT: bad checksum\n"); |
| 181 | return; |
184 | return; |
| 182 | } |
185 | } |
| 183 | 186 | ||
| - | 187 | if (acpi_xsdt) |
|
| 184 | if (acpi_xsdt) configure_via_xsdt(); |
188 | configure_via_xsdt(); |
| - | 189 | else if (acpi_rsdt) |
|
| 185 | else if (acpi_rsdt) configure_via_rsdt(); |
190 | configure_via_rsdt(); |
| 186 | 191 | ||
| 187 | } |
192 | } |
| 188 | 193 | ||
| 189 | /** @} |
194 | /** @} |
| 190 | */ |
195 | */ |