From 9a35946aec28e6b9dd383d14394bf3f92544b399 Mon Sep 17 00:00:00 2001 From: Merry Date: Sun, 24 Jul 2022 00:35:52 +0100 Subject: [PATCH] oaknut: align --- externals/oaknut/include/oaknut/oaknut.hpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/externals/oaknut/include/oaknut/oaknut.hpp b/externals/oaknut/include/oaknut/oaknut.hpp index 7e80992d..4aea7a53 100644 --- a/externals/oaknut/include/oaknut/oaknut.hpp +++ b/externals/oaknut/include/oaknut/oaknut.hpp @@ -159,6 +159,16 @@ public: } } + void align(std::size_t alignment) + { + if (alignment < 4 || (alignment & (alignment - 1)) != 0) + throw "invalid alignment"; + + while (Policy::template ptr() & (alignment - 1)) { + NOP(); + } + } + void dw(std::uint32_t value) { Policy::append(value); @@ -235,7 +245,7 @@ public: template T ptr() { - static_assert(std::is_pointer_v); + static_assert(std::is_pointer_v || std::is_same_v || std::is_same_v); return reinterpret_cast(m_ptr); }