Implement CMOS register access functions
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in -59m3s
Builds / ExectOS (amd64, release) (push) Successful in -59m5s
Builds / ExectOS (i686, debug) (push) Successful in -59m26s
Builds / ExectOS (i686, release) (push) Successful in -59m28s

This commit is contained in:
2026-04-23 19:13:56 +02:00
parent 98f2f449f9
commit 58010c27f4
8 changed files with 123 additions and 1 deletions

View File

@@ -17,9 +17,10 @@ list(APPEND XTOSKRNL_SOURCE
${XTOSKRNL_SOURCE_DIR}/ex/exports.cc
${XTOSKRNL_SOURCE_DIR}/ex/rundown.cc
${XTOSKRNL_SOURCE_DIR}/hl/${ARCH}/cpu.cc
${XTOSKRNL_SOURCE_DIR}/hl/${ARCH}/pic.cc
${XTOSKRNL_SOURCE_DIR}/hl/${ARCH}/firmware.cc
${XTOSKRNL_SOURCE_DIR}/hl/${ARCH}/ioport.cc
${XTOSKRNL_SOURCE_DIR}/hl/${ARCH}/irq.cc
${XTOSKRNL_SOURCE_DIR}/hl/${ARCH}/pic.cc
${XTOSKRNL_SOURCE_DIR}/hl/${ARCH}/runlevel.cc
${XTOSKRNL_SOURCE_DIR}/hl/${ARCH}/timer.cc
${XTOSKRNL_SOURCE_DIR}/hl/acpi.cc

View File

@@ -0,0 +1,13 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/hl/amd64/firmware.cc
* DESCRIPTION: UEFI/BIOS Firmware support
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
*/
#include <xtos.hh>
/* Include common Firmware interface */
#include ARCH_COMMON(firmware.cc)

View File

@@ -0,0 +1,13 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/hl/i686/firmware.cc
* DESCRIPTION: UEFI/BIOS Firmware support
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
*/
#include <xtos.hh>
/* Include common Firmware interface */
#include ARCH_COMMON(firmware.cc)

View File

@@ -0,0 +1,56 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/hl/x86/firmware.cc
* DESCRIPTION: UEFI/BIOS Firmware support
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
*/
#include <xtos.hh>
/**
* Reads a byte from the specified CMOS register.
*
* @param Register
* Supplies the CMOS register index to read from.
*
* @return This routine returns the data read from the register.
*
* @since XT 1.0
*/
XTFASTCALL
UCHAR
HL::Firmware::ReadCmosRegister(IN UCHAR Register)
{
/* Select the register (Setting the highest bit disables NMI) */
HL::IoPort::WritePort8(CMOS_ADDRESS_PORT, Register | 0x80);
/* Read value from the data port */
return HL::IoPort::ReadPort8(CMOS_DATA_PORT);
}
/**
* Writes a byte to the specified CMOS register.
*
* @param Register
* Supplies the CMOS register index to write to.
*
* @param Value
* Supplies the value to write to the register.
*
* @return This routine does not return any value.
*
* @since XT 1.0
*/
XTFASTCALL
VOID
HL::Firmware::WriteCmosRegister(IN UCHAR Register,
IN UCHAR Value)
{
/* Select the register (Setting the highest bit disables NMI) */
HL::IoPort::WritePort8(CMOS_ADDRESS_PORT, Register | 0x80);
/* Write the provided value to the data port */
HL::IoPort::WritePort8(CMOS_DATA_PORT, Value);
}

View File

@@ -15,6 +15,7 @@
#include <hl/cport.hh>
#include <hl/cpu.hh>
#include <hl/fbdev.hh>
#include <hl/firmware.hh>
#include <hl/init.hh>
#include <hl/ioport.hh>
#include <hl/ioreg.hh>

View File

@@ -0,0 +1,27 @@
/**
* PROJECT: ExectOS
* COPYRIGHT: See COPYING.md in the top level directory
* FILE: xtoskrnl/includes/hl/firmware.hh
* DESCRIPTION: UEFI/BIOS Firmware support
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
*/
#ifndef __XTOSKRNL_HL_FIRMWARE_HH
#define __XTOSKRNL_HL_FIRMWARE_HH
#include <xtos.hh>
/* Hardware Layer */
namespace HL
{
class Firmware
{
public:
STATIC XTFASTCALL UCHAR ReadCmosRegister(IN UCHAR Register);
STATIC XTFASTCALL VOID WriteCmosRegister(IN UCHAR Register,
IN UCHAR Value);
};
}
#endif /* __XTOSKRNL_HL_FIRMWARE_HH */