diff options
Diffstat (limited to 'Kernel/FileSystem/SysFS/Subsystems/Firmware/BIOS.cpp')
-rw-r--r-- | Kernel/FileSystem/SysFS/Subsystems/Firmware/BIOS.cpp | 28 |
1 files changed, 1 insertions, 27 deletions
diff --git a/Kernel/FileSystem/SysFS/Subsystems/Firmware/BIOS.cpp b/Kernel/FileSystem/SysFS/Subsystems/Firmware/BIOS.cpp index ad42d1336a..0eea9ac40c 100644 --- a/Kernel/FileSystem/SysFS/Subsystems/Firmware/BIOS.cpp +++ b/Kernel/FileSystem/SysFS/Subsystems/Firmware/BIOS.cpp @@ -8,6 +8,7 @@ #include <AK/StringView.h> #include <Kernel/FileSystem/OpenFileDescription.h> #include <Kernel/FileSystem/SysFS/Subsystems/Firmware/BIOS.h> +#include <Kernel/Firmware/BIOS.h> #include <Kernel/KBufferBuilder.h> #include <Kernel/Memory/MemoryManager.h> #include <Kernel/Memory/TypedMapping.h> @@ -157,31 +158,4 @@ UNMAP_AFTER_INIT Optional<PhysicalAddress> BIOSSysFSDirectory::find_dmi_entry32b return bios_or_error.value().find_chunk_starting_with("_SM_", 16); } -ErrorOr<Memory::MappedROM> map_bios() -{ - Memory::MappedROM mapping; - mapping.size = 128 * KiB; - mapping.paddr = PhysicalAddress(0xe0000); - auto region_size = TRY(Memory::page_round_up(mapping.size)); - mapping.region = TRY(MM.allocate_kernel_region(mapping.paddr, region_size, {}, Memory::Region::Access::Read)); - return mapping; -} - -ErrorOr<Memory::MappedROM> map_ebda() -{ - auto ebda_segment_ptr = TRY(Memory::map_typed<u16>(PhysicalAddress(0x40e))); - PhysicalAddress ebda_paddr(PhysicalAddress(*ebda_segment_ptr).get() << 4); - // The EBDA size is stored in the first byte of the EBDA in 1K units - size_t ebda_size = *TRY(Memory::map_typed<u8>(ebda_paddr)); - ebda_size *= 1024; - - Memory::MappedROM mapping; - auto region_size = TRY(Memory::page_round_up(ebda_size)); - mapping.region = TRY(MM.allocate_kernel_region(ebda_paddr.page_base(), region_size, {}, Memory::Region::Access::Read)); - mapping.offset = ebda_paddr.offset_in_page(); - mapping.size = ebda_size; - mapping.paddr = ebda_paddr; - return mapping; -} - } |