From f7f8c1068a9361631f6344daa37ef3e70b8dadce Mon Sep 17 00:00:00 2001 From: apio Date: Tue, 6 Sep 2022 11:46:26 +0200 Subject: [PATCH] Move SDTHeader to separate file --- kernel/include/acpi/RSDT.h | 16 +--------------- kernel/include/acpi/SDT.h | 20 ++++++++++++++++++++ kernel/src/acpi/RSDT.cpp | 9 --------- kernel/src/acpi/SDT.cpp | 10 ++++++++++ 4 files changed, 31 insertions(+), 24 deletions(-) create mode 100644 kernel/include/acpi/SDT.h create mode 100644 kernel/src/acpi/SDT.cpp diff --git a/kernel/include/acpi/RSDT.h b/kernel/include/acpi/RSDT.h index cfcfd73a..a4d634a4 100644 --- a/kernel/include/acpi/RSDT.h +++ b/kernel/include/acpi/RSDT.h @@ -1,21 +1,8 @@ #pragma once -#include +#include "acpi/SDT.h" namespace ACPI { - struct SDTHeader - { - 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 XSDT { SDTHeader header; @@ -29,7 +16,6 @@ namespace ACPI }; SDTHeader* GetRSDTOrXSDT(); - bool ValidateSDTHeader(SDTHeader* header); void* FindTable(SDTHeader* rootSDT, const char* signature); } \ No newline at end of file diff --git a/kernel/include/acpi/SDT.h b/kernel/include/acpi/SDT.h new file mode 100644 index 00000000..a07b343b --- /dev/null +++ b/kernel/include/acpi/SDT.h @@ -0,0 +1,20 @@ +#pragma once +#include + +namespace ACPI +{ + struct SDTHeader + { + 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; + }; + + bool ValidateSDTHeader(SDTHeader* header); +} \ No newline at end of file diff --git a/kernel/src/acpi/RSDT.cpp b/kernel/src/acpi/RSDT.cpp index 4f62eb1e..9446e221 100644 --- a/kernel/src/acpi/RSDT.cpp +++ b/kernel/src/acpi/RSDT.cpp @@ -10,15 +10,6 @@ ACPI::SDTHeader* ACPI::GetRSDTOrXSDT() return (SDTHeader*)bootboot.arch.x86_64.acpi_ptr; } -bool ACPI::ValidateSDTHeader(ACPI::SDTHeader* header) -{ - uint8_t sum = 0; - - for (uint32_t i = 0; i < header->Length; i++) { sum += ((char*)header)[i]; } - - return sum == 0; -} - void* ACPI::FindTable(ACPI::SDTHeader* rootSDT, const char* signature) { bool isXSDT = strncmp(rootSDT->Signature, "XSDT", 4); diff --git a/kernel/src/acpi/SDT.cpp b/kernel/src/acpi/SDT.cpp new file mode 100644 index 00000000..dc75e8a1 --- /dev/null +++ b/kernel/src/acpi/SDT.cpp @@ -0,0 +1,10 @@ +#include "acpi/SDT.h" + +bool ACPI::ValidateSDTHeader(ACPI::SDTHeader* header) +{ + uint8_t sum = 0; + + for (uint32_t i = 0; i < header->Length; i++) { sum += ((char*)header)[i]; } + + return sum == 0; +} \ No newline at end of file