From: Nicholas Nethercote Date: Mon, 23 Aug 2004 15:06:23 +0000 (+0000) Subject: Small step in factoring out arch-specific code: replace X-Git-Tag: svn/VALGRIND_2_2_0~35 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a2b3609df78d7f853d278b5e0a32cba4bd6b4da2;p=thirdparty%2Fvalgrind.git Small step in factoring out arch-specific code: replace __attribute((regparm(n))) with REGPARM(n) everywhere. REGPARM() is defined in vg_skin.h, but will eventually be defined separately for each arch. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2601 --- diff --git a/addrcheck/ac_main.c b/addrcheck/ac_main.c index 75195eb27c..c5e2b51eba 100644 --- a/addrcheck/ac_main.c +++ b/addrcheck/ac_main.c @@ -715,34 +715,34 @@ static __inline__ void ac_helperc_ACCESS1 ( Addr a, Bool isWrite ) # 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 ); @@ -912,13 +912,13 @@ void ac_fpu_ACCESS_check ( Addr addr, Int size, Bool isWrite ) # 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 ); diff --git a/cachegrind/cg_main.c b/cachegrind/cg_main.c index dae1b96919..1e0493c0ef 100644 --- a/cachegrind/cg_main.c +++ b/cachegrind/cg_main.c @@ -290,7 +290,7 @@ static lineCC* get_lineCC(Addr orig_addr) /*--- 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", @@ -302,7 +302,7 @@ void log_1I_0D_cache_access(instr_info* 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", @@ -318,7 +318,7 @@ void log_1I_1Dr_cache_access(instr_info* n, Addr data_addr) 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", @@ -334,7 +334,7 @@ void log_1I_1Dw_cache_access(instr_info* n, Addr data_addr) 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", diff --git a/coregrind/toolfuncs.def b/coregrind/toolfuncs.def index 7fa7dc33b2..8d49f37ce4 100644 --- a/coregrind/toolfuncs.def +++ b/coregrind/toolfuncs.def @@ -199,7 +199,7 @@ void, die_mem_munmap, Addr a, UInt len ## 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 diff --git a/coregrind/vg_include.h b/coregrind/vg_include.h index 2fad874735..27b95e4649 100644 --- a/coregrind/vg_include.h +++ b/coregrind/vg_include.h @@ -1375,7 +1375,7 @@ extern Bool VG_(seg_overlaps)(const Segment *s, Addr ptr, UInt size); 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 ); /* --------------------------------------------------------------------- diff --git a/coregrind/vg_libpthread.c b/coregrind/vg_libpthread.c index fae30aad7f..cc7bbd82a3 100644 --- a/coregrind/vg_libpthread.c +++ b/coregrind/vg_libpthread.c @@ -654,8 +654,8 @@ int pthread_getconcurrency(void) 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; @@ -965,7 +965,7 @@ void _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *__buffer, } -__attribute ((regparm (1))) +REGPARM(1) void __pthread_register_cancel (__pthread_unwind_buf_t *__buf) { int res; @@ -980,7 +980,7 @@ void __pthread_register_cancel (__pthread_unwind_buf_t *__buf) } -__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 @@ -1006,7 +1006,7 @@ void __pthread_register_cancel_defer (__pthread_unwind_buf_t *__buf) } -__attribute ((regparm (1))) +REGPARM(1) void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf) { int res; @@ -1022,7 +1022,7 @@ void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf) } -__attribute ((regparm (1))) +REGPARM(1) void __pthread_unregister_restore (__pthread_unwind_buf_t *__buf) { int res; @@ -1049,7 +1049,7 @@ void __pthread_unregister_restore (__pthread_unwind_buf_t *__buf) return; } -__attribute ((regparm (1))) +REGPARM(1) __attribute ((__noreturn__)) void __pthread_unwind (__pthread_unwind_buf_t *__buf) { @@ -1073,7 +1073,7 @@ void __pthread_unwind (__pthread_unwind_buf_t *__buf) } -__attribute ((regparm (1))) +REGPARM(1) __attribute ((__noreturn__)) void __pthread_unwind_next (__pthread_unwind_buf_t *__buf) { diff --git a/coregrind/vg_memory.c b/coregrind/vg_memory.c index 483073a22f..d1a10c0715 100644 --- a/coregrind/vg_memory.c +++ b/coregrind/vg_memory.c @@ -676,7 +676,7 @@ Segment *VG_(next_segment)(Segment *s) /* 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); diff --git a/helgrind/hg_main.c b/helgrind/hg_main.c index c14d8d2133..6da8cccac6 100644 --- a/helgrind/hg_main.c +++ b/helgrind/hg_main.c @@ -1696,8 +1696,6 @@ static void copy_address_range_state(Addr src, Addr dst, UInt len) 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); diff --git a/include/vg_skin.h.base b/include/vg_skin.h.base index a984988de0..1a837d3aa9 100644 --- a/include/vg_skin.h.base +++ b/include/vg_skin.h.base @@ -36,6 +36,8 @@ #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. diff --git a/memcheck/mac_shared.h b/memcheck/mac_shared.h index bb16d6e0df..a9338d070a 100644 --- a/memcheck/mac_shared.h +++ b/memcheck/mac_shared.h @@ -347,18 +347,18 @@ extern void MAC_(do_detect_memory_leaks) ( 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); /*------------------------------------------------------------*/ @@ -377,7 +377,7 @@ 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)) { \ @@ -387,7 +387,7 @@ void __attribute__((regparm(1))) MAC_(new_mem_stack_4)(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)) { \ @@ -397,7 +397,7 @@ void __attribute__((regparm(1))) MAC_(die_mem_stack_4)(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)) { \ @@ -410,7 +410,7 @@ void __attribute__((regparm(1))) MAC_(new_mem_stack_8)(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)) { \ @@ -423,7 +423,7 @@ void __attribute__((regparm(1))) MAC_(die_mem_stack_8)(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)) { \ @@ -437,7 +437,7 @@ void __attribute__((regparm(1))) MAC_(new_mem_stack_12)(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 */ \ @@ -452,7 +452,7 @@ void __attribute__((regparm(1))) MAC_(die_mem_stack_12)(Addr new_ESP) \ } \ } \ \ -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)) { \ @@ -467,7 +467,7 @@ void __attribute__((regparm(1))) MAC_(new_mem_stack_16)(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)) { \ @@ -482,7 +482,7 @@ void __attribute__((regparm(1))) MAC_(die_mem_stack_16)(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)) { \ @@ -501,7 +501,7 @@ void __attribute__((regparm(1))) MAC_(new_mem_stack_32)(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)) { \ diff --git a/memcheck/mc_include.h b/memcheck/mc_include.h index a3a39fd797..9396cb7f9c 100644 --- a/memcheck/mc_include.h +++ b/memcheck/mc_include.h @@ -121,16 +121,16 @@ extern void MC_(helper_value_check0_fail) ( void ); /* 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 */ diff --git a/memcheck/mc_main.c b/memcheck/mc_main.c index 4a8256abf3..bfad60b8ad 100644 --- a/memcheck/mc_main.c +++ b/memcheck/mc_main.c @@ -762,7 +762,7 @@ static __inline__ UInt shiftRight16 ( UInt x ) 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 @@ -787,7 +787,7 @@ UInt MC_(helperc_LOADV4) ( Addr a ) # endif } -__attribute__ ((regparm(2))) +REGPARM(2) void MC_(helperc_STOREV4) ( Addr a, UInt vbytes ) { # ifdef VG_DEBUG_MEMORY @@ -812,7 +812,7 @@ void MC_(helperc_STOREV4) ( Addr a, UInt vbytes ) # endif } -__attribute__ ((regparm(1))) +REGPARM(1) UInt MC_(helperc_LOADV2) ( Addr a ) { # ifdef VG_DEBUG_MEMORY @@ -835,7 +835,7 @@ UInt MC_(helperc_LOADV2) ( Addr a ) # endif } -__attribute__ ((regparm(2))) +REGPARM(2) void MC_(helperc_STOREV2) ( Addr a, UInt vbytes ) { # ifdef VG_DEBUG_MEMORY @@ -856,7 +856,7 @@ void MC_(helperc_STOREV2) ( Addr a, UInt vbytes ) # endif } -__attribute__ ((regparm(1))) +REGPARM(1) UInt MC_(helperc_LOADV1) ( Addr a ) { # ifdef VG_DEBUG_MEMORY @@ -879,7 +879,7 @@ UInt MC_(helperc_LOADV1) ( Addr a ) # endif } -__attribute__ ((regparm(2))) +REGPARM(2) void MC_(helperc_STOREV1) ( Addr a, UInt vbytes ) { # ifdef VG_DEBUG_MEMORY @@ -1107,7 +1107,7 @@ void MC_(helperc_value_check4_fail) ( void ) 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, @@ -1199,7 +1199,7 @@ void MC_(fpu_read_check) ( Addr addr, Int size ) } -__attribute__ ((regparm(2))) +REGPARM(2) void MC_(fpu_write_check) ( Addr addr, Int size ) { /* Ensure the written area is addressible, and moan if otherwise.