fd6942ab42
* configure.host: Add support for RX architecture. * libc/include/machine/ieeefp.h: Likewise. * libc/include/machine/setjmp.h: Likewise. * libc/include/machine/configure.in: Likewise. * libc/include/machine/configure: Regenerate. * libc/machine/rx: New directory. * libc/machine/rx/*: New files to support RX architecture. libgloss: * configure.in: Add support for RX sub-directory. * configure: Regenerate. * rx: New directory. * rx/*: New files to support RX architecture.
26 lines
696 B
ArmAsm
26 lines
696 B
ArmAsm
#define PROFILE_SUPPORT 1
|
|
|
|
#include "crt0.S"
|
|
|
|
.global __mcount
|
|
__mcount:
|
|
;; When a function is compiled for profiling, gcc creates code
|
|
;; like this at the start of each profiled function:
|
|
;;
|
|
;; .global <func_name>
|
|
;; <func_name>:
|
|
;; bsr __mcount
|
|
;; <...function's prologue...>
|
|
;; <...function's body...>
|
|
;;
|
|
;; We must save all of the argument registers, extract the
|
|
;; address of <func_name>, call _mcount_internal to do the
|
|
;; real work and then restore the argument registers before
|
|
;; returning.
|
|
|
|
pushm r1-r4
|
|
mov.l 16[r0], r1
|
|
bsr __mcount_internal
|
|
rtsd #16, r1-r4
|
|
|