Loading...
Searching...
No Matches
Go to the documentation of this file.
11#ifndef __OSDEP_ABI_H__
12#define __OSDEP_ABI_H__
17#define NO_EXPECTED_WARNINGS_BEGIN \
18 _Pragma("clang diagnostic push") \
19 _Pragma("clang diagnostic ignored \"-Wunused-parameter\"") \
20 _Pragma("clang diagnostic ignored \"-Wlanguage-extension-token\"")
21#define NO_EXPECTED_WARNINGS_END \
22 _Pragma("clang diagnostic pop")
24#elif defined(__GNUC__)
27#define NO_EXPECTED_WARNINGS_BEGIN \
28 _Pragma("GCC diagnostic push") \
29 _Pragma("GCC diagnostic ignored \"-Wunused-parameter\"")
30#define NO_EXPECTED_WARNINGS_END \
31 _Pragma("GCC diagnostic pop")
36#define NO_EXPECTED_WARNINGS_BEGIN
37#define NO_EXPECTED_WARNINGS_END
41#define __APCS_WRAPPER_BASE(NAME, VA_LIST_NAME, STATIC, RETTYPE, ...) \
42 NO_EXPECTED_WARNINGS_BEGIN \
43 __attribute__((naked)) STATIC RETTYPE NAME(__VA_ARGS__) { \
50 "add r0, sp, #4\n\t" \
56 "subeq sp, sp, #4\n\t" \
60 "bl __osdep_apcs_thunk_"#NAME "\n\t" \
65 "addne sp, sp, #4\n\t" \
69 "add sp, sp, #16\n\t" \
73 NO_EXPECTED_WARNINGS_END \
74 __attribute__((used)) static RETTYPE __osdep_apcs_thunk_##NAME(va_list VA_LIST_NAME)
111#define APCS_WRAPPER(NAME, VA_LIST_NAME, RETTYPE, ...) \
112 __APCS_WRAPPER_BASE(NAME, VA_LIST_NAME, , RETTYPE, __VA_ARGS__)
124#define APCS_WRAPPER_STATIC(NAME, VA_LIST_NAME, RETTYPE, ...) \
125 __APCS_WRAPPER_BASE(NAME, VA_LIST_NAME, static, RETTYPE, __VA_ARGS__)