# endif
}
-__attribute__ ((regparm(1)))
+REGPARM(1)
static void ac_helperc_LOAD4 ( Addr a )
{
ac_helperc_ACCESS4 ( a, /*isWrite*/False );
}
-__attribute__ ((regparm(1)))
+REGPARM(1)
static void ac_helperc_STORE4 ( Addr a )
{
ac_helperc_ACCESS4 ( a, /*isWrite*/True );
}
-__attribute__ ((regparm(1)))
+REGPARM(1)
static void ac_helperc_LOAD2 ( Addr a )
{
ac_helperc_ACCESS2 ( a, /*isWrite*/False );
}
-__attribute__ ((regparm(1)))
+REGPARM(1)
static void ac_helperc_STORE2 ( Addr a )
{
ac_helperc_ACCESS2 ( a, /*isWrite*/True );
}
-__attribute__ ((regparm(1)))
+REGPARM(1)
static void ac_helperc_LOAD1 ( Addr a )
{
ac_helperc_ACCESS1 ( a, /*isWrite*/False );
}
-__attribute__ ((regparm(1)))
+REGPARM(1)
static void ac_helperc_STORE1 ( Addr a )
{
ac_helperc_ACCESS1 ( a, /*isWrite*/True );
# endif
}
-__attribute__ ((regparm(2)))
+REGPARM(2)
static void ac_fpu_READ_check ( Addr addr, Int size )
{
ac_fpu_ACCESS_check ( addr, size, /*isWrite*/False );
}
-__attribute__ ((regparm(2)))
+REGPARM(2)
static void ac_fpu_WRITE_check ( Addr addr, Int size )
{
ac_fpu_ACCESS_check ( addr, size, /*isWrite*/True );
/*--- Cache simulation functions ---*/
/*------------------------------------------------------------*/
-static __attribute__ ((regparm (1)))
+static REGPARM(1)
void log_1I_0D_cache_access(instr_info* n)
{
//VG_(printf)("1I_0D: CCaddr=0x%x, iaddr=0x%x, isize=%u\n",
VGP_POPCC(VgpCacheSimulate);
}
-static __attribute__ ((regparm (2)))
+static REGPARM(2)
void log_1I_1Dr_cache_access(instr_info* n, Addr data_addr)
{
//VG_(printf)("1I_1Dr: CCaddr=%p, iaddr=%p, isize=%u, daddr=%p, dsize=%u\n",
VGP_POPCC(VgpCacheSimulate);
}
-static __attribute__ ((regparm (2)))
+static REGPARM(2)
void log_1I_1Dw_cache_access(instr_info* n, Addr data_addr)
{
//VG_(printf)("1I_1Dw: CCaddr=%p, iaddr=%p, isize=%u, daddr=%p, dsize=%u\n",
VGP_POPCC(VgpCacheSimulate);
}
-static __attribute__ ((regparm (3)))
+static REGPARM(3)
void log_1I_2D_cache_access(instr_info* n, Addr data_addr1, Addr data_addr2)
{
//VG_(printf)("1I_2D: CCaddr=%p, iaddr=%p, isize=%u, daddr1=%p, daddr2=%p, dsize=%u\n",
## specialising can optimise things significantly. If any of the
## specialised cases are defined, the general case must be defined too.
-## Nb: they must all use the __attribute__((regparm(n))) attribute.
+## Nb: they must all use the REGPARM(n) attribute.
void, new_mem_stack_4, Addr new_ESP
void, new_mem_stack_8, Addr new_ESP
void, new_mem_stack_12, Addr new_ESP
extern void VG_(pad_address_space)(void);
extern void VG_(unpad_address_space)(void);
-extern __attribute__((regparm(1)))
+extern REGPARM(1)
void VG_(unknown_esp_update) ( Addr new_ESP );
/* ---------------------------------------------------------------------
and for clearing up afterwards.
------------------------------------------------ */
-typedef void *(*__attribute__ ((regparm (3), stdcall)) allocate_tls_t) (void *result);
-typedef void (*__attribute__ ((regparm (3), stdcall)) deallocate_tls_t) (void *tcb, int dealloc_tcb);
+typedef void *(*__attribute__ ((stdcall)) REGPARM(3) allocate_tls_t) (void *result);
+typedef void (*__attribute__ ((stdcall)) REGPARM(3) deallocate_tls_t) (void *tcb, int dealloc_tcb);
static allocate_tls_t allocate_tls = NULL;
static deallocate_tls_t deallocate_tls = NULL;
}
-__attribute ((regparm (1)))
+REGPARM(1)
void __pthread_register_cancel (__pthread_unwind_buf_t *__buf)
{
int res;
}
-__attribute ((regparm (1)))
+REGPARM(1)
void __pthread_register_cancel_defer (__pthread_unwind_buf_t *__buf)
{
/* As __pthread_register cancel, but save the thread's original
}
-__attribute ((regparm (1)))
+REGPARM(1)
void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf)
{
int res;
}
-__attribute ((regparm (1)))
+REGPARM(1)
void __pthread_unregister_restore (__pthread_unwind_buf_t *__buf)
{
int res;
return;
}
-__attribute ((regparm (1)))
+REGPARM(1)
__attribute ((__noreturn__))
void __pthread_unwind (__pthread_unwind_buf_t *__buf)
{
}
-__attribute ((regparm (1)))
+REGPARM(1)
__attribute ((__noreturn__))
void __pthread_unwind_next (__pthread_unwind_buf_t *__buf)
{
/* This function gets called if new_mem_stack and/or die_mem_stack are
tracked by the tool, and one of the specialised cases (eg. new_mem_stack_4)
isn't used in preference */
-__attribute__((regparm(1)))
+REGPARM(1)
void VG_(unknown_esp_update)(Addr new_ESP)
{
Addr old_ESP = VG_(get_archreg)(R_ESP);
static void eraser_mem_read (Addr a, UInt data_size, ThreadId tid);
static void eraser_mem_write(Addr a, UInt data_size, ThreadId tid);
-#define REGPARM(x) __attribute__((regparm (x)))
-
static void eraser_mem_help_read_1(Addr a) REGPARM(1);
static void eraser_mem_help_read_2(Addr a) REGPARM(1);
static void eraser_mem_help_read_4(Addr a) REGPARM(1);
#include "vg_constants_skin.h"
+// XXX: here temporarily, will eventually go in arch-specific headers...
+#define REGPARM(x) __attribute__((regparm (x)))
/* ---------------------------------------------------------------------
Where to send bug reports to.
Bool is_valid_address ( Addr )
);
-extern __attribute__((regparm(1))) void MAC_(new_mem_stack_4) ( Addr old_ESP );
-extern __attribute__((regparm(1))) void MAC_(die_mem_stack_4) ( Addr old_ESP );
-extern __attribute__((regparm(1))) void MAC_(new_mem_stack_8) ( Addr old_ESP );
-extern __attribute__((regparm(1))) void MAC_(die_mem_stack_8) ( Addr old_ESP );
-extern __attribute__((regparm(1))) void MAC_(new_mem_stack_12) ( Addr old_ESP );
-extern __attribute__((regparm(1))) void MAC_(die_mem_stack_12) ( Addr old_ESP );
-extern __attribute__((regparm(1))) void MAC_(new_mem_stack_16) ( Addr old_ESP );
-extern __attribute__((regparm(1))) void MAC_(die_mem_stack_16) ( Addr old_ESP );
-extern __attribute__((regparm(1))) void MAC_(new_mem_stack_32) ( Addr old_ESP );
-extern __attribute__((regparm(1))) void MAC_(die_mem_stack_32) ( Addr old_ESP );
-extern void MAC_(die_mem_stack) ( Addr a, UInt len);
-extern void MAC_(new_mem_stack) ( Addr a, UInt len);
+extern REGPARM(1) void MAC_(new_mem_stack_4) ( Addr old_ESP );
+extern REGPARM(1) void MAC_(die_mem_stack_4) ( Addr old_ESP );
+extern REGPARM(1) void MAC_(new_mem_stack_8) ( Addr old_ESP );
+extern REGPARM(1) void MAC_(die_mem_stack_8) ( Addr old_ESP );
+extern REGPARM(1) void MAC_(new_mem_stack_12) ( Addr old_ESP );
+extern REGPARM(1) void MAC_(die_mem_stack_12) ( Addr old_ESP );
+extern REGPARM(1) void MAC_(new_mem_stack_16) ( Addr old_ESP );
+extern REGPARM(1) void MAC_(die_mem_stack_16) ( Addr old_ESP );
+extern REGPARM(1) void MAC_(new_mem_stack_32) ( Addr old_ESP );
+extern REGPARM(1) void MAC_(die_mem_stack_32) ( Addr old_ESP );
+extern void MAC_(die_mem_stack) ( Addr a, UInt len);
+extern void MAC_(new_mem_stack) ( Addr a, UInt len);
/*------------------------------------------------------------*/
ALIGNED8_NEW, ALIGNED8_DIE, \
UNALIGNED_NEW, UNALIGNED_DIE) \
\
-void __attribute__((regparm(1))) MAC_(new_mem_stack_4)(Addr new_ESP) \
+void REGPARM(1) MAC_(new_mem_stack_4)(Addr new_ESP) \
{ \
PROF_EVENT(110); \
if (IS_ALIGNED4_ADDR(new_ESP)) { \
} \
} \
\
-void __attribute__((regparm(1))) MAC_(die_mem_stack_4)(Addr new_ESP) \
+void REGPARM(1) MAC_(die_mem_stack_4)(Addr new_ESP) \
{ \
PROF_EVENT(120); \
if (IS_ALIGNED4_ADDR(new_ESP)) { \
} \
} \
\
-void __attribute__((regparm(1))) MAC_(new_mem_stack_8)(Addr new_ESP) \
+void REGPARM(1) MAC_(new_mem_stack_8)(Addr new_ESP) \
{ \
PROF_EVENT(111); \
if (IS_ALIGNED8_ADDR(new_ESP)) { \
} \
} \
\
-void __attribute__((regparm(1))) MAC_(die_mem_stack_8)(Addr new_ESP) \
+void REGPARM(1) MAC_(die_mem_stack_8)(Addr new_ESP) \
{ \
PROF_EVENT(121); \
if (IS_ALIGNED8_ADDR(new_ESP)) { \
} \
} \
\
-void __attribute__((regparm(1))) MAC_(new_mem_stack_12)(Addr new_ESP) \
+void REGPARM(1) MAC_(new_mem_stack_12)(Addr new_ESP) \
{ \
PROF_EVENT(112); \
if (IS_ALIGNED8_ADDR(new_ESP)) { \
} \
} \
\
-void __attribute__((regparm(1))) MAC_(die_mem_stack_12)(Addr new_ESP) \
+void REGPARM(1) MAC_(die_mem_stack_12)(Addr new_ESP) \
{ \
PROF_EVENT(122); \
/* Note the -12 in the test */ \
} \
} \
\
-void __attribute__((regparm(1))) MAC_(new_mem_stack_16)(Addr new_ESP) \
+void REGPARM(1) MAC_(new_mem_stack_16)(Addr new_ESP) \
{ \
PROF_EVENT(113); \
if (IS_ALIGNED8_ADDR(new_ESP)) { \
} \
} \
\
-void __attribute__((regparm(1))) MAC_(die_mem_stack_16)(Addr new_ESP) \
+void REGPARM(1) MAC_(die_mem_stack_16)(Addr new_ESP) \
{ \
PROF_EVENT(123); \
if (IS_ALIGNED8_ADDR(new_ESP)) { \
} \
} \
\
-void __attribute__((regparm(1))) MAC_(new_mem_stack_32)(Addr new_ESP) \
+void REGPARM(1) MAC_(new_mem_stack_32)(Addr new_ESP) \
{ \
PROF_EVENT(114); \
if (IS_ALIGNED8_ADDR(new_ESP)) { \
} \
} \
\
-void __attribute__((regparm(1))) MAC_(die_mem_stack_32)(Addr new_ESP) \
+void REGPARM(1) MAC_(die_mem_stack_32)(Addr new_ESP) \
{ \
PROF_EVENT(124); \
if (IS_ALIGNED8_ADDR(new_ESP)) { \
/* Functions defined in mc_main.c */
-extern __attribute__ ((regparm(2))) void MC_(helperc_STOREV4) ( Addr, UInt );
-extern __attribute__ ((regparm(2))) void MC_(helperc_STOREV2) ( Addr, UInt );
-extern __attribute__ ((regparm(2))) void MC_(helperc_STOREV1) ( Addr, UInt );
+extern REGPARM(2) void MC_(helperc_STOREV4) ( Addr, UInt );
+extern REGPARM(2) void MC_(helperc_STOREV2) ( Addr, UInt );
+extern REGPARM(2) void MC_(helperc_STOREV1) ( Addr, UInt );
-extern __attribute__ ((regparm(1))) UInt MC_(helperc_LOADV1) ( Addr );
-extern __attribute__ ((regparm(1))) UInt MC_(helperc_LOADV2) ( Addr );
-extern __attribute__ ((regparm(1))) UInt MC_(helperc_LOADV4) ( Addr );
+extern REGPARM(1) UInt MC_(helperc_LOADV1) ( Addr );
+extern REGPARM(1) UInt MC_(helperc_LOADV2) ( Addr );
+extern REGPARM(1) UInt MC_(helperc_LOADV4) ( Addr );
-extern __attribute__ ((regparm(2))) void MC_(fpu_write_check) ( Addr addr, Int size );
-extern __attribute__ ((regparm(2))) void MC_(fpu_read_check) ( Addr addr, Int size );
+extern REGPARM(2) void MC_(fpu_write_check) ( Addr addr, Int size );
+extern REGPARM(2) void MC_(fpu_read_check) ( Addr addr, Int size );
/* For client requests */
Under all other circumstances, it defers to the relevant _SLOWLY
function, which can handle all situations.
*/
-__attribute__ ((regparm(1)))
+REGPARM(1)
UInt MC_(helperc_LOADV4) ( Addr a )
{
# ifdef VG_DEBUG_MEMORY
# endif
}
-__attribute__ ((regparm(2)))
+REGPARM(2)
void MC_(helperc_STOREV4) ( Addr a, UInt vbytes )
{
# ifdef VG_DEBUG_MEMORY
# endif
}
-__attribute__ ((regparm(1)))
+REGPARM(1)
UInt MC_(helperc_LOADV2) ( Addr a )
{
# ifdef VG_DEBUG_MEMORY
# endif
}
-__attribute__ ((regparm(2)))
+REGPARM(2)
void MC_(helperc_STOREV2) ( Addr a, UInt vbytes )
{
# ifdef VG_DEBUG_MEMORY
# endif
}
-__attribute__ ((regparm(1)))
+REGPARM(1)
UInt MC_(helperc_LOADV1) ( Addr a )
{
# ifdef VG_DEBUG_MEMORY
# endif
}
-__attribute__ ((regparm(2)))
+REGPARM(2)
void MC_(helperc_STOREV1) ( Addr a, UInt vbytes )
{
# ifdef VG_DEBUG_MEMORY
FPU load and store checks, called from generated code.
------------------------------------------------------------------ */
-__attribute__ ((regparm(2)))
+REGPARM(2)
void MC_(fpu_read_check) ( Addr addr, Int size )
{
/* Ensure the read area is both addressible and valid (ie,
}
-__attribute__ ((regparm(2)))
+REGPARM(2)
void MC_(fpu_write_check) ( Addr addr, Int size )
{
/* Ensure the written area is addressible, and moan if otherwise.