libcopp 2.3.1
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fcontext_x86_64_win.hpp
Go to the documentation of this file.
1// Copyright 2023 owent
2
3#pragma once
4
5#include <libcopp/utils/config/libcopp_build_features.h>
6
7// clang-format off
8#include <libcopp/utils/config/stl_include_prefix.h> // NOLINT(build/include_order)
9// clang-format on
10#include <stdint.h>
11#include <cstddef>
12// clang-format off
13#include <libcopp/utils/config/stl_include_suffix.h> // NOLINT(build/include_order)
14// clang-format on
15
18
19#if defined(LIBCOPP_MACRO_COMPILER_MSVC)
20# pragma warning(push)
21# pragma warning(disable : 4351)
22#endif
23
24#ifdef LIBCOPP_HAS_ABI_HEADERS
25# include LIBCOPP_ABI_PREFIX
26#endif
27
28LIBCOPP_COPP_NAMESPACE_BEGIN
29namespace fcontext {
30
31extern "C" {
32
33#define LIBCOPP_BOOST_CONTEXT_CALLDECL
34
35struct stack_t {
36 void *sp;
37 std::size_t size;
38 void *limit;
39
40 stack_t() : sp(0), size(0), limit(0) {}
41};
42
43struct fcontext_t {
44 uint64_t fc_greg[10];
45 stack_t fc_stack;
46 void *fc_local_storage;
47 uint64_t fc_fp[24];
48 uint64_t fc_dealloc;
49
51};
52}
53} // namespace fcontext
54LIBCOPP_COPP_NAMESPACE_END
55
56#ifdef LIBCOPP_HAS_ABI_HEADERS
57# include LIBCOPP_ABI_SUFFIX
58#endif
59
60#if defined(LIBCOPP_MACRO_COMPILER_MSVC)
61# pragma warning(pop)
62#endif