libcopp  2.2.0
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 
17 #include "libcopp/utils/features.h"
18 
19 #if defined(COPP_MACRO_COMPILER_MSVC)
20 # pragma warning(push)
21 # pragma warning(disable : 4351)
22 #endif
23 
24 #ifdef COPP_HAS_ABI_HEADERS
25 # include COPP_ABI_PREFIX
26 #endif
27 
28 LIBCOPP_COPP_NAMESPACE_BEGIN
29 namespace fcontext {
30 
31 extern "C" {
32 
33 #define COPP_BOOST_CONTEXT_CALLDECL
34 
35 struct 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 
43 struct 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
54 LIBCOPP_COPP_NAMESPACE_END
55 
56 #ifdef COPP_HAS_ABI_HEADERS
57 # include COPP_ABI_SUFFIX
58 #endif
59 
60 #if defined(COPP_MACRO_COMPILER_MSVC)
61 # pragma warning(pop)
62 #endif
void * fcontext_t
Definition: fcontext.hpp:27
uint32_t fc_greg[11]
std::size_t size