1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | #ifndef __IMMINTRIN_H |
25 | #error "Never use <cetintrin.h> directly; include <immintrin.h> instead." |
26 | #endif |
27 | |
28 | #ifndef __CETINTRIN_H |
29 | #define __CETINTRIN_H |
30 | |
31 | |
32 | #define __DEFAULT_FN_ATTRS \ |
33 | __attribute__((__always_inline__, __nodebug__, __target__("shstk"))) |
34 | |
35 | static __inline__ void __DEFAULT_FN_ATTRS _incsspd(int __a) { |
36 | __builtin_ia32_incsspd(__a); |
37 | } |
38 | |
39 | #ifdef __x86_64__ |
40 | static __inline__ void __DEFAULT_FN_ATTRS _incsspq(unsigned long long __a) { |
41 | __builtin_ia32_incsspq(__a); |
42 | } |
43 | #endif |
44 | |
45 | #ifdef __x86_64__ |
46 | static __inline__ void __DEFAULT_FN_ATTRS _inc_ssp(unsigned int __a) { |
47 | __builtin_ia32_incsspq(__a); |
48 | } |
49 | #else |
50 | static __inline__ void __DEFAULT_FN_ATTRS _inc_ssp(unsigned int __a) { |
51 | __builtin_ia32_incsspd((int)__a); |
52 | } |
53 | #endif |
54 | |
55 | static __inline__ unsigned int __DEFAULT_FN_ATTRS _rdsspd(unsigned int __a) { |
56 | return __builtin_ia32_rdsspd(__a); |
57 | } |
58 | |
59 | #ifdef __x86_64__ |
60 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS _rdsspq(unsigned long long __a) { |
61 | return __builtin_ia32_rdsspq(__a); |
62 | } |
63 | #endif |
64 | |
65 | #ifdef __x86_64__ |
66 | static __inline__ unsigned long long __DEFAULT_FN_ATTRS _get_ssp(void) { |
67 | return __builtin_ia32_rdsspq(0); |
68 | } |
69 | #else |
70 | static __inline__ unsigned int __DEFAULT_FN_ATTRS _get_ssp(void) { |
71 | return __builtin_ia32_rdsspd(0); |
72 | } |
73 | #endif |
74 | |
75 | static __inline__ void __DEFAULT_FN_ATTRS _saveprevssp() { |
76 | __builtin_ia32_saveprevssp(); |
77 | } |
78 | |
79 | static __inline__ void __DEFAULT_FN_ATTRS (void * __p) { |
80 | __builtin_ia32_rstorssp(__p); |
81 | } |
82 | |
83 | static __inline__ void __DEFAULT_FN_ATTRS (unsigned int __a, void * __p) { |
84 | __builtin_ia32_wrssd(__a, __p); |
85 | } |
86 | |
87 | #ifdef __x86_64__ |
88 | static __inline__ void __DEFAULT_FN_ATTRS (unsigned long long __a, void * __p) { |
89 | __builtin_ia32_wrssq(__a, __p); |
90 | } |
91 | #endif |
92 | |
93 | static __inline__ void __DEFAULT_FN_ATTRS _wrussd(unsigned int __a, void * __p) { |
94 | __builtin_ia32_wrussd(__a, __p); |
95 | } |
96 | |
97 | #ifdef __x86_64__ |
98 | static __inline__ void __DEFAULT_FN_ATTRS _wrussq(unsigned long long __a, void * __p) { |
99 | __builtin_ia32_wrussq(__a, __p); |
100 | } |
101 | #endif |
102 | |
103 | static __inline__ void __DEFAULT_FN_ATTRS _setssbsy() { |
104 | __builtin_ia32_setssbsy(); |
105 | } |
106 | |
107 | static __inline__ void __DEFAULT_FN_ATTRS (void * __p) { |
108 | __builtin_ia32_clrssbsy(__p); |
109 | } |
110 | |
111 | #undef __DEFAULT_FN_ATTRS |
112 | |
113 | #endif |
114 | |