Fixed up ACPI Version 1.0 checksum validation code

This commit is contained in:
2023-02-27 00:32:16 +01:00
parent e6901f0526
commit 2d0bb16fad
5 changed files with 53 additions and 34 deletions

View File

@ -3,13 +3,6 @@
#include <CoreLib/Memory.h>
#include <stdint-gcc.h>
struct RSDPDescriptor {
char signature[8];
uint8_t Checksum ;
char OEMID [6];
uint8_t Revision;
uint32_t RsdtAddress;
}__attribute__((packed));
struct ACPISDTHeader{
char Signature[4];
@ -28,6 +21,24 @@ struct RSDT{
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));
RSDPDescriptor* FindRSD();
void printRSD(RSDPDescriptor* rsd);