BarinkOS/kernel/acpi/rsdp.h

46 lines
927 B
C
Raw Normal View History

#pragma once
2023-02-21 13:36:20 +00:00
#include "../terminal/kterm.h"
#include <CoreLib/Memory.h>
2023-02-21 13:36:20 +00:00
#include <stdint-gcc.h>
struct ACPISDTHeader{
char Signature[4];
uint32_t Length;
2023-02-21 13:36:20 +00:00
uint8_t Revision;
uint8_t CheckSum;
char OEMID[6];
char OEMTableID[8];
uint32_t OEMRevision;
uint32_t CreatorID;
uint32_t CreatorRevision;
2023-02-21 13:36:20 +00:00
};
struct RSDT{
2023-02-21 13:36:20 +00:00
struct ACPISDTHeader h;
uint32_t PointerToSDT[]; // Length of array : (header.Length - sizeof(header))/ 4
}__attribute__((packed));
struct RSDPDescriptor {
char signature[8];
uint8_t Checksum ;
char OEMID [6];
uint8_t Revision;
RSDT* RsdtAddress;
}__attribute__((packed));
struct RSCPDescriptor20{
RSDPDescriptor base;
uint32_t Length;
uint64_t XsdtAddress;
uint8_t ExtendedChecksum;
uint8_t reserved[3];
}__attribute__((packed));
2023-02-21 13:36:20 +00:00
RSDPDescriptor* FindRSD();
2023-02-21 13:36:20 +00:00
void printRSD(RSDPDescriptor* rsd);
2023-02-21 13:36:20 +00:00
RSDT* getRSDT(RSDPDescriptor* rsd);