void print_rsdt(acpi_rsdt_t *rsdt) { u32_t i; dbgprintf("ACPI RSD Table\n"); for (i = 0; i < ((rsdt->header.len-sizeof(acpi_thead_t))/ sizeof(rsdt->ptrs[0])); i++) { acpi_thead_t* t = (acpi_thead_t*)acpi_remap_table(rsdt->ptrs[i]); char *p = (char*)&t->sig; dbgprintf("sig %d: %c%c%c%c base %x\n", i, p[0],p[1],p[2],p[3], t); }; };
addr_t __fastcall rsdt_find(acpi_rsdt_t *rsdt, u32_t sig) { addr_t head = 0; u32_t i; for (i = 0; i < ((rsdt->header.len-sizeof(acpi_thead_t))/ sizeof(rsdt->ptrs[0])); i++) { acpi_thead_t* t= (acpi_thead_t*)acpi_remap_table(rsdt->ptrs[i]); if (t->sig == sig) { head = rsdt->ptrs[i]; break; }; } return head; };