Merge tag 'v3.14.25' into backport/v3.14.24-ltsi-rc1+v3.14.25/snapshot-merge.wip
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / staging / ktap / runtime / ffi / ffi_type.c
1 #include "../../include/ktap_ffi.h"
2 #ifdef __KERNEL__
3 #include <linux/types.h>
4 #else
5 #include <stdint.h>
6 #include <stddef.h>
7 #endif
8
9 #define CTYPE_MODE_HELPER(name, type)   \
10 struct _##name##_align {                \
11         type t1;                        \
12         char c;                         \
13         type t2;                        \
14 };
15
16 #define CTYPE_MODE(name)                                \
17 {                                                       \
18         offsetof(struct _##name##_align, c),            \
19         offsetof(struct _##name##_align, t2) -          \
20                 offsetof(struct _##name##_align, c),    \
21         #name                                   \
22 }
23
24 #define CTYPE_MODE_NAME(name) _##name##_mode
25
26 /* ffi_ctype_mode should be corresponded to ffi_ctype */
27 CTYPE_MODE_HELPER(uint8, uint8_t);
28 CTYPE_MODE_HELPER(int8, int8_t);
29 CTYPE_MODE_HELPER(uint16, uint16_t);
30 CTYPE_MODE_HELPER(int16, int16_t);
31 CTYPE_MODE_HELPER(uint32, uint32_t);
32 CTYPE_MODE_HELPER(int32, int32_t);
33 CTYPE_MODE_HELPER(uint64, uint64_t);
34 CTYPE_MODE_HELPER(int64, int64_t);
35 CTYPE_MODE_HELPER(pointer, void*);
36
37 const ffi_mode ffi_type_modes[NUM_FFI_TYPE+1] = {
38         {0, 1, "void"},
39         CTYPE_MODE(uint8),
40         CTYPE_MODE(int8),
41         CTYPE_MODE(uint16),
42         CTYPE_MODE(int16),
43         CTYPE_MODE(uint32),
44         CTYPE_MODE(int32),
45         CTYPE_MODE(uint64),
46         CTYPE_MODE(int64),
47         CTYPE_MODE(pointer),
48         {0, 1, "function"},
49         {0, 1, "struct"},
50         {0, 1, "unknown"},
51 };