diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/include/sys/misc.h | 11 | ||||
-rw-r--r-- | src/lib/syscall_misc.C | 6 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/include/sys/misc.h b/src/include/sys/misc.h index af44d7ce8..b4001d501 100644 --- a/src/include/sys/misc.h +++ b/src/include/sys/misc.h @@ -202,6 +202,17 @@ enum CpuSprNames */ uint64_t cpu_spr_value(CpuSprNames spr); + +/** @fn cpu_hrmor_nodal_base + * @brief Provides the hrmor nodal base address + * + * This is used, for instance, when determining multi-node + * memory mirroring address calculations + * + * @return The hrmor nodal base address + */ +uint64_t cpu_hrmor_nodal_base(); + /** @fn cpu_spr_set * @brief Writes an SPR. * diff --git a/src/lib/syscall_misc.C b/src/lib/syscall_misc.C index a2b4ab1e4..e15007f3b 100644 --- a/src/lib/syscall_misc.C +++ b/src/lib/syscall_misc.C @@ -27,6 +27,7 @@ #include <sys/misc.h> #include <sys/syscall.h> #include <sys/task.h> +#include <usr/vmmconst.h> using namespace Systemcalls; @@ -93,6 +94,11 @@ uint64_t cpu_spr_value(CpuSprNames spr) _syscall1(MISC_CPUSPRVALUE, reinterpret_cast<void*>(spr))); } +uint64_t cpu_hrmor_nodal_base() +{ + return (cpu_spr_value(CPU_SPR_HRMOR) - VMM_HRMOR_OFFSET); +} + uint64_t cpu_spr_set(CpuSprNames spr, uint64_t newValue) { return reinterpret_cast<uint64_t>( |