rk/acpi.h
2024-05-20 05:59:07 -04:00

46 lines
937 B
C

#ifndef ACPI_H_
#define ACPI_H_
#include <stdint.h>
#define BIOS_START 0x000E0000
#define BIOS_END 0x000FFFFF
#define RSDP_SIG "RSD PTR "
#define RSDP_SIG_LEN 8
#define RSDP_SIZE 20
#define ACPI_VER_1 0
#define ACPI_VER_OTHER 2
struct rsdp {
char Signature[RSDP_SIG_LEN];
uint8_t Checksum;
char OEMID[6];
uint8_t Revision;
uint32_t RsdtAddress;
} __attribute__ ((packed));
struct ACPISDTHeader {
char Signature[4];
uint32_t Length;
uint8_t Revision;
uint8_t Checksum;
char OEMID[6];
char OEMTableID[8];
uint32_t OEMRevision;
uint32_t CreatorID;
uint32_t CreatorRevision;
};
struct rsdt {
struct ACPISDTHeader h;
uint32_t other_sdt[];
};
struct rsdp *acpi_search_for_rsdp();
int acpi_validate_rsdp_checksum(struct rsdp *s);
int acpi_validate_sdt_checksum(struct ACPISDTHeader *s);
struct ACPISDTHeader *acpi_find_table(struct rsdt *root, const char *signature);
#endif