Maximilian Stein has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/42823 )

Change subject: arch-x86: Add allocator for ACPI tables
......................................................................

arch-x86: Add allocator for ACPI tables

This adds an allocator class to allocate memory linearly. It is intended
to be used by ACPI tables to dynamically request memory to write the
ACPI tables to.

Change-Id: I43c71d2b8e676f8ac0fd08b9468b00b6212d85b6
Signed-off-by: Maximilian Stein <m...@steiny.biz>
---
M src/arch/x86/bios/acpi.cc
M src/arch/x86/bios/acpi.hh
2 files changed, 32 insertions(+), 0 deletions(-)



diff --git a/src/arch/x86/bios/acpi.cc b/src/arch/x86/bios/acpi.cc
index 20cf088..8cdcdac 100644
--- a/src/arch/x86/bios/acpi.cc
+++ b/src/arch/x86/bios/acpi.cc
@@ -45,6 +45,20 @@
 #include "sim/byteswap.hh"
 #include "sim/sim_object.hh"

+Addr
+X86ISA::ACPI::LinearAllocator::alloc(std::size_t size, unsigned align)
+{
+    if (align) {
+        unsigned offset = next % align;
+        if (offset)
+            next += (align - offset);
+    }
+    Addr chunk = next;
+    next += size;
+    assert(0 == end || next <= end);
+    return chunk;
+}
+
 const char X86ISA::ACPI::RSDP::signature[] = "RSD PTR ";

 X86ISA::ACPI::RSDP::RSDP(const Params &p) : SimObject(p), oemID(p.oem_id),
diff --git a/src/arch/x86/bios/acpi.hh b/src/arch/x86/bios/acpi.hh
index bc6e2cd..e314ab8 100644
--- a/src/arch/x86/bios/acpi.hh
+++ b/src/arch/x86/bios/acpi.hh
@@ -62,6 +62,24 @@
 class XSDT;
 class SysDescTable;

+struct Allocator
+{
+    virtual Addr alloc(std::size_t size, unsigned align = 1) = 0;
+};
+struct LinearAllocator : public Allocator
+{
+    LinearAllocator(Addr begin, Addr end = 0)
+        : next(begin)
+        , end(end)
+    {}
+
+    Addr alloc(std::size_t size, unsigned align) override;
+
+  protected:
+    Addr next;
+    Addr const end;
+};
+
 class RSDP : public SimObject
 {
   protected:

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/42823
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I43c71d2b8e676f8ac0fd08b9468b00b6212d85b6
Gerrit-Change-Number: 42823
Gerrit-PatchSet: 1
Gerrit-Owner: Maximilian Stein <m...@steiny.biz>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to