X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=thunk.h;h=87025c3b04dd91e78008830281fbbced24e133f6;hb=5b17056e3d5c144103dd2c3d71466482093bfa8c;hp=109c541f0f3bd3bc52526456865950294df08096;hpb=df8b863e2f7219eb3356ecc12635811241e38aad;p=sdk%2Femulator%2Fqemu.git diff --git a/thunk.h b/thunk.h index 109c541..87025c3 100644 --- a/thunk.h +++ b/thunk.h @@ -37,6 +37,7 @@ typedef enum argtype { TYPE_PTR, TYPE_ARRAY, TYPE_STRUCT, + TYPE_OLDDEVT, } argtype; #define MK_PTR(type) TYPE_PTR, type @@ -99,11 +100,36 @@ static inline int thunk_type_size(const argtype *type_ptr, int is_host) case TYPE_PTRVOID: case TYPE_PTR: if (is_host) { - return HOST_LONG_SIZE; + return sizeof(void *); } else { return TARGET_ABI_BITS / 8; } break; + case TYPE_OLDDEVT: + if (is_host) { +#if defined(HOST_X86_64) + return 8; +#elif defined(HOST_ALPHA) || defined(HOST_IA64) || defined(HOST_MIPS) || \ + defined(HOST_PARISC) || defined(HOST_SPARC64) + return 4; +#elif defined(HOST_PPC) + return sizeof(void *); +#else + return 2; +#endif + } else { +#if defined(TARGET_X86_64) + return 8; +#elif defined(TARGET_ALPHA) || defined(TARGET_IA64) || defined(TARGET_MIPS) || \ + defined(TARGET_PARISC) || defined(TARGET_SPARC64) + return 4; +#elif defined(TARGET_PPC) + return TARGET_ABI_BITS / 8; +#else + return 2; +#endif + } + break; case TYPE_ARRAY: size = type_ptr[1]; return size * thunk_type_size_array(type_ptr + 2, is_host); @@ -136,11 +162,13 @@ static inline int thunk_type_align(const argtype *type_ptr, int is_host) case TYPE_PTRVOID: case TYPE_PTR: if (is_host) { - return HOST_LONG_SIZE; + return sizeof(void *); } else { return TARGET_ABI_BITS / 8; } break; + case TYPE_OLDDEVT: + return thunk_type_size(type_ptr, is_host); case TYPE_ARRAY: return thunk_type_align_array(type_ptr + 2, is_host); case TYPE_STRUCT: