From f7ca4eff84fa67283f0e0ac1e107e4bd6f569ca0 Mon Sep 17 00:00:00 2001 From: Amlal EL Mahrouss Date: Sun, 7 Jul 2024 10:35:32 +0200 Subject: MHR-36: Implementing ARM64 support: Implementing GT. Signed-off-by: Amlal EL Mahrouss --- Kernel/HALKit/AMD64/HalTimer.cxx | 14 ++++ Kernel/HALKit/ARM64/HalTimer.cxx | 11 +++- Kernel/KernelKit/Framebuffer.hpp | 10 +-- Kernel/Sources/Framebuffer.cxx | 136 ++++++++++++++++++++++----------------- 4 files changed, 103 insertions(+), 68 deletions(-) (limited to 'Kernel') diff --git a/Kernel/HALKit/AMD64/HalTimer.cxx b/Kernel/HALKit/AMD64/HalTimer.cxx index e69de29b..448fbca9 100644 --- a/Kernel/HALKit/AMD64/HalTimer.cxx +++ b/Kernel/HALKit/AMD64/HalTimer.cxx @@ -0,0 +1,14 @@ +/* ------------------------------------------- + + Copyright Zeta Electronics Corporation + + File: HalTimer.cxx + Purpose: HAL timer + + Revision History: + + 07/07/24: Added file (amlel) + +------------------------------------------- */ + +#include \ No newline at end of file diff --git a/Kernel/HALKit/ARM64/HalTimer.cxx b/Kernel/HALKit/ARM64/HalTimer.cxx index aa39adef..6b59162c 100644 --- a/Kernel/HALKit/ARM64/HalTimer.cxx +++ b/Kernel/HALKit/ARM64/HalTimer.cxx @@ -2,6 +2,15 @@ Copyright Zeta Electronics Corporation + File: HalTimer.cxx + Purpose: HAL timer + + Revision History: + + 07/07/24: Added file (amlel) + ------------------------------------------- */ -#include +#include + +struct TimerInfoStruct; diff --git a/Kernel/KernelKit/Framebuffer.hpp b/Kernel/KernelKit/Framebuffer.hpp index 6cafb767..86e77afc 100644 --- a/Kernel/KernelKit/Framebuffer.hpp +++ b/Kernel/KernelKit/Framebuffer.hpp @@ -35,14 +35,8 @@ namespace Kernel class Framebuffer final { public: - explicit Framebuffer(Ref& addr) - : fFrameBufferAddr(addr) - { - } - - ~Framebuffer() - { - } + explicit Framebuffer(Ref& addr); + ~Framebuffer() = default; Framebuffer& operator=(const Framebuffer&) = delete; Framebuffer(const Framebuffer&) = default; diff --git a/Kernel/Sources/Framebuffer.cxx b/Kernel/Sources/Framebuffer.cxx index 2e0333d7..440bd3a4 100644 --- a/Kernel/Sources/Framebuffer.cxx +++ b/Kernel/Sources/Framebuffer.cxx @@ -9,88 +9,106 @@ 01/02/24: Added file (amlel) 02/02/24: Add documentation (amlel) + 07/07/07: Moved Framebuffer methods into Kernel:: ------------------------------------------- */ #include +#include /** * @brief Framebuffer object implementation. * */ -using namespace Kernel; - namespace Kernel { - const UInt32 kRgbRed = 0x000000FF; - const UInt32 kRgbGreen = 0x0000FF00; - const UInt32 kRgbBlue = 0x00FF0000; - const UInt32 kRgbBlack = 0x00000000; - const UInt32 kRgbWhite = 0xFFFFFFFF; -} // namespace Kernel + Framebuffer::Framebuffer(_Input Ref& addr) + : fFrameBufferAddr(addr) + { + } -/** - * @brief Get Pixel at - * - * @param pos position of pixel. - * @return volatile* - */ -volatile UIntPtr* Framebuffer::operator[](const UIntPtr& pos) -{ - return (UIntPtr*)(fFrameBufferAddr->fBase * pos); -} + /** + * @brief Get Pixel at **pos** + * + * @param pos position of pixel. + * @return volatile* + */ + _Output volatile UIntPtr* Framebuffer::operator[](_Input const UIntPtr& pos) + { + return (UIntPtr*)(fFrameBufferAddr->fBase * pos); + } -/// @brief Boolean operator. -Framebuffer::operator bool() -{ - return fFrameBufferAddr.Leak()->fBase != 0 && - fColour != FramebufferColorKind::INVALID && - fFrameBufferAddr.Leak()->fBase != kBadPtr; -} - -/// @brief Set color kind of framebuffer. -/// @param colour -/// @return -const FramebufferColorKind& Framebuffer::Color( - const FramebufferColorKind& colour) -{ - if (fColour != FramebufferColorKind::INVALID && - colour != FramebufferColorKind::INVALID) + /// @brief Boolean operator. + Framebuffer::operator bool() { - fColour = colour; + return fFrameBufferAddr.Leak()->fBase != 0 && + fColour != FramebufferColorKind::INVALID && + fFrameBufferAddr.Leak()->fBase != kBadPtr; } - return fColour; -} + /// @brief Set color kind of framebuffer. + /// @param colour + /// @return + _Output const FramebufferColorKind& Framebuffer::Color( + const FramebufferColorKind& colour) + { + if (fColour != FramebufferColorKind::INVALID && + colour != FramebufferColorKind::INVALID) + { + fColour = colour; + } + + return fColour; + } -/// @brief Leak framebuffer context. -/// @return The reference of the framebuffer context. -Ref& Framebuffer::Leak() -{ - return this->fFrameBufferAddr; -} + /// @brief Leak framebuffer context. + /// @return The reference of the framebuffer context. + _Output Ref& Framebuffer::Leak() + { + return this->fFrameBufferAddr; + } -Framebuffer& Framebuffer::DrawRect(SizeT width, SizeT height, SizeT x, SizeT y, UInt32 color) -{ - for (Kernel::SizeT i = x; i < width + x; ++i) + /// @brief Draws a rectangle. + /// @param width + /// @param height + /// @param x + /// @param y + /// @param color + /// @return + _Output Framebuffer& Framebuffer::DrawRect(SizeT width, SizeT height, + SizeT x, SizeT y, UInt32 color) { - for (Kernel::SizeT u = y; u < height + y; ++u) + for (Kernel::SizeT i = x; i < width + x; ++i) { - *(((volatile Kernel::UInt32*)(fFrameBufferAddr.Leak()->fBase + - 4 * fFrameBufferAddr.Leak()->fBpp * i + - 4 * u))) = color; + for (Kernel::SizeT u = y; u < height + y; ++u) + { + *(((volatile Kernel::UInt32*)(fFrameBufferAddr.Leak()->fBase + + 4 * fFrameBufferAddr.Leak()->fBpp * i + + 4 * u))) = color; + } } + + return *this; } - return *this; -} + /// @brief Put a pixel on the screen. + /// @param x + /// @param y + /// @param color + /// @return + _Output Framebuffer& Framebuffer::PutPixel(SizeT x, SizeT y, UInt32 color) + { + *(((volatile Kernel::UInt32*)(fFrameBufferAddr.Leak()->fBase + + 4 * fFrameBufferAddr.Leak()->fBpp * x + + 4 * y))) = color; -Framebuffer& Framebuffer::PutPixel(SizeT x, SizeT y, UInt32 color) -{ - *(((volatile Kernel::UInt32*)(fFrameBufferAddr.Leak()->fBase + - 4 * fFrameBufferAddr.Leak()->fBpp * x + - 4 * y))) = color; + return *this; + } - return *this; -} \ No newline at end of file + const UInt32 kRgbRed = 0x000000FF; + const UInt32 kRgbGreen = 0x0000FF00; + const UInt32 kRgbBlue = 0x00FF0000; + const UInt32 kRgbBlack = 0x00000000; + const UInt32 kRgbWhite = 0xFFFFFFFF; +} // namespace Kernel -- cgit v1.2.3