blob: d165e022db99b96f6c07b884b945accd019f2cf7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
#include "NMWException.h"
#include "__ppc_eabi_linker.h"
#include "global.h"
#if __MWERKS__
#pragma exceptions off
#pragma internal on
#endif
#ifdef __cplusplus
extern "C" {
#endif
extern void __init_cpp_exceptions(void);
extern void __fini_cpp_exceptions(void);
#ifdef __cplusplus
}
#endif
static int fragmentID = -2;
/* clang-format off */
static ASM char* GetR2() {
#ifdef __MWERKS__
nofralloc;
mr r3, r2
blr
#endif
}
/* clang-format on */
void __init_cpp_exceptions(void) {
char* R2;
if (fragmentID == -2) {
R2 = GetR2();
fragmentID = __register_fragment(_eti_init_info, R2);
}
}
void __fini_cpp_exceptions(void) {
if (fragmentID != -2) {
__unregister_fragment(fragmentID);
fragmentID = -2;
}
}
/* clang-format off */
__declspec(section ".ctors")
static void* const __init_cpp_exceptions_reference = __init_cpp_exceptions;
__declspec(section ".dtors")
static void* const __destroy_global_chain_reference = __destroy_global_chain;
__declspec(section ".dtors")
static void* const __fini_cpp_exceptions_reference = __fini_cpp_exceptions;
/* clang-format on */
|