rtasm: fix void * / func * casting warnings

This commit is contained in:
Brian Paul
2010-05-13 13:41:49 -06:00
parent 56da0cb7ac
commit f667526016
2 changed files with 24 additions and 4 deletions
+18 -3
View File
@@ -1743,20 +1743,35 @@ void x86_release_func( struct x86_function *p )
}
void (*x86_get_func( struct x86_function *p ))(void)
static INLINE x86_func
voidptr_to_x86_func(void *v)
{
union {
void *v;
x86_func f;
} u;
assert(sizeof(u.v) == sizeof(u.f));
u.v = v;
return u.f;
}
x86_func x86_get_func( struct x86_function *p )
{
DUMP_END();
if (DISASSEM && p->store)
debug_printf("disassemble %p %p\n", p->store, p->csr);
if (p->store == p->error_overflow)
return (void (*)(void)) NULL;
return voidptr_to_x86_func(NULL);
else
return (void (*)(void)) p->store;
return voidptr_to_x86_func(p->store);
}
#else
void x86sse_dummy( void );
void x86sse_dummy( void )
{
}
+6 -1
View File
@@ -102,6 +102,11 @@ enum sse_cc {
#define cc_Z cc_E
#define cc_NZ cc_NE
/** generic pointer to function */
typedef void (*x86_func)(void);
/* Begin/end/retrieve function creation:
*/
@@ -109,7 +114,7 @@ enum sse_cc {
void x86_init_func( struct x86_function *p );
void x86_init_func_size( struct x86_function *p, unsigned code_size );
void x86_release_func( struct x86_function *p );
void (*x86_get_func( struct x86_function *p ))( void );
x86_func x86_get_func( struct x86_function *p );
/* Debugging:
*/