diff options
Diffstat (limited to 'newlib/libc/machine/xscale/machine/profile.h')
-rw-r--r-- | newlib/libc/machine/xscale/machine/profile.h | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/newlib/libc/machine/xscale/machine/profile.h b/newlib/libc/machine/xscale/machine/profile.h deleted file mode 100644 index 90198ba69..000000000 --- a/newlib/libc/machine/xscale/machine/profile.h +++ /dev/null @@ -1,88 +0,0 @@ -/* profile.h - - Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. - - Permission to use, copy, modify, and distribute this software - is freely granted, provided that this notice is preserved. */ - -#ifndef __XSCALE_PROFILE_H__ -#define __XSCALE_PROFILE_H__ - -/* FIXME: - We need to create a string version of the CPP predefined - __USER_LABEL_PREFIX__ macro. Ideally we would like to - so do something like: - - #if __USER_LABEL_PREFIX__ == _ - - but this fails for arm-elf targets because although - __USER_LABEL__PREFIX__ is defined, it is not defined to - a specific value (even 0) and so the above test fails - with: - - operator '==' has no left operand - - Instead we have to test the CPP predefined __ELF__ and - rely upon the *assumption* that ELF targets will not use - an underscore prefix and that COFF targets will. */ - -#ifdef __ELF__ -#define FOO "" -#else -#define FOO "_" -#endif - -#define _MCOUNT_DECL(frompc, selfpc) \ -void __attribute__ ((no_instrument_function)) \ -mcount_internal (frompc, selfpc) - -/* mcount_internal expects two arguments - r0 frompc (return address for function that call function that calls mcount) - r1 selfpc (return address for function that called mcount) - - The frompc is extracted from the stack frames. If the code does not - generate stack frames, then mcount cannot extract this - information. Thus, the -fomit-frame-pointer optimization cannot be - used if a call graph information is required. - - Due to optimizations mcount doesn't set up a new fp. mcount has the fp - of the calling function. - - r0 frompc is from the current frame - r1 selfpc can be obtained directly from lr. */ - -#ifdef __thumb__ -#define MCOUNT \ -void __attribute__ ((naked)) \ - __attribute__ ((no_instrument_function)) \ -mcount (void) \ -{ \ - __asm__("push {r0, r1, r2, r3, lr};" \ - "add r0, r7, #0;" \ - "beq 1f;" \ - "sub r0, r0, #4;" \ - "ldr r0, [r0];" \ - "1: mov r1, lr;" \ - "bl " FOO "mcount_internal ;" \ - "pop {r0, r1, r2, r3, pc};" \ - ); \ -} -#else -#define MCOUNT \ -void __attribute__ ((naked)) \ - __attribute__ ((no_instrument_function)) \ -mcount (void) \ -{ \ - __asm__("stmdb sp!, {r0, r1, r2, r3, lr};" \ - "movs r0, fp;" \ - "ldrne r0, [r0, #-4];" \ - "mov r1, lr;" \ - "bl " FOO "mcount_internal ;" \ - "ldmia sp!, {r0, r1, r2, r3, pc};" \ - ); \ -} -#endif - -#define FUNCTION_ALIGNMENT 2 - -#endif /* !__XSCALE_PROFILE_H__ */ |