From b9ece9bbcb376f4e36fe13ccb261fcfff8da8e7b Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Fri, 25 Mar 2016 01:21:37 -0400 Subject: [PATCH] Add MemoryManager class This will be the top-level class for the memory manager subsystem. Copy in some code from kmain() --- src/Memory.cc | 37 +++++++++++++++++++++++++++++++++++++ src/Memory.hh | 30 ++++++++++++++++++++++++++++++ src/SConscript | 1 + 3 files changed, 68 insertions(+) create mode 100644 src/Memory.cc create mode 100644 src/Memory.hh diff --git a/src/Memory.cc b/src/Memory.cc new file mode 100644 index 0000000..66342a6 --- /dev/null +++ b/src/Memory.cc @@ -0,0 +1,37 @@ +/* Memory.cc + * vim: set tw=80: + * Eryn Wells + */ +/** + * Top-level classes for managing system memory. + */ + +#include "Memory.hh" + +namespace kernel { + +/* + * Public + */ + +void +MemoryManager::initialize(Console& console) +{ + initializeGDT(); + console.printString("GDT loaded\n"); +} + +/* + * Private + */ + +void +MemoryManager::initializeGDT() +{ + mGDT.setNullDescriptor(0); + mGDT.setDescriptor(1, x86::GDT::DescriptorSpec::kernelSegment(0, 0xFFFFFFFF, x86::GDT::Type::CodeEXR)); + mGDT.setDescriptor(2, x86::GDT::DescriptorSpec::kernelSegment(0, 0xFFFFFFFF, x86::GDT::Type::DataRW)); + mGDT.load(); +} + +} /* namespace kernel */ diff --git a/src/Memory.hh b/src/Memory.hh new file mode 100644 index 0000000..257c17a --- /dev/null +++ b/src/Memory.hh @@ -0,0 +1,30 @@ +/* Memory.hh + * vim: set tw=80: + * Eryn Wells + */ +/** + * Declaration of top-level classes for managing system memory. + */ + +#ifndef __MEMORY_HH__ +#define __MEMORY_HH__ + +#include "Console.hh" +#include "Descriptors.hh" + + +namespace kernel { + +struct MemoryManager +{ + void initialize(Console& console); + +private: + x86::GDT mGDT; + + void initializeGDT(); +}; + +} /* namespace kernel */ + +#endif /* __MEMORY_HH__ */ diff --git a/src/SConscript b/src/SConscript index cdf8a01..d3af908 100644 --- a/src/SConscript +++ b/src/SConscript @@ -15,6 +15,7 @@ files = [ 'Descriptors.cc', 'Interrupts.cc', 'Kernel.cc', + 'Memory.cc', 'Multiboot.cc', 'PIC.cc', 'cxa.cc',