-/* Copyright (c) 2015-2022. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2015-2023. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
#include <libunwind.h>
-namespace simgrid {
-namespace mc {
+namespace simgrid::mc {
// ***** Implementation
// Take a copy of the context for our own purpose:
this->unwind_context_ = *c;
-#if SIMGRID_PROCESSOR_x86_64 || SIMGRID_PROCESSOR_i686 || defined(__aarch64__)
+#if SIMGRID_PROCESSOR_x86_64 || SIMGRID_PROCESSOR_i686
#ifdef __linux__
// On x86_64, ucontext_t contains a pointer to itself for FP registers.
// We don't really need support for FR registers as they are caller saved
// Let's ignore this and see what happens:
this->unwind_context_.uc_mcontext.fpregs = nullptr;
#endif
+#elif SIMGRID_PROCESSOR_arm64
+#ifdef __linux__
+ // On ARM64, ucontext_t doesn't contain `fpregs` and the FP registers
+ // are instead held in the `__reserved` field of the struct. It doesn't
+ // appear anything needs to be done here, although this should be verified
+#endif
#else
// Do we need to do any fixup like this?
#error Target CPU type is not handled.
return cursor;
}
-} // namespace mc
-} // namespace simgrid
+} // namespace simgrid::mc