-/* Copyright (c) 2009-2020. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2009-2022. 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 "ContextRaw.hpp"
#include "mc/mc.h"
#include "simgrid/Exception.hpp"
-#include "src/simix/smx_private.hpp"
-XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix_context);
+XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(ker_context);
// Raw context routines
-typedef void (*rawctx_entry_point_t)(simgrid::kernel::context::SwappedContext*);
+using rawctx_entry_point_t = void (*)(simgrid::kernel::context::SwappedContext*);
-typedef void* raw_stack_t;
+using raw_stack_t = void*;
extern "C" raw_stack_t raw_makecontext(void* malloced_stack, int stack_size, rawctx_entry_point_t entry_point,
simgrid::kernel::context::SwappedContext* arg);
extern "C" void raw_swapcontext(raw_stack_t* old, raw_stack_t new_context);
// TODO, we should handle FP, MMX and the x87 control-word (for x86 and x86_64)
+#if HAVE_RAW_CONTEXTS
+
#if SIMGRID_PROCESSOR_x86_64
__asm__ (
#if defined(__APPLE__)
" retl\n"
);
#else
+#error HAVE_RAW_CONTEXTS defined, but neither SIMGRID_PROCESSOR_x86_64 nor SIMGRID_PROCESSOR_i686. Please update the code.
+#endif
+#else /* not HAVE_RAW_CONTEXTS */
/* If you implement raw contexts for other processors, don't forget to
update the definition of HAVE_RAW_CONTEXTS in tools/cmake/CompleteInFiles.cmake */
this->stack_top_ = raw_makecontext(get_stack(), actor->get_stacksize(), smx_ctx_wrapper, this);
} else {
if (MC_is_active())
- MC_ignore_heap(&stack_top_, sizeof(stack_top_));
+ MC_ignore_heap(&stack_top_, sizeof stack_top_);
}
}